2using System.Collections.Generic;
47 private static List<Thing>
tempList =
new List<Thing>();
74 width = owner.c_containerSize / 100;
75 height = owner.c_containerSize % 100;
87 owner.c_containerSize = w * 100 + h;
94 using (Enumerator enumerator = GetEnumerator())
96 while (enumerator.MoveNext())
98 Thing current = enumerator.Current;
115 using (Enumerator enumerator = GetEnumerator())
117 while (enumerator.MoveNext())
119 Thing current = enumerator.Current;
136 if (freeGridIndex == -1)
141 item.invX = freeGridIndex;
153 bool flag = !text.IsEmpty();
154 bool flag2 = !magic.
idCat.IsEmpty();
158 bool flag4 = text !=
null && text.Length >= 2 && (text[0] ==
'@' || text[1] ==
'@');
161 text = text.Substring(1);
163 using (Enumerator enumerator = GetEnumerator())
165 while (enumerator.MoveNext())
167 Thing current = enumerator.Current;
173 text2 = current.
category.GetRoot().id;
176 text2 = current.
category.GetSecondRoot().id;
182 magic.
cats.Add(text2);
183 if (magic.
catCount.ContainsKey(text2))
207 if (!current.
tempName.Contains(text) && !current.
source.GetSearchName(jp:
false).Contains(text) && !current.
source.GetSearchName(jp:
true).Contains(text))
213 if (!flag2 || !(text2 != magic.
idCat))
219 if (flag2 && !magic.
cats.Contains(magic.
idCat))
225 magic.pageMax = (magic.filteredList.Count - 1) /
GridSize;
232 int num = magic.page *
GridSize + i;
246 using (Enumerator enumerator = GetEnumerator())
248 while (enumerator.MoveNext())
250 Thing current = enumerator.Current;
251 if (current.
invY == y && current.
invX == x)
282 if (freeGridIndex != -1)
284 grid[freeGridIndex] = t;
286 t.pos.x = freeGridIndex;
326 using (Enumerator enumerator = GetEnumerator())
328 while (enumerator.MoveNext())
330 Thing current = enumerator.Current;
337 if (num >
grid.Count)
346 for (
int i = 0; i <
grid.Count; i++)
360 int num =
grid.IndexOf(t);
370 owner.c_containerSize = w * 100 + h;
376 using Enumerator enumerator = GetEnumerator();
377 while (enumerator.MoveNext())
379 Thing current = enumerator.Current;
388 if ((destInvX == -1 || (current.
invX == destInvX && current.
invY == destInvY)) && current != target && target.
TryStackTo(current))
398 using Enumerator enumerator = GetEnumerator();
399 while (enumerator.MoveNext())
401 Thing current = enumerator.Current;
402 if (current != target && target.
CanStackTo(current))
415 SearchDest(
this, searchEmpty:
true, searchStack:
true);
429 TrySearchContainer(
owner);
435 SearchDest(listContainer, searchEmpty:
false, searchStack:
true);
444 SearchDest(listContainer2, searchEmpty:
true, searchStack:
false);
451 void SearchDest(
ThingContainer things,
bool searchEmpty,
bool searchStack)
455 if (searchStack && tryStack)
466 d.container = things.
owner;
470 void TrySearchContainer(
Card c)
476 TrySearchContainer(thing2);
482 if (windowSaveData !=
null && (!windowSaveData.
noRotten || !t.IsDecayed) && (!windowSaveData.
onlyRottable || t.trait.Decay != 0))
497 foreach (
int cat
in windowSaveData.
cats)
499 if (t.category.uid == cat)
507 if (!windowSaveData.
flag.HasFlag(flag))
516 public bool IsFull(
Thing t,
bool recursive =
true,
bool tryStack =
true)
535 if (!(temp.
id !=
id) && (mat ==
null || temp.
material == mat))
542 if (temp.
Num + num >= 0)
551 if (num != 0 && num > 0)
564 this.ForeachReverse(delegate(
Thing t)
566 if (funcExclude ==
null || !funcExclude(t))
574 for (
int i = 0; i <
grid.Count; i++)
583 using (Enumerator enumerator = GetEnumerator())
585 while (enumerator.MoveNext())
587 Thing current = enumerator.Current;
596 if (current.
uid == uid)
607 using (Enumerator enumerator = GetEnumerator())
609 while (enumerator.MoveNext())
611 Thing current = enumerator.Current;
620 if (current.
trait is T)
640 public Thing Find(Func<Thing, bool> func,
bool recursive =
true)
642 using (Enumerator enumerator = GetEnumerator())
644 while (enumerator.MoveNext())
646 Thing current = enumerator.Current;
669 public Thing Find(
string id,
int idMat = -1,
int refVal = -1)
671 using (Enumerator enumerator = GetEnumerator())
673 while (enumerator.MoveNext())
675 Thing current = enumerator.Current;
684 if (current.
id ==
id && (idMat == -1 || current.
material.id == idMat) && (refVal == -1 || current.refVal == refVal))
695 List<Thing> list =
new List<Thing>();
696 using (Enumerator enumerator = GetEnumerator())
698 while (enumerator.MoveNext())
700 Thing current = enumerator.Current;
711 list.Sort((
Thing a,
Thing b) => Compare(a) - Compare(b));
713 static int Compare(
Thing a)
715 return a.SelfWeight + (a.isEquipped ? 10000 : 0);
728 using Enumerator enumerator = GetEnumerator();
729 while (enumerator.MoveNext())
731 Thing current = enumerator.Current;
736 if ((refVal == -1 || current.
refVal == refVal) && current.
IsIdentified && (current.
id ==
id || (isOrigin && current.
source._origin ==
id)))
753 using Enumerator enumerator = GetEnumerator();
754 while (enumerator.MoveNext())
756 Thing current = enumerator.Current;
761 if (current.
id ==
id || (isOrigin && current.
source._origin ==
id))
771 using (Enumerator enumerator = GetEnumerator())
773 while (enumerator.MoveNext())
775 Thing current = enumerator.Current;
780 if (current.
id ==
id && (mat ==
null || current.
material == mat))
798 using Enumerator enumerator = GetEnumerator();
799 while (enumerator.MoveNext())
801 Thing current = enumerator.Current;
806 if (current.
id ==
id)
813 public List<Thing>
List(Func<Thing, bool> func,
bool onlyAccessible =
false)
816 _List(func, onlyAccessible);
820 public void _List(Func<Thing, bool> func,
bool onlyAccessible =
false)
826 using Enumerator enumerator = GetEnumerator();
827 while (enumerator.MoveNext())
829 Thing current = enumerator.Current;
840 using Enumerator enumerator = GetEnumerator();
841 while (enumerator.MoveNext())
843 Thing current = enumerator.Current;
850 hash.Add(current.
id);
859 public void Foreach(Action<Thing> action,
bool onlyAccessible =
true)
861 using Enumerator enumerator = GetEnumerator();
862 while (enumerator.MoveNext())
864 Thing current = enumerator.Current;
873 public void Foreach(Func<Thing, bool> action,
bool onlyAccessible =
true)
875 using Enumerator enumerator = GetEnumerator();
876 while (enumerator.MoveNext())
878 Thing current = enumerator.Current;
void Add(Act a, string s="")
ContainerUpgrade c_containerUpgrade
SourceMaterial.Row material
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Thing AddThing(string id, int lv=-1)
Window.SaveData GetWindowSaveData()
bool TryStackTo(Thing to)
Thing Add(string id, int num=1, int lv=1)
SourceCategory.Row category
void ModNum(int a, bool notify=true)
static SourceManager sources
Dictionary< string, CardRow > map
Thing Find(string id, string idMat)
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
void SetOwner(Card owner)
void RefreshGrid(UIMagicChest magic, Window.SaveData data)
void AddFactory(HashSet< string > hash)
void DestroyAll(Func< Thing, bool > funcExclude=null)
ThingStack GetThingStack(string id, ThingStack s, bool isOrigin)
ThingStack GetThingStack(string id)
Thing TryStack(Thing target, int destInvX=-1, int destInvY=-1)
void AddCurrency(Card owner, string id, int a, SourceMaterial.Row mat=null)
static List< Thing > tempList
List< Thing > ListCurrency(string id)
void ChangeSize(int w, int h)
DestData GetDest(Thing t, bool tryStack=true)
bool IsOccupied(int x, int y)
bool ShouldShowOnGrid(Thing t)
void _ListCurrency(string id)
void SetSize(int w, int h)
static List< ThingContainer > _listContainers
void Foreach(Action< Thing > action, bool onlyAccessible=true)
Thing Find(string id, int idMat=-1, int refVal=-1)
static List< Thing > listUnassigned
Thing FindBest< T >(Func< Thing, int > func)
void Foreach(Func< Thing, bool > action, bool onlyAccessible=true)
Thing CanStack(Thing target, int destInvX=-1, int destInvY=-1)
ThingStack GetThingStack(string id, ThingStack s, bool isOrigin, int refVal=-1)
ThingStack GetThingStack(string id, int refVal=-1)
void _List(Func< Thing, bool > func, bool onlyAccessible=false)
int GetCurrency(string id, ref int sum, SourceMaterial.Row mat=null)
void RefreshGridRecursive()
Thing Find(Func< Thing, bool > func, bool recursive=true)
bool IsFull(Thing t, bool recursive=true, bool tryStack=true)
static Thing Create(string id, int idMat=-1, int lv=-1)
override bool MatchEncSearch(string s)
override string GetName(NameStyle style, int _num=-1)
override bool CanStackTo(Thing to)
virtual bool CanSearchContent
virtual ToggleType ToggleType
virtual bool IsSpecialContainer
virtual bool CanOnlyCarry
Dictionary< string, int > catCount
List< Thing > filteredList
FilterResult IsFilterPass(string text)