7 public virtual bool CanInstaComplete(T t)
9 return EClass.player.instaComplete || this.ForcedInstaComplete(t);
13 public virtual bool ForcedInstaComplete(T t)
20 public override string idSound
30 public override bool IsBuildMode
39 public virtual HitResult HitResultOnDesignation(
Point p)
41 return HitResult.Outline;
45 public override void OnActivate()
47 this.CreateNewMold(
false);
51 public void CreateNewMold(
bool processing =
false)
53 this.mold = Activator.CreateInstance<T>();
54 this.OnCreateMold(processing);
58 public virtual void OnCreateMold(
bool processing =
false)
63 public override HitResult HitTest(
Point point,
Point start)
65 if (!base.Summary.CanExecute())
67 return HitResult.Invalid;
69 if (point.HasDesignation)
71 return this.HitResultOnDesignation(point);
73 this.mold.pos.Set(point);
74 HitResult hitResult = this.mold.GetHitResult();
75 if (hitResult != HitResult.Default)
79 return base.HitTest(point, start);
83 public override bool CanProcessTiles()
85 return base.Summary.CanExecute() && base.Summary.countValid != 0 && base.CanProcessTiles();
89 public override void OnBeforeProcessTiles()
91 this.CreateNewMold(
true);
92 EClass._map.tasks.undo.NewItem();
96 public override void OnProcessTiles(
Point point,
int dir)
98 this.mold.pos.Set(point);
99 if (this.list.TryAdd(
this.mold))
101 EClass._map.tasks.undo.Add(this.mold);
102 this.CreateNewMold(
true);
104 T t = this.list.items.LastItem<T>();
105 if (t !=
null && this.CanInstaComplete(t))
107 t.owner =
EClass.player.Agent;
108 EClass.player.Agent.pos.Set(t.pos);
109 t.OnProgressComplete();
115 public override void OnAfterProcessTiles(
Point start,
Point end)
117 this.CreateNewMold(
false);
121 public override void OnRefreshSummary(
Point point, HitResult result,
HitSummary summary)
124 if (result == HitResult.Valid || result == HitResult.Warning)
126 this.mold.pos.Set(point);
127 if (this.CanInstaComplete(this.mold) && !this.ForcedInstaComplete(this.mold))
129 summary.money += this.CostMoney;
131 summary.countValid++;