예제 #1
0
    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;
            }
        }
    }
예제 #2
0
 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);
 }
예제 #3
0
 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);
             }
         }
     }
 }