예제 #1
0
        /// <summary>
        /// Sets the toggle state of a button only if it actually changed.
        /// </summary>
        /// <param name="instance">The side screen being updated.</param>
        /// <param name="toggle">The toggle to modify.</param>
        /// <param name="state">The state to apply.</param>
        private static void SetImageToggleState(ReceptacleSideScreen instance, KToggle toggle,
                                                ITState state)
        {
            if (toggle.TryGetComponent(out ImageToggleState its) && state != its.currentState)
            {
                // SetState provides no feedback on whether the state actually changed
                var targetImage = toggle.gameObject.GetComponentInChildrenOnly <Image>();
                switch (state)
                {
                case ITState.Disabled:
                    its.SetDisabled();
                    targetImage.material = instance.desaturatedMaterial;
                    break;

                case ITState.Inactive:
                    its.SetInactive();
                    targetImage.material = instance.defaultMaterial;
                    break;

                case ITState.Active:
                    its.SetActive();
                    targetImage.material = instance.defaultMaterial;
                    break;

                case ITState.DisabledActive:
                    its.SetDisabledActive();
                    targetImage.material = instance.desaturatedMaterial;
                    break;

                default:
                    break;
                }
            }
        }
    private void SetImageToggleState(KToggle toggle, ImageToggleState.State state)
    {
        switch (state)
        {
        case ImageToggleState.State.Active:
            toggle.GetComponent <ImageToggleState>().SetActive();
            toggle.gameObject.GetComponentInChildrenOnly <Image>().material = defaultMaterial;
            break;

        case ImageToggleState.State.Inactive:
            toggle.GetComponent <ImageToggleState>().SetInactive();
            toggle.gameObject.GetComponentInChildrenOnly <Image>().material = defaultMaterial;
            break;

        case ImageToggleState.State.Disabled:
            toggle.GetComponent <ImageToggleState>().SetDisabled();
            toggle.gameObject.GetComponentInChildrenOnly <Image>().material = desaturatedMaterial;
            break;

        case ImageToggleState.State.DisabledActive:
            toggle.GetComponent <ImageToggleState>().SetDisabledActive();
            toggle.gameObject.GetComponentInChildrenOnly <Image>().material = desaturatedMaterial;
            break;
        }
    }
 private void SetImageToggleState(GameObject target, ImageToggleState.State state)
 {
     ImageToggleState[] components = target.GetComponents <ImageToggleState>();
     ImageToggleState[] array      = components;
     foreach (ImageToggleState imageToggleState in array)
     {
         imageToggleState.SetState(state);
     }
 }
 public void ActivateFlourish(bool state, ImageToggleState.State ImageState)
 {
     ImageToggleState[] components = GetComponents <ImageToggleState>();
     if (components != null && components.Length > 0)
     {
         ImageToggleState[] array = components;
         foreach (ImageToggleState imageToggleState in array)
         {
             imageToggleState.SetState(ImageState);
         }
     }
     ActivateFlourish(state);
 }
예제 #5
0
    private Color ColorForState(ImageToggleState its, ImageToggleState.State state)
    {
        switch (state)
        {
        default:
            return(its.ActiveColour);

        case ImageToggleState.State.Inactive:
            return(its.InactiveColour);

        case ImageToggleState.State.Disabled:
            return(its.DisabledColour);

        case ImageToggleState.State.DisabledActive:
            return(its.DisabledActiveColour);
        }
    }
    private void UpdateButtonStates()
    {
        if (toggleInfo != null && toggleInfo.Count > 0)
        {
            foreach (ToggleInfo item in toggleInfo)
            {
                UserData     userData = (UserData)item.userData;
                HashedString x        = userData.category;
                PlanScreen.RequirementsState categoryRequirements = GetCategoryRequirements(x);
                bool flag = categoryRequirements == PlanScreen.RequirementsState.Tech;
                item.toggle.gameObject.SetActive(!flag);
                switch (categoryRequirements)
                {
                case PlanScreen.RequirementsState.Complete:
                {
                    ImageToggleState.State state2 = (!selectedCategory.IsValid || x != selectedCategory) ? ImageToggleState.State.Inactive : ImageToggleState.State.Active;
                    if (!userData.currentToggleState.HasValue || userData.currentToggleState.GetValueOrDefault() != state2)
                    {
                        userData.currentToggleState = state2;
                        SetImageToggleState(item.toggle.gameObject, state2);
                    }
                    break;
                }

                case PlanScreen.RequirementsState.Materials:
                {
                    item.toggle.fgImage.SetAlpha((!flag) ? 1f : 0.2509804f);
                    ImageToggleState.State state = (selectedCategory.IsValid && x == selectedCategory) ? ImageToggleState.State.DisabledActive : ImageToggleState.State.Disabled;
                    if (!userData.currentToggleState.HasValue || userData.currentToggleState.GetValueOrDefault() != state)
                    {
                        userData.currentToggleState = state;
                        SetImageToggleState(item.toggle.gameObject, state);
                    }
                    break;
                }
                }
                GameObject gameObject = item.toggle.fgImage.transform.Find("ResearchIcon").gameObject;
                gameObject.gameObject.SetActive(flag);
            }
        }
    }
 private void RefreshToggle(ToggleInfo info)
 {
     if (info != null && !((UnityEngine.Object)info.toggle == (UnityEngine.Object)null))
     {
         UserData    userData = info.userData as UserData;
         BuildingDef def      = userData.def;
         TechItem    techItem = Db.Get().TechItems.TryGet(def.PrefabID);
         bool        flag     = DebugHandler.InstantBuildMode || techItem == null || techItem.IsComplete();
         bool        flag2    = flag || techItem == null || techItem.parentTech.ArePrerequisitesComplete();
         KToggle     toggle   = info.toggle;
         if (toggle.gameObject.activeSelf != flag2)
         {
             toggle.gameObject.SetActive(flag2);
         }
         if (!((UnityEngine.Object)toggle.bgImage == (UnityEngine.Object)null))
         {
             Image  image  = toggle.bgImage.GetComponentsInChildren <Image>()[1];
             Sprite sprite = image.sprite = def.GetUISprite("ui", false);
             image.SetNativeSize();
             image.rectTransform().sizeDelta /= 4f;
             ToolTip component = toggle.gameObject.GetComponent <ToolTip>();
             component.ClearMultiStringTooltip();
             string text   = def.Name;
             string effect = def.Effect;
             if (def.HotKey != Action.NumActions)
             {
                 text = GameUtil.AppendHotkeyString(text, def.HotKey);
             }
             component.AddMultiStringTooltip(text, buildingToolTipSettings.BuildButtonName);
             component.AddMultiStringTooltip(effect, buildingToolTipSettings.BuildButtonDescription);
             LocText componentInChildren = toggle.GetComponentInChildren <LocText>();
             if ((UnityEngine.Object)componentInChildren != (UnityEngine.Object)null)
             {
                 componentInChildren.text = def.Name;
             }
             PlanScreen.RequirementsState requirementsState = BuildMenu.Instance.BuildableState(def);
             ImageToggleState.State       state             = (requirementsState == PlanScreen.RequirementsState.Complete) ? ImageToggleState.State.Inactive : ImageToggleState.State.Disabled;
             state = ((!((UnityEngine.Object)def == (UnityEngine.Object)selectedBuilding) || (requirementsState != PlanScreen.RequirementsState.Complete && !DebugHandler.InstantBuildMode)) ? ((requirementsState == PlanScreen.RequirementsState.Complete || DebugHandler.InstantBuildMode) ? ImageToggleState.State.Inactive : ImageToggleState.State.Disabled) : ImageToggleState.State.Active);
             if ((UnityEngine.Object)def == (UnityEngine.Object)selectedBuilding && state == ImageToggleState.State.Disabled)
             {
                 state = ImageToggleState.State.DisabledActive;
             }
             else if (state == ImageToggleState.State.Disabled)
             {
                 state = ImageToggleState.State.Disabled;
             }
             toggle.GetComponent <ImageToggleState>().SetState(state);
             Material material;
             Color    color;
             if (requirementsState == PlanScreen.RequirementsState.Complete || DebugHandler.InstantBuildMode)
             {
                 material = defaultUIMaterial;
                 color    = Color.white;
             }
             else
             {
                 material = desaturatedUIMaterial;
                 Color color2;
                 if (flag)
                 {
                     color2 = new Color(1f, 1f, 1f, 0.6f);
                 }
                 else
                 {
                     Color color4 = image.color = new Color(1f, 1f, 1f, 0.15f);
                     color2 = color4;
                 }
                 color = color2;
             }
             if ((UnityEngine.Object)image.material != (UnityEngine.Object)material)
             {
                 image.material = material;
                 image.color    = color;
             }
             Image fgImage = toggle.gameObject.GetComponent <KToggle>().fgImage;
             fgImage.gameObject.SetActive(false);
             if (!flag)
             {
                 fgImage.sprite = Overlay_NeedTech;
                 fgImage.gameObject.SetActive(true);
                 string newString = string.Format(UI.PRODUCTINFO_REQUIRESRESEARCHDESC, techItem.parentTech.Name);
                 component.AddMultiStringTooltip("\n", buildingToolTipSettings.ResearchRequirement);
                 component.AddMultiStringTooltip(newString, buildingToolTipSettings.ResearchRequirement);
             }
             else if (requirementsState != PlanScreen.RequirementsState.Complete)
             {
                 fgImage.gameObject.SetActive(false);
                 component.AddMultiStringTooltip("\n", buildingToolTipSettings.ResearchRequirement);
                 string newString2 = UI.PRODUCTINFO_MISSINGRESOURCES_HOVER;
                 component.AddMultiStringTooltip(newString2, buildingToolTipSettings.ResearchRequirement);
                 foreach (Recipe.Ingredient ingredient in def.CraftRecipe.Ingredients)
                 {
                     string newString3 = string.Format("{0}{1}: {2}", "• ", ingredient.tag.ProperName(), GameUtil.GetFormattedMass(ingredient.amount, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}"));
                     component.AddMultiStringTooltip(newString3, buildingToolTipSettings.ResearchRequirement);
                 }
                 component.AddMultiStringTooltip(string.Empty, buildingToolTipSettings.ResearchRequirement);
             }
         }
     }
 }
예제 #8
0
 public void RefreshBuildingButton(BuildingDef def, KToggle toggle, HashedString buildingCategory)
 {
     if (!((UnityEngine.Object)toggle == (UnityEngine.Object)null))
     {
         if (GetToggleEntryForCategory(buildingCategory, out ToggleEntry toggleEntry) && toggleEntry.pendingResearchAttentions.Contains(def.Tag))
         {
             toggle.GetComponent <PlanCategoryNotifications>().ToggleAttention(true);
         }
         TechItem techItem = Db.Get().TechItems.TryGet(def.PrefabID);
         bool     flag     = TechRequirementsMet(techItem);
         bool     flag2    = TechRequirementsUpcoming(techItem);
         if (toggle.gameObject.activeSelf != flag2)
         {
             toggle.gameObject.SetActive(flag2);
             ConfigurePanelSize();
             SetScrollPoint(0f);
         }
         if (toggle.gameObject.activeInHierarchy && !((UnityEngine.Object)toggle.bgImage == (UnityEngine.Object)null))
         {
             Image  image    = toggle.bgImage.GetComponentsInChildren <Image>()[1];
             Sprite uISprite = def.GetUISprite("ui", false);
             if ((UnityEngine.Object)uISprite == (UnityEngine.Object)null)
             {
                 uISprite = defaultBuildingIconSprite;
             }
             image.sprite = uISprite;
             image.SetNativeSize();
             image.rectTransform().sizeDelta /= 4f;
             ToolTip component = toggle.gameObject.GetComponent <ToolTip>();
             PositionTooltip(toggle, component);
             component.ClearMultiStringTooltip();
             string name   = def.Name;
             string effect = def.Effect;
             component.AddMultiStringTooltip(name, buildingToolTipSettings.BuildButtonName);
             component.AddMultiStringTooltip(effect, buildingToolTipSettings.BuildButtonDescription);
             LocText componentInChildren = toggle.GetComponentInChildren <LocText>();
             if ((UnityEngine.Object)componentInChildren != (UnityEngine.Object)null)
             {
                 componentInChildren.text = def.Name;
             }
             ImageToggleState.State state = (BuildableState(def) == RequirementsState.Complete) ? ImageToggleState.State.Inactive : ImageToggleState.State.Disabled;
             state = ((!((UnityEngine.Object)toggle.gameObject == (UnityEngine.Object)selectedBuildingGameObject) || (BuildableState(def) != RequirementsState.Complete && !DebugHandler.InstantBuildMode && !Game.Instance.SandboxModeActive)) ? ((BuildableState(def) == RequirementsState.Complete || DebugHandler.InstantBuildMode || Game.Instance.SandboxModeActive) ? ImageToggleState.State.Inactive : ImageToggleState.State.Disabled) : ImageToggleState.State.Active);
             if ((UnityEngine.Object)toggle.gameObject == (UnityEngine.Object)selectedBuildingGameObject && state == ImageToggleState.State.Disabled)
             {
                 state = ImageToggleState.State.DisabledActive;
             }
             else if (state == ImageToggleState.State.Disabled)
             {
                 state = ImageToggleState.State.Disabled;
             }
             toggle.GetComponent <ImageToggleState>().SetState(state);
             Material material = (BuildableState(def) != RequirementsState.Complete && !DebugHandler.InstantBuildMode && !Game.Instance.SandboxModeActive) ? desaturatedUIMaterial : defaultUIMaterial;
             if ((UnityEngine.Object)image.material != (UnityEngine.Object)material)
             {
                 image.material = material;
                 if ((UnityEngine.Object)material == (UnityEngine.Object)desaturatedUIMaterial)
                 {
                     if (flag)
                     {
                         image.color = new Color(1f, 1f, 1f, 0.6f);
                     }
                     else
                     {
                         image.color = new Color(1f, 1f, 1f, 0.15f);
                     }
                 }
                 else
                 {
                     image.color = Color.white;
                 }
             }
             Image fgImage = toggle.gameObject.GetComponent <KToggle>().fgImage;
             fgImage.gameObject.SetActive(false);
             if (!flag)
             {
                 fgImage.sprite = Overlay_NeedTech;
                 fgImage.gameObject.SetActive(true);
                 string newString = string.Format(UI.PRODUCTINFO_REQUIRESRESEARCHDESC, techItem.parentTech.Name);
                 component.AddMultiStringTooltip("\n", buildingToolTipSettings.ResearchRequirement);
                 component.AddMultiStringTooltip(newString, buildingToolTipSettings.ResearchRequirement);
             }
             else if (BuildableState(def) != RequirementsState.Complete)
             {
                 fgImage.gameObject.SetActive(false);
                 component.AddMultiStringTooltip("\n", buildingToolTipSettings.ResearchRequirement);
                 string newString2 = UI.PRODUCTINFO_MISSINGRESOURCES_HOVER;
                 component.AddMultiStringTooltip(newString2, buildingToolTipSettings.ResearchRequirement);
                 foreach (Recipe.Ingredient ingredient in def.CraftRecipe.Ingredients)
                 {
                     string newString3 = string.Format("{0}{1}: {2}", "• ", ingredient.tag.ProperName(), GameUtil.GetFormattedMass(ingredient.amount, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}"));
                     component.AddMultiStringTooltip(newString3, buildingToolTipSettings.ResearchRequirement);
                 }
                 component.AddMultiStringTooltip(string.Empty, buildingToolTipSettings.ResearchRequirement);
             }
         }
     }
 }
예제 #9
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);
             }
         }
     }
 }