/// <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); }
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); } } } }
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); } } } }
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); } } } }