public static void GetCostAndTurn(Amplitude.Unity.Gui.IGuiService guiService, DepartmentOfTheTreasury departmentOfTheTreasury, SimulationObjectWrapper context, out string costString, out int turn) { turn = 0; StringBuilder stringBuilder = new StringBuilder(); if (PanelFeatureCost.costByResource.Count > 0) { bool flag = false; IDatabase <ResourceDefinition> database = Databases.GetDatabase <ResourceDefinition>(false); foreach (KeyValuePair <StaticString, PanelFeatureCost.CostResume> keyValuePair in PanelFeatureCost.costByResource) { if (keyValuePair.Key == SimulationProperties.Population) { stringBuilder.Append(GuiFormater.FormatGui(keyValuePair.Value.Cost, false, true, false, 1)); stringBuilder.Append(guiService.FormatSymbol(keyValuePair.Key)); } else if (keyValuePair.Key == DepartmentOfTheTreasury.Resources.FreeBorough) { stringBuilder.Append(GuiFormater.FormatGui(keyValuePair.Value.Cost, false, true, false, 1)); stringBuilder.Append(guiService.FormatSymbol(keyValuePair.Key)); float num; if (!departmentOfTheTreasury.TryGetResourceStockValue(context.SimulationObject, DepartmentOfTheTreasury.Resources.QueuedFreeBorough, out num, true)) { Diagnostics.Log("Can't get resource stock value {0} on simulation object {1}.", new object[] { DepartmentOfTheTreasury.Resources.QueuedFreeBorough, context.SimulationObject.Name }); } else { stringBuilder.Append(string.Format(AgeLocalizer.Instance.LocalizeString("%CityFreeBoroughsLeft"), num)); } } else { float cost = keyValuePair.Value.Cost; StaticString key = keyValuePair.Key; ResourceDefinition resourceDefinition; if (!database.TryGetValue(key, out resourceDefinition)) { Diagnostics.LogError("Invalid resource name. The resource {0} does not exist in the resource database.", new object[] { key }); } else { string value = guiService.FormatSymbol(resourceDefinition.GetName(departmentOfTheTreasury.Empire)); if (!string.IsNullOrEmpty(value)) { global::Empire empire = null; if (context is City) { empire = (context as City).Empire; } else if (context is global::Empire) { empire = (context as global::Empire); } if (empire.SimulationObject.Tags.Contains(FactionTrait.FactionTraitMimics2) && key == DepartmentOfTheTreasury.Resources.Production) { ResourceDefinition resourceDefinition2; if (!database.TryGetValue(SimulationProperties.CityGrowth, out resourceDefinition2)) { Diagnostics.LogError("Invalid resource name. The resource {0} does not exist in the resource database.", new object[] { key }); continue; } value = guiService.FormatSymbol(resourceDefinition2.GetName(departmentOfTheTreasury.Empire)); if (string.IsNullOrEmpty(value)) { continue; } } float num2; if (!departmentOfTheTreasury.TryGetResourceStockValue(context.SimulationObject, key, out num2, true)) { num2 = 0f; } if (keyValuePair.Value.Instant && num2 < cost) { AgeUtils.ColorToHexaKey(Color.red, ref stringBuilder, false); flag = true; } stringBuilder.Append(GuiFormater.FormatGui(cost, false, true, false, 1)); stringBuilder.Append(value); if (flag) { stringBuilder.Append("#REVERT#"); flag = false; } if (!keyValuePair.Value.Instant) { float num3; if (!departmentOfTheTreasury.TryGetNetResourceValue(context.SimulationObject, key, out num3, true)) { num3 = 0f; } if (cost > num2) { if (num3 <= 0f) { turn = int.MaxValue; } else { int num4 = Mathf.CeilToInt((cost - num2) / num3); if (num4 > turn) { turn = num4; } } } } stringBuilder.Append(" "); } } } } } costString = stringBuilder.ToString(); if (string.IsNullOrEmpty(costString)) { costString = "-"; } }
public void RefreshActionAvailability(DepartmentOfTheTreasury departmentOfTheTreasury, int infiltrationLevel, InterpreterContext interpreterContext, Amplitude.Unity.Gui.IGuiService guiService) { this.CurrentAction = this.InfiltrationActions.FirstOrDefault((InfiltrationAction infiltrationAction) => infiltrationAction.Level == infiltrationLevel); if (this.CurrentAction == null) { this.CurrentAction = (from infiltrationAction in this.InfiltrationActions where infiltrationAction.Level < infiltrationLevel select infiltrationAction).LastOrDefault <InfiltrationAction>(); if (this.CurrentAction == null) { this.CurrentAction = (from infiltrationAction in this.InfiltrationActions where infiltrationAction.Level > infiltrationLevel select infiltrationAction).FirstOrDefault <InfiltrationAction>(); } } this.FailuresFlags.Clear(); if (interpreterContext != null) { this.IsValid = this.CurrentAction.CanExecute(interpreterContext, ref this.failuresFlags, new object[0]); if (!this.IsValid) { this.IsValid = !this.failuresFlags.Contains(ConstructionFlags.Discard); } this.IsValid &= (this.CurrentAction.Level <= infiltrationLevel); } else { this.failuresFlags.Add(InfiltrationAction.NoCanDoWithoutInfiltratedSpy); this.IsValid = false; } GuiInfiltrationActionGroup.ComputeInfiltrationActionGuiElement(guiService, this.CurrentAction, out this.actionGuiElement); GuiInfiltrationActionGroup.ComputeInfiltrationActionSubCategoryTexture(guiService, this.CurrentAction, out this.subCategoryTexture); this.InfiltrationActionCostString.Clear(); List <string> list = new List <string>(); int i = 0; while (i < this.InfiltrationActions.Count) { list.Clear(); if (interpreterContext == null || departmentOfTheTreasury == null) { goto IL_228; } this.InfiltrationActions[i].ComputeConstructionCost(interpreterContext); if (InfiltrationAction.Context.ConstructionCosts == null) { goto IL_228; } for (int j = 0; j < InfiltrationAction.Context.ConstructionCosts.Length; j++) { ConstructionCost constructionCost = InfiltrationAction.Context.ConstructionCosts[j]; string item = ((!departmentOfTheTreasury.CanAfford(constructionCost.Value, constructionCost.ResourceName)) ? "#DF1010#" : string.Empty) + string.Format("{0}{1}", GuiFormater.FormatGui(constructionCost.Value, false, true, false, 1), guiService.FormatSymbol(constructionCost.ResourceName)); list.Add(item); } this.InfiltrationActionCostString.Add(string.Join(" ", list.ToArray())); IL_238: i++; continue; IL_228: this.InfiltrationActionCostString.Add("-"); goto IL_238; } }
public void SetupPortrait(Kaiju kaiju, Empire playerEmpire) { this.Kaiju = kaiju; if (this.Portrait != null) { IGuiPanelHelper guiPanelHelper = Services.GetService <global::IGuiService>().GuiPanelHelper; Diagnostics.Assert(guiPanelHelper != null, "Unable to access GuiPanelHelper"); Texture2D image; if (guiPanelHelper.TryGetTextureFromIcon(this.KaijuGuiElement, global::GuiPanel.IconSize.Large, out image)) { this.Portrait.Image = image; } } Amplitude.Unity.Gui.IGuiService service = Services.GetService <global::IGuiService>(); Diagnostics.Assert(service != null); KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost(); this.CostGroup.Visible = this.Kaiju.IsWild(); KaijuCouncil agency = this.Kaiju.KaijuEmpire.GetAgency <KaijuCouncil>(); this.CostValue.Text = GuiFormater.FormatGui(kaijuTameCost.GetValue(playerEmpire), false, true, false, 0) + service.FormatSymbol(ELCPUtilities.UseELCPSymbiosisBuffs ? agency.ELCPResourceName : kaijuTameCost.ResourceName); if (this.Background != null) { this.Background.TintColor = this.Kaiju.Empire.Color; } this.AgeTransform.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString(KaijuTechPortrait.PortraitClickTooltip); }