public static string GenerateInfiltrationElementDescription(Empire spyEmpire, InfiltrationAction infiltrationAction, GuiElement guiElement)
    {
        string text = AgeLocalizer.Instance.LocalizeString(guiElement.Description);
        IInfiltrationActionWithBooster infiltrationActionWithBooster = infiltrationAction as IInfiltrationActionWithBooster;

        if (infiltrationActionWithBooster != null && spyEmpire.GetAgency <DepartmentOfPlanificationAndDevelopment>() != null)
        {
            int duration = infiltrationActionWithBooster.Duration;
            int num      = 0;
            BoosterDefinition boosterDefinition;
            if (duration <= 0 && infiltrationActionWithBooster.BoosterReferences != null && infiltrationActionWithBooster.BoosterReferences.Length != 0 && Databases.GetDatabase <BoosterDefinition>(false).TryGetValue(infiltrationActionWithBooster.BoosterReferences[0], out boosterDefinition))
            {
                num = DepartmentOfPlanificationAndDevelopment.GetBoosterDurationWithBonus(spyEmpire, spyEmpire, boosterDefinition);
            }
            if (num <= 0)
            {
                num = DepartmentOfPlanificationAndDevelopment.GetBoosterDurationWithBonus(spyEmpire, duration);
            }
            text = text.Replace("$Duration", num.ToString());
        }
        if (infiltrationAction is InfiltrationActionOnEmpire_StealResource)
        {
            string newValue = string.Empty;
            EspionageActionPanel guiPanel = Services.GetService <global::IGuiService>().GetGuiPanel <EspionageActionPanel>();
            if (guiPanel != null && guiPanel.TargetedCity != null)
            {
                InfiltrationActionOnEmpire_StealResource infiltrationActionOnEmpire_StealResource = infiltrationAction as InfiltrationActionOnEmpire_StealResource;
                DepartmentOfTheTreasury agency = guiPanel.TargetedCity.Empire.GetAgency <DepartmentOfTheTreasury>();
                float num2 = 0f;
                if (agency.TryGetResourceStockValue(guiPanel.TargetedCity.Empire, infiltrationActionOnEmpire_StealResource.ResourceName, out num2, false))
                {
                    float num3 = num2 * infiltrationActionOnEmpire_StealResource.AmountParameters.TargetStockPercentage + infiltrationActionOnEmpire_StealResource.AmountParameters.BaseAmount;
                    float num4 = num3 * infiltrationActionOnEmpire_StealResource.AmountParameters.RandomThreshold;
                    float num5 = Mathf.Floor(Mathf.Min(num3 - num4, num2));
                    float num6 = Mathf.Floor(Mathf.Min(num3 + num4, num2));
                    newValue = AgeLocalizer.Instance.LocalizeString(string.Concat(new string[]
                    {
                        " (#FFD768#\\7703\\#REVERT# ",
                        num5.ToString(),
                        " - #FFD768#\\7703\\#REVERT# ",
                        num6.ToString(),
                        ")"
                    }));
                }
            }
            text = text.Replace("$Amount", newValue);
        }
        return(text);
    }
    public static void ComputeInfiltrationActionSubCategoryTexture(Amplitude.Unity.Gui.IGuiService guiService, InfiltrationAction infiltrationAction, out Texture2D subCategoryTexture)
    {
        GuiElement guiElement;

        if (!string.IsNullOrEmpty(infiltrationAction.SubCategory) && guiService.GuiPanelHelper.TryGetGuiElement("InfiltrationActionSubCategory" + infiltrationAction.SubCategory, out guiElement) && guiService.GuiPanelHelper.TryGetTextureFromIcon(guiElement, global::GuiPanel.IconSize.Small, out subCategoryTexture))
        {
            return;
        }
        subCategoryTexture = AgeManager.Instance.FindDynamicTexture("InfiltrationActionSubCategoryUnknown", false);
    }
 public static void ComputeInfiltrationActionGuiElement(Amplitude.Unity.Gui.IGuiService guiService, InfiltrationAction infiltrationAction, out GuiElement guiElement)
 {
     if (!guiService.GuiPanelHelper.TryGetGuiElement("InfiltrationAction" + infiltrationAction.Name, out guiElement))
     {
         guiElement = null;
     }
 }