10 public Chara TargetChara
14 if (this.card !=
null)
16 return this.card.Chara;
23 public void Update(
Point _pos)
26 this.isValid = this.pos.IsValid;
28 if (!this.isValid || this.pos.IsHidden ||
EClass.ui.BlockMouseOverUpdate || (
this.mouse && (
EClass.ui.isPointerOverUI || !
EClass.scene.actionMode.ShowMouseoverTarget)))
37 if (this.pos.sourceBlock.tileType.Invisible && !
EClass.scene.actionMode.IsBuildMode)
41 this.obj = (
ObjInfo._CanInspect(this.pos) ?
ObjInfo.GetTemp(
this.pos) :
null);
44 this.target = this.obj;
46 else if (this.block !=
null)
48 this.target = this.block;
54 this.drawHighlight = (this.target !=
null);
58 this.area = detail.area;
59 this.task = detail.designation;
62 foreach (
Chara chara2
in detail.charas)
64 if (!this.ShouldIgnore(chara2))
66 this.cards.Add(chara2);
67 if (chara ==
null || chara2.hostility < chara.hostility)
73 foreach (
Thing thing2
in detail.things)
75 if (!this.ShouldIgnore(thing2))
77 this.cards.Add(thing2);
83 this.target = (this.card = chara);
84 this.drawHighlight =
true;
86 else if (thing !=
null)
88 this.target = (this.card = thing);
89 this.drawHighlight =
true;
91 else if (this.task !=
null)
93 this.target = this.task;
94 this.drawHighlight =
true;
96 else if (this.area !=
null &&
EClass.scene.actionMode.AreaHihlight != AreaHighlightMode.None)
98 this.target = this.area;
100 if (this.cards.Count > 0 &&
EClass.scene.actionMode.IsBuildMode)
102 this.target = (this.card = this.cards[Mathf.Abs(this.index) % this.cards.Count]);
103 this.drawHighlight =
true;
106 if ((this.target ==
null || this.target is
Chara) &&
EClass._zone.IsRegion)
108 Zone zone =
EClass.scene.elomap.GetZone(this.pos);
114 this.hasInteraction = (this.target !=
null);
115 this.CheckLastTarget();
119 public bool ShouldIgnore(
Card c)
123 if (c.Chara.host !=
null)
127 if (
EClass.scene.actionMode.IsBuildMode)
129 if (!
EClass.debug.ignoreBuildRule && (c.IsPC || !c.IsPCFaction))
136 if ((!
EClass.pc.hasTelepathy || !c.Chara.race.visibleWithTelepathy) && c.isHidden && !
EClass.pc.canSeeInvisible)
144 if (!c.isSynced || !
EClass.player.CanSee(c.Chara))
153 if (c.trait.IsGround && !
this.pos.cell.IsFloorWater && c.Cell.IsFloorWater)
157 if (
EClass.scene.actionMode.IsBuildMode)
159 if (
EClass.scene.actionMode.IsRoofEditMode(
null))
166 else if (c.isRoofItem)
171 else if (c.isHidden || c.isRoofItem || c.isMasked)
180 public void CycleTarget(
int a)
184 this.Update(
Scene.HitPoint);
192 public bool CanCycle()
194 return this.cards.Count >= 2;
203 this.hasInteraction =
false;
204 this.CheckLastTarget();
208 public void CheckLastTarget()
210 this.hasTargetChanged = (this.target != this.lastTarget || !this.pos.Equals(this.lastPos));
211 this.hasValidTarget = (this.target !=
null);
212 this.lastTarget = this.target;
213 this.lastPos.Set(this.pos);
238 public bool hasTargetChanged;
241 public bool hasValidTarget;
244 public bool drawHighlight;
247 public bool mouse =
true;
250 public bool hasInteraction;
265 public List<Card> cards =
new List<Card>();