10 public override bool CanManualCancel()
16 public override IEnumerable<
AIAct.Status> Run()
18 List<Thing> containers =
new List<Thing>();
21 if (this.IsValidContainer(t))
26 while (containers.Count > 0)
29 int num =
TaskDump.<Run>g__SortVal|1_1(containers.First<
Thing>());
30 using (List<Thing>.Enumerator enumerator = containers.GetEnumerator())
32 while (enumerator.MoveNext())
34 if (
TaskDump.<Run>g__SortVal|1_1(enumerator.Current) != num)
50 containers.RemoveAt(containers.Count - 1);
51 if (this.IsValidContainer(c))
54 Point pos = c.pos.Copy();
58 c.ForeachPoint(delegate(
Point p,
bool isCenter)
60 if (!p.IsValid || !p.IsInBounds)
65 if (pathProgress.HasPath && pathProgress.nodes.Count < minDist)
67 minDist = pathProgress.nodes.Count;
72 yield
return base.DoGoto(pos, 1,
false, () =>
AIAct.Status.Running);
73 if (this.IsValidContainer(c))
77 Msg.Say(
"dump_noExist", c,
null,
null,
null);
79 else if (
EClass.pc.Dist(c) > 1)
81 Msg.Say(
"dump_tooFar", c,
null,
null,
null);
85 List<Thing> list = this.ListThingsToPut(c);
89 c =
EClass.game.cards.container_shipping;
91 foreach (
Thing thing
in list)
93 if (!c.things.IsFull(thing,
true,
true) && !thing.isDestroyed)
95 thing.PlaySoundDrop(
false);
98 (c.parent as
Card).SetDirtyWeight();
100 Msg.Say(
"dump_item", thing, c,
null,
null);
107 Msg.Say(
"dump_dumped", num2.ToString() ??
"", c.Name,
null,
null);
118 public override void OnCancelOrSuccess()
121 SE.Play(
"auto_dump");
125 public bool IsValidContainer(
Thing c)
127 if ((!c.ExistsOnMap && !c.IsInstalled) || !c.CanSearchContents)
133 c =
EClass.game.cards.container_shipping;
135 return c.GetWindowSaveData() !=
null && c.GetWindowSaveData().autodump != AutodumpFlag.none && this.ListThingsToPut(c).Count != 0;
139 public List<Thing> ListThingsToPut(
Thing c)
141 TaskDump.<>c__DisplayClass4_0 CS$<>8__locals1 =
new TaskDump.<>c__DisplayClass4_0();
142 CS$<>8__locals1.list =
new List<Thing>();
145 c =
EClass.game.cards.container_shipping;
147 CS$<>8__locals1.data = c.GetWindowSaveData();
148 if (CS$<>8__locals1.data ==
null)
150 return CS$<>8__locals1.list;
152 switch (CS$<>8__locals1.data.autodump)
154 case AutodumpFlag.existing:
155 using (List<Thing>.Enumerator enumerator = c.things.GetEnumerator())
157 while (enumerator.MoveNext())
159 Thing ct = enumerator.Current;
162 if (CS$<>8__locals1.<ListThingsToPut>g__ExcludeDump|0(t))
166 if (!t.CanStackTo(ct))
170 CS$<>8__locals1.list.Add(t);
176 case AutodumpFlag.sameCategory:
178 case AutodumpFlag.none:
180 case AutodumpFlag.distribution:
183 if (base.<ListThingsToPut>g__ExcludeDump|0(t))
187 if (CS$<>8__locals1.data.advDistribution)
189 using (HashSet<int>.Enumerator enumerator2 = CS$<>8__locals1.data.cats.GetEnumerator())
191 while (enumerator2.MoveNext())
193 int num = enumerator2.Current;
194 if (t.category.uid == num)
196 CS$<>8__locals1.list.Add(t);
203 ContainerFlag containerFlag = t.category.GetRoot().id.ToEnum(
true);
204 if (containerFlag == ContainerFlag.none)
206 containerFlag = ContainerFlag.other;
208 if (!CS$<>8__locals1.data.flag.HasFlag(containerFlag))
210 CS$<>8__locals1.list.Add(t);
217 if (c.things.Count != 0)
220 foreach (
Thing thing
in c.things)
222 cats.Add(thing.category);
226 if (CS$<>8__locals1.<ListThingsToPut>g__ExcludeDump|0(t))
230 if (!cats.Contains(t.category))
234 CS$<>8__locals1.list.Add(t);
238 return CS$<>8__locals1.list;
243 internal static int <Run>g__SortVal|1_1(
Thing t)
245 Window.SaveData windowSaveData = t.GetWindowSaveData();
246 if (windowSaveData !=
null)
248 return windowSaveData.priority;