Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
BuildMenu Class Reference
Inheritance diagram for BuildMenu:
EMono

Public Types

enum  Mode {
  Build , None , Hide , Area ,
  PartialMap
}
 

Public Member Functions

void OnActivate ()
 
void Init ()
 
void Search (string s)
 
void ClearSearch ()
 
void ClearSearch (bool refresh)
 
void Refresh ()
 
void SelectCategory (string cat)
 
void Select (AM_Picker.Result r)
 
void Unselect ()
 
void RefreshCategoryArea ()
 
void RefreshCategory (string cat)
 
void OnClickPicker ()
 

Static Public Member Functions

static void Toggle ()
 
static void Activate ()
 
static void Deactivate ()
 
static void Show ()
 
static void Hide ()
 
- Static Public Member Functions inherited from EMono
static int rnd (int a)
 

Public Attributes

GridLayoutGroup gridTab
 
UISelectableGroup groupTab
 
UIDynamicList list
 
UIDynamicList listArea
 
Dictionary< string, int > catDic = new Dictionary<string, int>()
 
UIRecipeInfo info1
 
UIRecipeInfo info2
 
RectTransform transOption
 
RectTransform transMain
 
Vector2 posInfo2
 
Vector2 posInfo1
 
Vector2 posOption
 
CanvasGroup cg
 
float hideSpeed
 
float intervalSearch
 
bool moveInfo1
 
TerrainMenu terrainMenu
 
InputField inputSearch
 
string currentCat
 
string lastCat
 
UIButton buttonClearSearch
 
string[] categories
 
ButtonRecipe lastButtonRecipe
 
Dictionary< string, int > counts = new Dictionary<string, int>()
 
Dictionary< string, UIButtontabs = new Dictionary<string, UIButton>()
 
UIButton buttonUndo
 
string lastSearch
 
HashSet< RecipesearchRecipes = new HashSet<Recipe>()
 

Static Public Attributes

static BuildMenu Instance
 
static bool dirtyCat
 
- Static Public Attributes inherited from EMono
static Core core
 

Properties

Mode mode [get]
 
- Properties inherited from EMono
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SoundManager Sound [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static CoreDebug debug [get]
 

Private Member Functions

void _Search ()
 
void LateUpdate ()
 

Private Attributes

Vector2 orgPos
 
Vector2 orgPosOption
 
float timerSearch
 
bool firstRefresh = true
 

Detailed Description

Definition at line 6 of file BuildMenu.cs.

Member Enumeration Documentation

◆ Mode

Enumerator
Build 
None 
Hide 
Area 
PartialMap 

Definition at line 8 of file BuildMenu.cs.

9 {
10 Build,
11 None,
12 Hide,
13 Area,
15 }
static void Hide()
Definition: BuildMenu.cs:331

Member Function Documentation

◆ _Search()

void BuildMenu._Search ( )
inlineprivate

Definition at line 240 of file BuildMenu.cs.

241 {
242 string s = lastSearch;
244 HashSet<Recipe> newRecipes = new HashSet<Recipe>();
245 if (!s.IsEmpty())
246 {
248 {
249 if (item.noListing || item.isBridgePillar || (!EMono.debug.godBuild && !item.alwaysKnown && !EMono.player.recipes.knownRecipes.ContainsKey(item.id)) || (!item.row.GetSearchName(jp: false).Contains(s) && !item.row.GetSearchName(jp: true).Contains(s) && !item.id.Contains(s) && !item.row.category.Contains(s)))
250 {
251 continue;
252 }
253 for (int i = 0; i < ((item.row.skins == null) ? 1 : (item.row.skins.Length + 1)); i++)
254 {
255 Recipe recipe = Recipe.Create(item);
256 recipe.idSkin = i;
257 if (recipe == null)
258 {
259 Debug.Log(item.Name + "/" + item.id);
260 }
261 else
262 {
263 newRecipes.Add(recipe);
264 }
265 }
266 }
267 foreach (Thing thing in EMono._map.Stocked.Things)
268 {
269 if (EMono._map.Stocked.ShouldListAsResource(thing) && (thing.source.name.Contains(s) || thing.source.name_JP.Contains(s) || thing.NameOne.Contains(s)))
270 {
271 Recipe recipe2 = Recipe.Create(thing);
272 if (recipe2 == null)
273 {
274 Debug.Log(thing.Name + "/" + thing.id);
275 }
276 else
277 {
278 newRecipes.Add(recipe2);
279 }
280 }
281 }
282 EMono.pc.things.Foreach(delegate(Thing t)
283 {
284 if (t.trait.CanBeDropped && !t.trait.CanOnlyCarry && (t.source.name.Contains(s) || t.source.name_JP.Contains(s) || t.NameOne.Contains(s)))
285 {
286 Recipe recipe3 = Recipe.Create(t);
287 if (recipe3 == null)
288 {
289 Debug.Log(t.Name + "/" + t.id);
290 }
291 else
292 {
293 newRecipes.Add(recipe3);
294 }
295 }
296 });
297 }
298 if (!newRecipes.SetEquals(searchRecipes))
299 {
300 searchRecipes = newRecipes;
302 }
303 lastSearch = s;
304 }
string lastSearch
Definition: BuildMenu.cs:85
void RefreshCategory(string cat)
Definition: BuildMenu.cs:491
HashSet< Recipe > searchRecipes
Definition: BuildMenu.cs:87
string currentCat
Definition: BuildMenu.cs:53
string id
Definition: Card.cs:31
string NameOne
Definition: Card.cs:2017
string Name
Definition: Card.cs:2013
Trait trait
Definition: Card.cs:49
ThingContainer things
Definition: Card.cs:34
bool godBuild
Definition: CoreDebug.cs:303
Definition: EMono.cs:4
static Chara pc
Definition: EMono.cs:13
static Player player
Definition: EMono.cs:11
static Map _map
Definition: EMono.cs:17
static CoreDebug debug
Definition: EMono.cs:45
PropsStocked Stocked
Definition: Map.cs:121
RecipeManager recipes
Definition: Player.cs:898
List< Thing > Things
Definition: Props.cs:37
bool ShouldListAsResource(Thing t)
Definition: Props.cs:174
static void BuildList()
static List< RecipeSource > list
Definition: RecipeManager.cs:9
Dictionary< string, int > knownRecipes
Definition: Recipe.cs:7
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:308
void Foreach(Action< Thing > action, bool onlyAccessible=true)
Definition: Thing.cs:8
SourceThing.Row source
Definition: Thing.cs:11
virtual bool CanBeDropped
Definition: Trait.cs:289
virtual bool CanOnlyCarry
Definition: Trait.cs:283

References EMono._map, RecipeManager.BuildList(), Trait.CanBeDropped, Trait.CanOnlyCarry, Recipe.Create(), currentCat, EMono.debug, Debug, ThingContainer.Foreach(), CoreDebug.godBuild, Card.id, item, RecipeManager.knownRecipes, lastSearch, RecipeManager.list, Card.Name, Card.NameOne, EMono.pc, EMono.player, Player.recipes, RefreshCategory(), searchRecipes, Props.ShouldListAsResource(), Thing.source, Map.Stocked, Card.things, Props.Things, and Card.trait.

Referenced by LateUpdate().

◆ Activate()

static void BuildMenu.Activate ( )
inlinestatic

Definition at line 117 of file BuildMenu.cs.

118 {
119 if (!Instance)
120 {
121 Instance = Util.Instantiate<BuildMenu>("UI/BuildMenu/BuildMenu", EMono.ui);
122 Instance.Init();
123 }
124 if (EMono.debug.godBuild)
125 {
127 }
130 EMono.screen.focusPos = null;
131 }
static BuildMenu Instance
Definition: BuildMenu.cs:77
void OnActivate()
Definition: BuildMenu.cs:133
void Init()
Definition: BuildMenu.cs:187
static UI ui
Definition: EMono.cs:15
void RevealAll(bool reveal=true)
Definition: Map.cs:899
Definition: Util.cs:10
static Transform Instantiate(string path, Component parent=null)
Definition: Util.cs:67

References EMono._map, RecipeManager.BuildList(), EMono.debug, CoreDebug.godBuild, Init(), Instance, OnActivate(), Map.RevealAll(), EMono.ui, and Util.

Referenced by ActionMode.Activate().

◆ ClearSearch() [1/2]

void BuildMenu.ClearSearch ( )
inline

Definition at line 306 of file BuildMenu.cs.

307 {
308 ClearSearch(refresh: true);
309 }
void ClearSearch()
Definition: BuildMenu.cs:306

References ClearSearch().

Referenced by ClearSearch(), Init(), and Select().

◆ ClearSearch() [2/2]

void BuildMenu.ClearSearch ( bool  refresh)
inline

Definition at line 311 of file BuildMenu.cs.

312 {
313 SE.Click();
314 inputSearch.text = "";
315 timerSearch = 0f;
316 lastSearch = "";
317 if (refresh)
318 {
320 }
321 }
float timerSearch
Definition: BuildMenu.cs:83

References currentCat, lastSearch, RefreshCategory(), and timerSearch.

◆ Deactivate()

static void BuildMenu.Deactivate ( )
inlinestatic

Definition at line 173 of file BuildMenu.cs.

174 {
175 if ((bool)Instance)
176 {
177 UnityEngine.Object.DestroyImmediate(Instance.gameObject);
178 if (EMono.game.altUI)
179 {
181 }
182 EMono.ui.ShowFloats();
184 }
185 }
static Zone _zone
Definition: EMono.cs:19
static BaseGameScreen screen
Definition: EMono.cs:29
static Game game
Definition: EMono.cs:7
bool altUI
Definition: Game.cs:261
void RefreshBGM()
Definition: Zone.cs:2742

References EMono._zone, Game.altUI, EMono.game, Instance, BaseGameScreen.RefreshAll(), Zone.RefreshBGM(), EMono.screen, and EMono.ui.

Referenced by ActionMode.Activate(), and Scene.Init().

◆ Hide()

static void BuildMenu.Hide ( )
inlinestatic

Definition at line 331 of file BuildMenu.cs.

332 {
333 if ((bool)Instance)
334 {
335 Instance.SetActive(enable: false);
336 }
337 }

References Instance.

Referenced by LayerArea.OnInit().

◆ Init()

void BuildMenu.Init ( )
inline

Definition at line 187 of file BuildMenu.cs.

188 {
189 info1.Init();
190 info2.Init();
191 info2.transform.position = info1.transform.position;
192 orgPos = info1.Rect().anchoredPosition;
193 orgPosOption = transOption.anchoredPosition;
194 for (int i = 0; i < categories.Length; i++)
195 {
196 if (!categories[i].IsEmpty())
197 {
198 catDic.Add(categories[i], i);
199 }
200 }
201 UIButton t = gridTab.CreateMold<UIButton>();
202 for (int j = 0; j < categories.Length - 1; j++)
203 {
204 int _i = j;
205 UIButton uIButton = Util.Instantiate(t, gridTab);
206 uIButton.onClick.AddListener(delegate
207 {
208 ClearSearch(refresh: false);
210 });
211 uIButton.mainText.SetText(("cat_" + categories[j]).lang());
212 tabs[categories[j]] = uIButton;
213 if (categories[j].IsEmpty())
214 {
215 uIButton.mainText.SetActive(enable: false);
216 uIButton.interactable = false;
217 }
218 }
219 groupTab.Init(-1);
220 EMono.ui.hud.frame.SetActive(EMono.game.altUI);
221 inputSearch.onValueChanged.AddListener(Search);
222 inputSearch.onSubmit.AddListener(Search);
223 if (EMono.game.altUI)
224 {
225 EMono.Sound.SwitchPlaylist(EMono.Sound.playlistBuild);
226 }
227 }
InputField inputSearch
Definition: BuildMenu.cs:51
RectTransform transOption
Definition: BuildMenu.cs:31
void SelectCategory(string cat)
Definition: BuildMenu.cs:399
GridLayoutGroup gridTab
Definition: BuildMenu.cs:17
UISelectableGroup groupTab
Definition: BuildMenu.cs:19
string[] categories
Definition: BuildMenu.cs:60
Vector2 orgPos
Definition: BuildMenu.cs:73
UIRecipeInfo info1
Definition: BuildMenu.cs:27
Dictionary< string, int > catDic
Definition: BuildMenu.cs:25
Vector2 orgPosOption
Definition: BuildMenu.cs:75
Dictionary< string, UIButton > tabs
Definition: BuildMenu.cs:71
UIRecipeInfo info2
Definition: BuildMenu.cs:29
static SoundManager Sound
Definition: EMono.cs:39
UIText mainText
Definition: UIButton.cs:102
virtual void Init(int index=0, UnityAction< int > action=null, bool directChildren=false)
void SetText(string s)
Definition: UIText.cs:159

References Game.altUI, catDic, categories, ClearSearch(), EMono.game, gridTab, groupTab, info1, info2, UIRecipeInfo.Init(), UISelectableGroup.Init(), inputSearch, UIButton.mainText, orgPos, orgPosOption, Search, SelectCategory(), UIText.SetText(), EMono.Sound, tabs, transOption, EMono.ui, and Util.

Referenced by Activate().

◆ LateUpdate()

void BuildMenu.LateUpdate ( )
inlineprivate

Definition at line 339 of file BuildMenu.cs.

340 {
341 Refresh();
342 if (timerSearch > 0f)
343 {
345 if (timerSearch <= 0f)
346 {
347 _Search();
348 }
349 }
350 }
void _Search()
Definition: BuildMenu.cs:240
void Refresh()
Definition: BuildMenu.cs:352
Definition: Core.cs:14
static float delta
Definition: Core.cs:17

References _Search(), Core.delta, Refresh(), and timerSearch.

◆ OnActivate()

void BuildMenu.OnActivate ( )
inline

Definition at line 133 of file BuildMenu.cs.

134 {
136 {
138 }
139 EMono.ui.HideFloats();
140 this.SetActive(mode != Mode.None);
141 transMain.SetActive(mode == Mode.Build && (EMono.debug.godBuild || EMono._zone.elements.Has(4005)));
142 switch (mode)
143 {
144 case Mode.Build:
145 {
146 string cat = EMono.player.pref.lastBuildCategory.IsEmpty("wall");
147 SelectCategory(cat);
148 Refresh();
149 cg.GetComponentInChildren<UIScrollView>()?.RebuildLayout(recursive: true);
150 buttonUndo.onClick.RemoveAllListeners();
151 buttonUndo.onClick.AddListener(delegate
152 {
154 });
155 buttonUndo.SetTooltip("note", delegate(UITooltip tp)
156 {
158 });
159 break;
160 }
161 case Mode.Area:
163 Refresh();
164 break;
165 }
166 if (EMono.debug.enable)
167 {
169 }
171 }
RectTransform transMain
Definition: BuildMenu.cs:33
CanvasGroup cg
Definition: BuildMenu.cs:41
Mode mode
Definition: BuildMenu.cs:91
UIButton buttonUndo
Definition: BuildMenu.cs:79
void RefreshCategoryArea()
Definition: BuildMenu.cs:447
Thing GetDebugContainer()
Definition: CoreDebug.cs:751
bool enable
Definition: CoreDebug.cs:285
void EnableDebugResource()
Definition: CoreDebug.cs:763
bool Has(int ele)
void ResetEditorPos()
Definition: Map.cs:357
TaskManager tasks
Definition: Map.cs:34
string lastBuildCategory
Definition: Player.cs:26
Pref pref
Definition: Player.cs:814
UndoManager undo
Definition: TaskManager.cs:64
void SetTooltip(Action< UITooltip > onShowTooltip=null, bool enable=true)
Definition: UIButton.cs:361
UINote note
Definition: UITooltip.cs:21
void WriteNote(UINote n)
Definition: UndoManager.cs:76
void Perform()
Definition: UndoManager.cs:93
ElementContainerZone elements
Definition: Zone.cs:43

References EMono._map, EMono._zone, buttonUndo, cg, EMono.debug, Zone.elements, CoreDebug.enable, CoreDebug.EnableDebugResource(), CoreDebug.GetDebugContainer(), CoreDebug.godBuild, ElementContainer.Has(), Player.Pref.lastBuildCategory, mode, UITooltip.note, UndoManager.Perform(), EMono.player, Player.pref, Refresh(), BaseGameScreen.RefreshAll(), RefreshCategoryArea(), Map.ResetEditorPos(), EMono.screen, SelectCategory(), UIButton.SetTooltip(), Map.tasks, transMain, EMono.ui, TaskManager.undo, and UndoManager.WriteNote().

Referenced by Activate().

◆ OnClickPicker()

void BuildMenu.OnClickPicker ( )
inline

Definition at line 675 of file BuildMenu.cs.

676 {
678 }
static AM_Picker Picker
Definition: ActionMode.cs:43
void Activate(bool toggle=true, bool forceActivate=false)
Definition: ActionMode.cs:339

References ActionMode.Activate(), and ActionMode.Picker.

◆ Refresh()

void BuildMenu.Refresh ( )
inline

Definition at line 352 of file BuildMenu.cs.

353 {
354 ButtonGrid buttonGrid = InputModuleEX.GetComponentOf<ButtonGrid>();
355 if ((bool)buttonGrid && buttonGrid.recipe == null && buttonGrid.area == null)
356 {
357 buttonGrid = null;
358 }
359 bool flag = EMono.scene.actionMode.ShouldHideBuildMenu || (EMono.scene.actionMode != ActionMode.Build && EMono.scene.actionMode != ActionMode.Inspect && EMono.scene.actionMode != ActionMode.EditArea);
360 cg.SetActive(!flag, delegate(bool enabled)
361 {
362 if (enabled)
363 {
366 }
367 });
369 transOption.anchoredPosition = (groupTab.gameObject.activeInHierarchy ? orgPosOption : posOption);
370 if (info1.hideMode != flag || firstRefresh)
371 {
372 info1.hideMode = flag;
373 if (moveInfo1)
374 {
375 info1.Rect().anchoredPosition = (flag ? posInfo1 : orgPos);
376 }
377 }
378 if ((bool)buttonGrid && !flag)
379 {
380 info2.transform.position = buttonGrid.transform.position;
381 info2.Rect().anchoredPosition = new Vector2(info2.Rect().anchoredPosition.x + posInfo2.x, posInfo2.y);
382 if (buttonGrid.area != null)
383 {
384 info2.SetArea(buttonGrid.area);
385 }
386 else
387 {
388 info2.SetRecipe(buttonGrid.recipe);
389 }
390 info2.SetActive(enable: true);
391 }
392 else
393 {
394 info2.SetActive(enable: false);
395 }
396 firstRefresh = false;
397 }
static AM_EditArea EditArea
Definition: ActionMode.cs:53
UIDynamicList list
Definition: BuildMenu.cs:21
Vector2 posOption
Definition: BuildMenu.cs:39
Vector2 posInfo1
Definition: BuildMenu.cs:37
Vector2 posInfo2
Definition: BuildMenu.cs:35
bool firstRefresh
Definition: BuildMenu.cs:89
bool moveInfo1
Definition: BuildMenu.cs:47
Area area
Definition: ButtonGrid.cs:18
Recipe recipe
Definition: ButtonGrid.cs:20
static Scene scene
Definition: EMono.cs:27
ActionMode actionMode
Definition: Scene.cs:77
bool RefreshHighlight(bool invoke=false)
void SetArea(Area a)
Definition: UIRecipeInfo.cs:86
void SetRecipe(Recipe r)

References Scene.actionMode, ButtonGrid.area, cg, ActionMode.EditArea, firstRefresh, groupTab, UIRecipeInfo.hideMode, info1, info2, list, moveInfo1, orgPos, orgPosOption, posInfo1, posInfo2, posOption, ButtonGrid.recipe, UISelectableGroup.RefreshButtons(), UIDynamicList.RefreshHighlight(), EMono.scene, UIRecipeInfo.SetArea(), and UIRecipeInfo.SetRecipe().

Referenced by LateUpdate(), and OnActivate().

◆ RefreshCategory()

void BuildMenu.RefreshCategory ( string  cat)
inline

Definition at line 491 of file BuildMenu.cs.

492 {
493 cat = cat.IsEmpty(categories[0]);
494 EMono.player.pref.lastBuildCategory = cat;
495 currentCat = cat;
496 list.Clear();
497 object selected = null;
498 counts.Clear();
499 list.callbacks = new UIList.Callback<Recipe, ButtonGrid>
500 {
501 onClick = delegate(Recipe a, ButtonGrid b)
502 {
503 SE.Click();
504 EMono.ui.hud.hint.Refresh();
505 EMono.player.pref.lastBuildRecipe = a.source.id;
506 if (a.UseStock && (a.ingredients[0].uid == 0 || a.ingredients[0].thing == null))
507 {
508 Debug.LogError("expection: invalid ingredient:" + a.ingredients[0].uid);
509 }
510 if (info1.recipe != a && !a.UseStock)
511 {
512 foreach (Recipe.Ingredient ingredient in a.ingredients)
513 {
514 ingredient.SetThing();
515 }
516 }
517 if (a.UseStock && (a.ingredients[0].uid == 0 || a.ingredients[0].thing == null))
518 {
519 Debug.LogError("expection: invalid ingredient:" + a.ingredients[0].uid);
520 }
521 info1.SetRecipe(a);
522 if (a.UseStock && (a.ingredients[0].uid == 0 || a.ingredients[0].thing == null))
523 {
524 Debug.LogError("expection: invalid ingredient:" + a.ingredients[0].uid);
525 }
527 ActionMode.Build.StartBuild(a, () => list.GetComp<ButtonGrid>(a));
528 info1.SetRecipe(a);
529 list.Select(a);
530 if (a.UseStock && (a.ingredients[0].uid == 0 || a.ingredients[0].thing == null))
531 {
532 Debug.LogError("expection: invalid ingredient:" + a.ingredients[0].uid);
533 }
534 },
535 onRedraw = delegate(Recipe a, ButtonGrid b, int i)
536 {
537 b.SetActive(a != null);
538 if (a != null)
539 {
540 b.SetRecipe(a);
541 if (info1.recipe != null && a.id == info1.recipe.id)
542 {
543 selected = a;
544 }
546 }
547 },
548 onList = delegate
549 {
550 string[] array = categories;
551 foreach (string key in array)
552 {
553 counts[key] = 0;
554 }
555 if (inputSearch.text != "")
556 {
557 foreach (Recipe searchRecipe in searchRecipes)
558 {
559 if (searchRecipe.UseStock)
560 {
561 Thing thing = searchRecipe.ingredients[0].thing;
562 if (thing == null || thing.isDestroyed || thing.ExistsOnMap || (thing.parentCard != null && thing.parentCard.c_lockLv > 0))
563 {
564 continue;
565 }
566 }
567 list.Add(searchRecipe);
568 }
569 return;
570 }
572 {
573 if (EMono.debug.godBuild || !(item.row.GetAlias != "block_invisi") || (!item.noListing && !item.row.tileType.EditorTile && EMono.player.recipes.IsKnown(item.id) && (item.row.factory.Length == 0 || !(item.row.factory[0] == "none"))))
574 {
575 counts[item.recipeCat]++;
576 if (!(item.recipeCat != cat))
577 {
578 for (int k = 0; k < ((item.row.skins != null) ? item.row.skins.Length : 0) + 1; k++)
579 {
580 Recipe recipe = Recipe.Create(item);
581 recipe.idSkin = k;
582 list.Add(recipe);
583 }
584 }
585 }
586 }
588 {
589 foreach (Thing thing2 in EMono._map.Stocked.Things)
590 {
592 {
593 counts[thing2.trait.RecipeCat]++;
594 if (thing2.trait.RecipeCat == cat)
595 {
596 Card rootCard = thing2.GetRootCard();
597 if (rootCard != null && rootCard.c_lockLv == 0)
598 {
600 }
601 }
602 }
603 }
604 EMono.pc.things.Foreach(delegate(Thing t)
605 {
607 {
609 if (t.trait.RecipeCat == cat && t.invY != 1)
610 {
612 }
613 }
614 });
615 }
616 if (cat == "other")
617 {
618 list.objects.Sort((object a, object b) => string.Compare((a as Recipe).id, (b as Recipe).id));
619 }
620 else if (cat == "wall" || cat == "floor" || cat == "foundation" || cat == "obj")
621 {
622 list.objects.Sort((object a, object b) => (a as Recipe).renderRow.sort - (b as Recipe).renderRow.sort);
623 }
624 else
625 {
626 list.objects.Sort(delegate(object a, object b)
627 {
628 Recipe recipe2 = a as Recipe;
629 Recipe recipe3 = b as Recipe;
630 int num = recipe2.renderRow.sort - recipe3.renderRow.sort;
631 if (num == 0)
632 {
633 RecipeCard recipeCard = recipe2 as RecipeCard;
634 RecipeCard recipeCard2 = recipe3 as RecipeCard;
635 num = ((recipeCard == null || recipeCard2 == null) ? string.Compare(recipe2.id, recipe3.id) : string.Compare(recipeCard.sourceCard._origin.IsEmpty(recipeCard.sourceCard.id), recipeCard2.sourceCard._origin.IsEmpty(recipeCard2.sourceCard.id)));
636 if (num == 0)
637 {
638 num = (recipe2.IngAsProduct ? recipe2.ingredients[0].uid : 0) - (recipe3.IngAsProduct ? recipe3.ingredients[0].uid : 0);
639 }
640 }
641 return num;
642 });
643 }
644 array = categories;
645 foreach (string text in array)
646 {
647 if (!(text == "area") && !(text == ""))
648 {
649 if (counts[text] == 0)
650 {
651 tabs[text].subText.text = "";
652 }
653 else
654 {
655 tabs[text].subText.text = counts[text].ToString() ?? "";
656 }
657 }
658 }
659 }
660 };
661 list.List();
662 if (lastCat != currentCat)
663 {
664 list.Scroll();
665 }
666 groupTab.Select(catDic[cat]);
667 if (selected != null)
668 {
669 list.Select(selected);
670 }
672 list.RebuildLayoutTo<BuildMenu>();
673 }
void StartBuild(Recipe r, Func< ButtonGrid > _button)
Definition: AM_Build.cs:156
static AM_Build Build
Definition: ActionMode.cs:49
Dictionary< string, int > counts
Definition: BuildMenu.cs:69
string lastCat
Definition: BuildMenu.cs:55
void SetRecipe()
Definition: ButtonGrid.cs:533
string _origin
Definition: CardRow.cs:15
string id
Definition: CardRow.cs:7
Definition: Card.cs:11
bool isDestroyed
Definition: Card.cs:71
int c_lockLv
Definition: Card.cs:924
int invY
Definition: Card.cs:1831
bool ExistsOnMap
Definition: Card.cs:1961
bool c_isImportant
Definition: Card.cs:984
Card GetRootCard()
Definition: Card.cs:3173
Card parentCard
Definition: Card.cs:99
bool hidePCItemsInBuild
Definition: CoreDebug.cs:208
CardRow sourceCard
Definition: RecipeCard.cs:20
bool IsKnown(string id)
string id
Definition: Recipe.cs:161
virtual RenderRow renderRow
Definition: Recipe.cs:193
RecipeSource source
Definition: Recipe.cs:187
List< Ingredient > ingredients
Definition: Recipe.cs:164
virtual void OnChangeIngredient()
Definition: Recipe.cs:532
bool UseStock
Definition: Recipe.cs:167
virtual void BuildIngredientList()
Definition: Recipe.cs:509
bool IngAsProduct
Definition: Recipe.cs:170
int sort
Definition: RenderRow.cs:18
virtual Recipe GetBuildModeRecipe()
Definition: Trait.cs:763
virtual string RecipeCat
Definition: Trait.cs:353
override void List()
List< object > objects
void Scroll(int index=0)
override void Add(object o)
bool Select(object o, bool invoke=false)
override void Clear()
Definition: UIList.cs:9
Recipe recipe
Definition: UIRecipeInfo.cs:32
void Select(UIButton button, bool check=true)

References EMono._map, CardRow._origin, UIDynamicList.Add(), ActionMode.Build, Recipe.BuildIngredientList(), Card.c_isImportant, Card.c_lockLv, Trait.CanBeDropped, Trait.CanOnlyCarry, catDic, categories, UIDynamicList.Clear(), counts, Recipe.Create(), currentCat, EMono.debug, Debug, Card.ExistsOnMap, ThingContainer.Foreach(), Trait.GetBuildModeRecipe(), Card.GetRootCard(), CoreDebug.godBuild, groupTab, CoreDebug.hidePCItemsInBuild, CardRow.id, Recipe.id, RecipeSource.id, info1, Recipe.IngAsProduct, Recipe.ingredients, inputSearch, Card.invY, Card.isDestroyed, RecipeManager.IsKnown(), item, lastCat, list, UIDynamicList.List(), RecipeManager.list, UIDynamicList.objects, Recipe.OnChangeIngredient(), Card.parentCard, EMono.pc, EMono.player, UIRecipeInfo.recipe, Trait.RecipeCat, Player.recipes, Recipe.renderRow, UIDynamicList.Scroll(), searchRecipes, UIDynamicList.Select(), UISelectableGroup.Select(), ButtonGrid.SetRecipe(), UIRecipeInfo.SetRecipe(), Props.ShouldListAsResource(), RenderRow.sort, Recipe.source, RecipeCard.sourceCard, AM_Build.StartBuild(), Map.Stocked, tabs, Card.things, Props.Things, Card.trait, EMono.ui, and Recipe.UseStock.

Referenced by _Search(), ClearSearch(), AM_Build.OnFinishProcessTiles(), Select(), and SelectCategory().

◆ RefreshCategoryArea()

void BuildMenu.RefreshCategoryArea ( )
inline

Definition at line 447 of file BuildMenu.cs.

448 {
449 UIDynamicList uIDynamicList = listArea;
450 List<Area> list = new List<Area>();
451 foreach (SourceArea.Row row in EMono.sources.areas.rows)
452 {
453 Area area = Area.Create(row.id);
454 area.data.name = null;
455 list.Add(area);
456 }
457 uIDynamicList.Clear();
458 object selected = null;
459 uIDynamicList.callbacks = new UIList.Callback<Area, ButtonGrid>
460 {
461 onClick = delegate(Area a, ButtonGrid b)
462 {
463 SE.Click();
466 {
468 }
469 EMono.ui.hud.hint.Refresh();
470 info1.SetArea(a);
471 },
472 onRedraw = delegate(Area a, ButtonGrid b, int i)
473 {
474 b.SetRecipe(a);
475 if (info1.area != null && a.source == info1.area.source)
476 {
477 selected = a;
478 }
479 }
480 };
481 foreach (Area item in list)
482 {
483 if (item.isListable)
484 {
485 uIDynamicList.Add(item);
486 }
487 }
488 uIDynamicList.List();
489 }
void SetArea(Area a)
static AM_CreateArea CreateArea
Definition: ActionMode.cs:51
Definition: Area.cs:4
static Area Create(string id)
Definition: Area.cs:104
SourceArea.Row source
Definition: BaseArea.cs:50
UIDynamicList listArea
Definition: BuildMenu.cs:23
static SourceManager sources
Definition: EMono.cs:41
SourceArea areas

References Scene.actionMode, ActionMode.Activate(), UIDynamicList.Add(), Area, UIRecipeInfo.area, SourceManager.areas, UIDynamicList.Clear(), Area.Create(), ActionMode.CreateArea, info1, item, list, listArea, EMono.scene, AM_CreateArea.SetArea(), UIRecipeInfo.SetArea(), ButtonGrid.SetRecipe(), BaseArea.source, EMono.sources, and EMono.ui.

Referenced by OnActivate().

◆ Search()

void BuildMenu.Search ( string  s)
inline

Definition at line 229 of file BuildMenu.cs.

230 {
231 s = s.ToLower();
232 buttonClearSearch.SetActive(inputSearch.text != "");
233 if (!(s == lastSearch))
234 {
236 lastSearch = s;
237 }
238 }
float intervalSearch
Definition: BuildMenu.cs:45
UIButton buttonClearSearch
Definition: BuildMenu.cs:57

References buttonClearSearch, inputSearch, intervalSearch, lastSearch, and timerSearch.

◆ Select()

void BuildMenu.Select ( AM_Picker::Result  r)
inline

Definition at line 409 of file BuildMenu.cs.

410 {
411 EInput.Consume(consumeAxis: false, 10);
413 ClearSearch(refresh: false);
415 foreach (object @object in list.objects)
416 {
417 Recipe recipe = @object as Recipe;
418 if (r.source == recipe.source && (r.thing == null || r.thing.idSkin == recipe.idSkin))
419 {
420 int index = list.GetIndex(recipe);
421 if (index != -1)
422 {
423 list.dsv.scrollByItemIndex(index);
424 list.Refresh();
425 }
426 break;
427 }
428 }
429 ButtonGrid[] componentsInChildren = list.GetComponentsInChildren<ButtonGrid>();
430 foreach (ButtonGrid buttonGrid in componentsInChildren)
431 {
432 if (buttonGrid.recipe.source == r.source && (r.thing == null || r.thing.idSkin == buttonGrid.recipe.idSkin))
433 {
434 info1.lastMats[buttonGrid.recipe.id] = r.mat.id;
435 buttonGrid.onClick.Invoke();
436 break;
437 }
438 }
439 }
int idSkin
Definition: Card.cs:346
Definition: EInput.cs:8
static void Consume(int _skipFrame)
Definition: EInput.cs:656
static int skipFrame
Definition: EInput.cs:287
string recipeCat
Definition: RecipeSource.cs:35
int idSkin
Definition: Recipe.cs:181
int GetIndex(object o)
DynamicScrollView dsv
Dictionary< string, int > lastMats
Definition: UIRecipeInfo.cs:69
SourceMaterial.Row mat
Definition: AM_Picker.cs:10
RecipeSource source
Definition: AM_Picker.cs:8

References ClearSearch(), EInput.Consume(), Debug, UIDynamicList.dsv, UIDynamicList.GetIndex(), Recipe.id, Recipe.idSkin, info1, UIRecipeInfo.lastMats, list, UIDynamicList.objects, ButtonGrid.recipe, UIDynamicList.Refresh(), RefreshCategory(), EInput.skipFrame, and Recipe.source.

Referenced by AM_Picker.Select().

◆ SelectCategory()

void BuildMenu.SelectCategory ( string  cat)
inline

Definition at line 399 of file BuildMenu.cs.

400 {
401 if (dirtyCat || !(currentCat == cat))
402 {
403 dirtyCat = false;
404 groupTab.Select(catDic[cat]);
405 RefreshCategory(cat);
406 }
407 }
static bool dirtyCat
Definition: BuildMenu.cs:81

References catDic, currentCat, dirtyCat, groupTab, RefreshCategory(), and UISelectableGroup.Select().

Referenced by Init(), and OnActivate().

◆ Show()

static void BuildMenu.Show ( )
inlinestatic

Definition at line 323 of file BuildMenu.cs.

324 {
325 if ((bool)Instance)
326 {
327 Instance.SetActive(enable: true);
328 }
329 }

References Instance.

Referenced by LayerArea.OnKill().

◆ Toggle()

static void BuildMenu.Toggle ( )
inlinestatic

Definition at line 93 of file BuildMenu.cs.

94 {
96 EMono.player.hotbars.bars[3].dirty = true;
98 EMono.player.hotbars.bars[4].dirty = true;
100 {
102 }
103 else if (ActionMode.LastBuildMode != null)
104 {
106 }
107 else if (EMono.debug.godBuild || (EMono.Branch != null && EMono.Branch.elements.Has(4006)))
108 {
110 }
111 else
112 {
114 }
115 }
void Activate(Thing t)
static AM_Inspect Inspect
Definition: ActionMode.cs:23
static AM_Terrain Terrain
Definition: ActionMode.cs:65
static ActionMode LastBuildMode
Definition: ActionMode.cs:79
static FactionBranch Branch
Definition: EMono.cs:21
ElementContainerZone elements
Hotbar[] bars
Definition: HotbarManager.cs:6
void ResetHotbar(int id)
Definition: HotbarManager.cs:8
bool dirty
Definition: Hotbar.cs:89
HotbarManager hotbars
Definition: Player.cs:886

References ActionMode.Activate(), AM_MoveInstalled.Activate(), HotbarManager.bars, EMono.Branch, ActionMode.Build, EMono.debug, Hotbar.dirty, FactionBranch.elements, CoreDebug.godBuild, ElementContainer.Has(), Player.hotbars, ActionMode.Inspect, ActionMode.LastBuildMode, ActionMode.Picker, EMono.player, HotbarManager.ResetHotbar(), and ActionMode.Terrain.

Referenced by ActionMode.DoFunc(), HotItemActionMode.Execute(), and TraitBuildBoard.TrySetAct().

◆ Unselect()

void BuildMenu.Unselect ( )
inline

Member Data Documentation

◆ buttonClearSearch

UIButton BuildMenu.buttonClearSearch

Definition at line 57 of file BuildMenu.cs.

Referenced by Search().

◆ buttonUndo

UIButton BuildMenu.buttonUndo

Definition at line 79 of file BuildMenu.cs.

Referenced by OnActivate().

◆ catDic

Dictionary<string, int> BuildMenu.catDic = new Dictionary<string, int>()

Definition at line 25 of file BuildMenu.cs.

Referenced by Init(), RefreshCategory(), and SelectCategory().

◆ categories

string [] BuildMenu.categories
Initial value:
= new string[20]
{
"wall", "floor", "foundation", "door", "furniture", "storage", "spot", "mount", "facility", "tool",
"deco", "mech", "light", "junk", "ext", "goods", "food", "obj", "other", "area"
}

Definition at line 60 of file BuildMenu.cs.

Referenced by Init(), and RefreshCategory().

◆ cg

CanvasGroup BuildMenu.cg

Definition at line 41 of file BuildMenu.cs.

Referenced by OnActivate(), and Refresh().

◆ counts

Dictionary<string, int> BuildMenu.counts = new Dictionary<string, int>()

Definition at line 69 of file BuildMenu.cs.

Referenced by RefreshCategory().

◆ currentCat

string BuildMenu.currentCat

Definition at line 53 of file BuildMenu.cs.

Referenced by _Search(), ClearSearch(), RefreshCategory(), and SelectCategory().

◆ dirtyCat

bool BuildMenu.dirtyCat
static

Definition at line 81 of file BuildMenu.cs.

Referenced by SelectCategory().

◆ firstRefresh

bool BuildMenu.firstRefresh = true
private

Definition at line 89 of file BuildMenu.cs.

Referenced by Refresh().

◆ gridTab

GridLayoutGroup BuildMenu.gridTab

Definition at line 17 of file BuildMenu.cs.

Referenced by Init().

◆ groupTab

UISelectableGroup BuildMenu.groupTab

Definition at line 19 of file BuildMenu.cs.

Referenced by Init(), Refresh(), RefreshCategory(), and SelectCategory().

◆ hideSpeed

float BuildMenu.hideSpeed

Definition at line 43 of file BuildMenu.cs.

◆ info1

◆ info2

UIRecipeInfo BuildMenu.info2

Definition at line 29 of file BuildMenu.cs.

Referenced by Init(), and Refresh().

◆ inputSearch

InputField BuildMenu.inputSearch

Definition at line 51 of file BuildMenu.cs.

Referenced by Init(), RefreshCategory(), and Search().

◆ Instance

◆ intervalSearch

float BuildMenu.intervalSearch

Definition at line 45 of file BuildMenu.cs.

Referenced by Search().

◆ lastButtonRecipe

ButtonRecipe BuildMenu.lastButtonRecipe

Definition at line 67 of file BuildMenu.cs.

◆ lastCat

string BuildMenu.lastCat

Definition at line 55 of file BuildMenu.cs.

Referenced by RefreshCategory().

◆ lastSearch

string BuildMenu.lastSearch

Definition at line 85 of file BuildMenu.cs.

Referenced by _Search(), ClearSearch(), and Search().

◆ list

UIDynamicList BuildMenu.list

Definition at line 21 of file BuildMenu.cs.

Referenced by Refresh(), RefreshCategory(), RefreshCategoryArea(), Select(), and Unselect().

◆ listArea

UIDynamicList BuildMenu.listArea

Definition at line 23 of file BuildMenu.cs.

Referenced by RefreshCategoryArea().

◆ moveInfo1

bool BuildMenu.moveInfo1

Definition at line 47 of file BuildMenu.cs.

Referenced by Refresh().

◆ orgPos

Vector2 BuildMenu.orgPos
private

Definition at line 73 of file BuildMenu.cs.

Referenced by Init(), and Refresh().

◆ orgPosOption

Vector2 BuildMenu.orgPosOption
private

Definition at line 75 of file BuildMenu.cs.

Referenced by Init(), and Refresh().

◆ posInfo1

Vector2 BuildMenu.posInfo1

Definition at line 37 of file BuildMenu.cs.

Referenced by Refresh().

◆ posInfo2

Vector2 BuildMenu.posInfo2

Definition at line 35 of file BuildMenu.cs.

Referenced by Refresh().

◆ posOption

Vector2 BuildMenu.posOption

Definition at line 39 of file BuildMenu.cs.

Referenced by Refresh().

◆ searchRecipes

HashSet<Recipe> BuildMenu.searchRecipes = new HashSet<Recipe>()

Definition at line 87 of file BuildMenu.cs.

Referenced by _Search(), and RefreshCategory().

◆ tabs

Dictionary<string, UIButton> BuildMenu.tabs = new Dictionary<string, UIButton>()

Definition at line 71 of file BuildMenu.cs.

Referenced by Init(), and RefreshCategory().

◆ terrainMenu

TerrainMenu BuildMenu.terrainMenu

Definition at line 49 of file BuildMenu.cs.

Referenced by ActionMode.Activate(), and AM_Copy.RefreshMenu().

◆ timerSearch

float BuildMenu.timerSearch
private

Definition at line 83 of file BuildMenu.cs.

Referenced by ClearSearch(), LateUpdate(), and Search().

◆ transMain

RectTransform BuildMenu.transMain

Definition at line 33 of file BuildMenu.cs.

Referenced by OnActivate().

◆ transOption

RectTransform BuildMenu.transOption

Definition at line 31 of file BuildMenu.cs.

Referenced by Init().

Property Documentation

◆ mode

Mode BuildMenu.mode
get

Definition at line 91 of file BuildMenu.cs.

Referenced by OnActivate().


The documentation for this class was generated from the following file: