private void SelectUnitToShift(AIData_Army army, float maxCost, out float cost, out GameEntityGUID[] shiftingUnitGuids) { cost = 0f; List <GameEntityGUID> list = new List <GameEntityGUID>(); DepartmentOfTheTreasury agency = army.Army.Empire.GetAgency <DepartmentOfTheTreasury>(); foreach (Unit unit in army.Army.Units) { if (this.aiDataRepositoryHelper.IsGUIDValid(unit.GUID)) { if (unit.CanShift()) { ConstructionCost unitForceShiftingCost = agency.GetUnitForceShiftingCost(unit); float value = unitForceShiftingCost.Value; if (cost + value > maxCost) { break; } cost += value; list.Add(unit.GUID); } } } shiftingUnitGuids = list.ToArray(); }
private string GetFormattedPrice(Tradable tradable, int quantity) { float priceWithSalesTaxes = tradable.GetPriceWithSalesTaxes(TradableTransactionType.Buyout, base.Empire, (float)quantity); ConstructionCost[] costs = new ConstructionCost[] { new ConstructionCost(DepartmentOfTheTreasury.Resources.EmpireMoney, priceWithSalesTaxes, true, false) }; return(GuiFormater.FormatCost(base.Empire, costs, false, 1, null)); }
protected void DisplayPrice() { ConstructionCost[] costs = new ConstructionCost[] { new ConstructionCost(DepartmentOfTheTreasury.Resources.EmpireMoney, this.Price, true, false) }; string text = GuiFormater.FormatCost(this.empire, costs, false, 1, null); this.PriceLabel.Text = text; AgeTooltip ageTooltip = this.PriceLabel.AgeTransform.AgeTooltip; if (ageTooltip != null) { string formattedLine = AgeLocalizer.Instance.LocalizeString("%MarketplaceTradablePriceDescription").Replace("$TradableName", this.LocalizedName).Replace("$Price", text); StringBuilder stringBuilder = new StringBuilder(); AgeUtils.CleanLine(formattedLine, ref stringBuilder); ageTooltip.Content = stringBuilder.ToString(); } }
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; } }
private void RefreshCosts() { IConstructionCost[] array = this.ArmyAction.Costs; ArmyAction_Bribe armyAction_Bribe = this.ArmyAction as ArmyAction_Bribe; ArmyAction_Convert armyAction_Convert = this.ArmyAction as ArmyAction_Convert; if (armyAction_Bribe != null || armyAction_Convert != null) { Village village = this.Target as Village; if (village != null) { IConstructionCost[] array2 = null; if (armyAction_Bribe != null) { IConstructionCost[] array3 = armyAction_Bribe.GetBribeCosts(this.Army, village); array2 = array3; } else if (armyAction_Convert != null) { IConstructionCost[] array3 = armyAction_Convert.GetConvertionCost(this.Army, village); array2 = array3; } if (array2 != null && array2.Length != 0) { if (array == null) { array = array2; } else { Array.Resize <IConstructionCost>(ref array, array.Length + array2.Length); Array.Copy(array2, 0, array, array.Length - array2.Length, array2.Length); } } } } if (this.Army != null && this.Army.Empire != null && array != null && array.Length != 0) { this.ActionCostLabel.AgeTransform.Visible = true; if (ELCPUtilities.UseELCPSymbiosisBuffs && this.ArmyAction is ArmyAction_TameUnstunnedKaiju) { KaijuGarrison kaijuGarrison = this.Target as KaijuGarrison; if (kaijuGarrison != null) { KaijuCouncil agency = kaijuGarrison.KaijuEmpire.GetAgency <KaijuCouncil>(); if (agency != null) { ConstructionCost constructionCost = new ConstructionCost(agency.ELCPResourceName, KaijuCouncil.GetKaijuTameCost().GetValue(this.Army.Empire), true, true); array = new IConstructionCost[] { constructionCost }; } } } this.ActionCostLabel.Text = GuiFormater.FormatCost(this.Army.Empire, array, false, 1, this.Army); this.ActionDescription.AgeTransform.PixelMarginBottom = this.ActionCostLabel.AgeTransform.PixelMarginBottom + this.ActionCostLabel.AgeTransform.Height; return; } this.ActionCostLabel.AgeTransform.Visible = false; this.ActionCostLabel.Text = string.Empty; this.ActionDescription.AgeTransform.PixelMarginBottom = this.ActionCostLabel.AgeTransform.PixelMarginBottom; }
private bool CanRetrofitUnitsAndExplain() { this.RetrofitButtonPriceLabel.AgeTransform.Visible = false; if (this.IsOtherEmpire) { return(false); } if (this.Garrison.IsInEncounter) { this.RetrofitButton.AgeTooltip.Content = "%ArmyLockedInBattleDescription"; return(false); } if (this.selectedUnits.Count == 0) { this.RetrofitButton.AgeTooltip.Content = "%ArmyEmptySelectionDescription"; return(false); } this.RetrofitComputeCandidates(); if (this.retrofitableUnits.Count == 0) { this.RetrofitButton.AgeTooltip.Content = "%RetrofitTabNoCandidateDescription"; return(false); } ConstructionCost[] array = this.departmentOfDefense.GetRetrofitCosts(this.retrofitableUnits.ToArray()); if (array.Length == 0) { array = new ConstructionCost[] { new ConstructionCost("EmpireMoney", 0f, true, false) }; } AgeUtils.CleanLine(GuiFormater.FormatCost(this.Garrison.Empire, array, false, 1, null), ref this.monochromaticFormat); this.RetrofitButtonPriceLabel.Text = GuiFormater.FormatCost(this.Garrison.Empire, array, false, 0, null); this.RetrofitButtonPriceLabel.AgeTransform.Visible = this.CanDisplayRetrofitCost(); for (int i = 0; i < this.retrofitableUnits.Count; i++) { DepartmentOfDefense.CheckRetrofitPrerequisitesResult checkRetrofitPrerequisitesResult = this.departmentOfDefense.CheckRetrofitPrerequisites(this.retrofitableUnits[i], array); if (checkRetrofitPrerequisitesResult == DepartmentOfDefense.CheckRetrofitPrerequisitesResult.GarrisonArmyIsInEncounter) { this.RetrofitButton.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString("%ArmyLockedInBattleDescription"); return(false); } if (checkRetrofitPrerequisitesResult == DepartmentOfDefense.CheckRetrofitPrerequisitesResult.GarrisonCityIsUnderSiege) { this.RetrofitButton.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString("%RetrofitTabGarrisonCityUnderSiegeDescription"); return(false); } if (checkRetrofitPrerequisitesResult == DepartmentOfDefense.CheckRetrofitPrerequisitesResult.RegionDoesntBelongToUs || checkRetrofitPrerequisitesResult == DepartmentOfDefense.CheckRetrofitPrerequisitesResult.WorldPositionIsNotValid) { this.RetrofitButton.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString("%RetrofitTabNotInOwnRegionDescription"); return(false); } } if (!this.DepartmentOfTheTreasury.CanAfford(array)) { this.RetrofitButton.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString("%RetrofitTabCannotAffordDescription") + " : " + this.monochromaticFormat; return(false); } this.RetrofitButton.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString("%RetrofitTabOKDescription") + " : " + this.monochromaticFormat; return(true); }