コード例 #1
0
    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();
    }
コード例 #2
0
    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));
    }
コード例 #3
0
    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();
        }
    }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
    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;
    }
コード例 #6
0
ファイル: UnitListPanel.cs プロジェクト: LeaderEnemyBoss/ELCP
 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);
 }