public void Refresh() { List <ToggleInfo> list = new List <ToggleInfo>(); if (tagCategoryMap == null) { int building_index = 0; tagCategoryMap = new Dictionary <Tag, HashedString>(); tagOrderMap = new Dictionary <Tag, int>(); if (TUNING.BUILDINGS.PLANORDER.Count > 12) { DebugUtil.LogWarningArgs("Insufficient keys to cover root plan menu", "Max of 12 keys supported but TUNING.BUILDINGS.PLANORDER has " + TUNING.BUILDINGS.PLANORDER.Count); } toggleEntries.Clear(); for (int i = 0; i < TUNING.BUILDINGS.PLANORDER.Count; i++) { PlanInfo planInfo = TUNING.BUILDINGS.PLANORDER[i]; Action hotkey = (Action)((i >= 12) ? 247 : (36 + i)); string icon = iconNameMap[planInfo.category]; string str = HashCache.Get().Get(planInfo.category).ToUpper(); ToggleInfo toggleInfo = new ToggleInfo(UI.StripLinkFormatting(Strings.Get("STRINGS.UI.BUILDCATEGORIES." + str + ".NAME")), icon, planInfo.category, hotkey, Strings.Get("STRINGS.UI.BUILDCATEGORIES." + str + ".TOOLTIP"), string.Empty); list.Add(toggleInfo); PopulateOrderInfo(planInfo.category, planInfo.data, tagCategoryMap, tagOrderMap, ref building_index); List <BuildingDef> list2 = new List <BuildingDef>(); foreach (BuildingDef buildingDef in Assets.BuildingDefs) { HashedString value; if (!buildingDef.Deprecated && tagCategoryMap.TryGetValue(buildingDef.Tag, out value) && !(value != planInfo.category)) { list2.Add(buildingDef); } } toggleEntries.Add(new ToggleEntry(toggleInfo, planInfo.category, list2, planInfo.hideIfNotResearched)); } Setup(list); toggles.ForEach(delegate(KToggle to) { ImageToggleState[] components = to.GetComponents <ImageToggleState>(); ImageToggleState[] array = components; foreach (ImageToggleState imageToggleState in array) { if ((UnityEngine.Object)imageToggleState.TargetImage.sprite != (UnityEngine.Object)null && imageToggleState.TargetImage.name == "FG" && !imageToggleState.useSprites) { imageToggleState.SetSprites(Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled"), imageToggleState.TargetImage.sprite, imageToggleState.TargetImage.sprite, Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled")); } } to.GetComponent <KToggle>().soundPlayer.Enabled = false; }); for (int j = 0; j < toggleEntries.Count; j++) { ToggleEntry value2 = toggleEntries[j]; value2.CollectToggleImages(); toggleEntries[j] = value2; } } }
private bool GetToggleEntryForCategory(HashedString category, out ToggleEntry toggleEntry) { foreach (ToggleEntry toggleEntry2 in toggleEntries) { ToggleEntry current = toggleEntry2; if (current.planCategory == category) { toggleEntry = current; return(true); } } toggleEntry = default(ToggleEntry); return(false); }
private void SetCategoryButtonState() { foreach (ToggleEntry toggleEntry in toggleEntries) { ToggleEntry current = toggleEntry; ToggleInfo toggleInfo = current.toggleInfo; toggleInfo.toggle.ActivateFlourish(activeCategoryInfo != null && toggleInfo.userData == activeCategoryInfo.userData); bool flag = false; bool flag2 = true; if (DebugHandler.InstantBuildMode || Game.Instance.SandboxModeActive) { flag = true; flag2 = false; } else { foreach (BuildingDef buildingDef in current.buildingDefs) { RequirementsState requirementsState = BuildableState(buildingDef); if (requirementsState == RequirementsState.Complete) { flag = true; flag2 = false; break; } } if (flag2 && current.AreAnyRequiredTechItemsAvailable()) { flag2 = false; } } CategoryInteractive[toggleInfo] = !flag2; GameObject gameObject = toggleInfo.toggle.fgImage.transform.Find("ResearchIcon").gameObject; if (!flag) { if (flag2 && current.hideIfNotResearched) { toggleInfo.toggle.gameObject.SetActive(false); } else if (flag2) { toggleInfo.toggle.gameObject.SetActive(true); toggleInfo.toggle.fgImage.SetAlpha(0.2509804f); gameObject.gameObject.SetActive(true); } else { toggleInfo.toggle.gameObject.SetActive(true); toggleInfo.toggle.fgImage.SetAlpha(1f); gameObject.gameObject.SetActive(false); } ImageToggleState.State state = (activeCategoryInfo != null && toggleInfo.userData == activeCategoryInfo.userData) ? ImageToggleState.State.DisabledActive : ImageToggleState.State.Disabled; ImageToggleState[] toggleImages = current.toggleImages; foreach (ImageToggleState imageToggleState in toggleImages) { imageToggleState.SetState(state); } } else { toggleInfo.toggle.gameObject.SetActive(true); toggleInfo.toggle.fgImage.SetAlpha(1f); gameObject.gameObject.SetActive(false); ImageToggleState.State state2 = (activeCategoryInfo == null || toggleInfo.userData != activeCategoryInfo.userData) ? ImageToggleState.State.Inactive : ImageToggleState.State.Active; ImageToggleState[] toggleImages2 = current.toggleImages; foreach (ImageToggleState imageToggleState2 in toggleImages2) { imageToggleState2.SetState(state2); } } } }