static void Postfix(LanceHeaderWidget __instance, List <MechDef> mechs, LocalizableText ___simLanceTonnageText, LanceConfiguratorPanel ___LC)
        {
            try {
                if (___LC.IsSimGame)
                {
                    DropCostManager.Instance.CalculateLanceCost(mechs);

                    // longer strings interfere with messages about incorrect lance configurations
                    ___simLanceTonnageText.SetText($"DROP COST: ¢{DropCostManager.Instance.FormattedCosts}   LANCE WEIGHT: {DropCostManager.Instance.LanceTonnage} TONS");
                    if (DCECore.settings.diffMode != EDifficultyType.NotActive)
                    {
                        SGDifficultyIndicatorWidget lanceRatingWidget = (SGDifficultyIndicatorWidget)AccessTools
                                                                        .Field(typeof(LanceHeaderWidget), "lanceRatingWidget").GetValue(__instance);
                        TextMeshProUGUI label = lanceRatingWidget.transform.parent
                                                .GetComponentsInChildren <TextMeshProUGUI>()
                                                .FirstOrDefault(t => t.transform.name == "label-lanceRating");
                        label.text = "Lance Rating";
                        int difficulty = DropCostManager.Instance.RawCost / DCECore.settings.valuePerHalfSkull;
                        DCECore.modLog.Debug?.Write($"Calculated Drop Rating: {difficulty}, total value: {DropCostManager.Instance.RawCost}");
                        lanceRatingWidget.SetDifficulty(difficulty);
                    }
                }
            }
            catch (Exception e) {
                DCECore.modLog.Error?.Write(e);
            }
        }
        static bool Prefix(SGDifficultyIndicatorWidget __instance, List <UIColorRefTracker> ___pips, UIColor ___activeColor, ref int difficulty)
        {
            Traverse difficultySetter = Traverse.Create(__instance).Property("Difficulty");

            difficultySetter.SetValue(difficulty);
            __instance.Reset();
            float f = ((float)(difficulty) % 10) / 2f;

            if (!DCECore.settings.useDiffRungs)
            {
                f = Mathf.Min((float)difficulty / 2f, 5f);
            }
            else
            {
                if ((difficulty % 10) == 0 && difficulty != 0)
                {
                    f = 5f;
                }
            }

            int   index;
            Color color;
            bool  customColor = DCECore.settings.getRungColor(Math.Max((difficulty - 1) / 10, 0), out color);

            for (index = 0; index < Mathf.FloorToInt(f); ++index)
            {
                UIColorRefTracker pip = ___pips[index];
                pip.GetComponent <SVGImage>().fillAmount = 1f;

                if (customColor)
                {
                    pip.SetUIColor(UIColor.Custom);
                    pip.OverrideWithColor(color);
                }
                else
                {
                    pip.SetUIColor(___activeColor);
                }
            }
            if ((double)index >= (double)f)
            {
                return(false);
            }
            UIColorRefTracker pip1      = ___pips[index];
            SVGImage          component = pip1.GetComponent <SVGImage>();

            if (customColor)
            {
                pip1.SetUIColor(UIColor.Custom);
                pip1.OverrideWithColor(color);
            }
            else
            {
                pip1.SetUIColor(___activeColor);
            }
            component.fillAmount = f - (float)index;
            return(false);
        }
Exemplo n.º 3
0
        static void Postfix(LanceConfiguratorPanel __instance)
        {
            Main.LogDebug("[LanceConfiguratorPanelContinueConfirmClickedPatch] Patching");
            GameObject lanceHeaderWidgetGo = GameObject.Find("uixPrfPanel_LC_LanceConfigTopBar-Widget-MANAGED");

            if (lanceHeaderWidgetGo != null)
            {
                LanceHeaderWidget           lanceHeaderWidget = lanceHeaderWidgetGo.GetComponent <LanceHeaderWidget>();
                SGDifficultyIndicatorWidget lanceRatingWidget = (SGDifficultyIndicatorWidget)AccessTools.Field(typeof(LanceHeaderWidget), "lanceRatingWidget").GetValue(lanceHeaderWidget);

                MissionControl.Instance.PlayerLanceDropDifficultyValue = lanceRatingWidget.Difficulty;
                MissionControl.Instance.PlayerLanceDropSkullRating     = lanceRatingWidget.Difficulty / 2f;
                CalculateTonnage();
            }
            else
            {
                Main.Logger.LogError("[LanceConfiguratorPanelContinueConfirmClickedPatch] Unable to get object 'uixPrfPanel_LC_LanceConfigTopBar-Widget-MANAGED'. Name must have changed in an BT update.");
            }
        }
        static bool Prefix(SGDifficultyIndicatorWidget __instance, int difficulty,
                           List <UIColorRefTracker> ___pips, ref UIColor ___defaultColor, ref UIColor ___activeColor)
        {
            difficulty = __instance.Difficulty;
            __instance.Reset();
            int   num  = new System.Random().Next(0, 100) + 1;
            float num2 = 0f;

            if (num > 95 && difficulty >= 3)
            {
                num2 = (float)difficulty / 2f - 1f;
            }
            if (num <= 95 && num > 65 && difficulty >= 2)
            {
                num2 = (float)difficulty / 2f - 0.5f;
            }
            if (num <= 65 && num > 40 && difficulty <= 8)
            {
                num2 = (float)difficulty / 2f + 0.5f;
            }
            if (num <= 40 || difficulty < 2 || difficulty > 8)
            {
                num2 = (float)difficulty / 2f;
            }

            int i;

            for (i = 0; i < Mathf.FloorToInt(num2); i++)
            {
                UIColorRefTracker uicolorRefTracker = ___pips[i];
                uicolorRefTracker.GetComponent <SVGImage>().fillAmount = 1f;
                uicolorRefTracker.SetUIColor(___activeColor);
            }
            if ((float)i < num2)
            {
                UIColorRefTracker uicolorRefTracker2 = ___pips[i];
                SVGImage          component          = uicolorRefTracker2.GetComponent <SVGImage>();
                uicolorRefTracker2.SetUIColor(___activeColor);
                component.fillAmount = num2 - (float)i;
            }
            return(false);
        }
Exemplo n.º 5
0
 static void Postfix(LanceHeaderWidget __instance, List <MechDef> mechs)
 {
     try {
         LanceConfiguratorPanel LC = (LanceConfiguratorPanel)AccessTools.Field(typeof(LanceHeaderWidget), "LC").GetValue(__instance);
         if (LC.IsSimGame)
         {
             Settings settings = Helper.LoadSettings();
             SGDifficultyIndicatorWidget lanceRatingWidget = (SGDifficultyIndicatorWidget)AccessTools.Field(typeof(LanceHeaderWidget), "lanceRatingWidget").GetValue(__instance);
             TextMeshProUGUI             label             = lanceRatingWidget.transform.parent.GetComponentsInChildren <TextMeshProUGUI>().FirstOrDefault(t => t.transform.name == "label-lanceRating");
             label.text = "Lance Rating";
             int totalMechWorth = 0;
             foreach (MechDef mech in mechs)
             {
                 totalMechWorth += Mathf.RoundToInt(Helper.CalculateCBillValue(mech));
             }
             lanceRatingWidget.SetDifficulty(Mathf.Min(10, totalMechWorth / settings.CostPerHalfSkull));
         }
     }
     catch (Exception e) {
         Logger.LogError(e);
     }
 }
        public static bool Prefix(SGCaptainsQuartersStatusScreen __instance, EconomyScale expenditureLevel, bool showMoraleChange, SimGameState ___simState,
                                  SGDifficultyIndicatorWidget ___ExpenditureLevelIndicatorWidget, LocalizableText ___ExpenditureLevelField, LocalizableText ___SectionOneExpenseLevel,
                                  LocalizableText ___SectionTwoExpenseLevel, SGFinancialForecastWidget ___FinanceWidget, LocalizableText ___MoraleValueField, SGMoraleBar ___MoralBar,
                                  Transform ___SectionOneExpensesList, LocalizableText ___SectionOneExpensesField, LocalizableText ___SectionTwoExpensesField,
                                  Transform ___SectionTwoExpensesList, LocalizableText ___EndOfQuarterFunds, LocalizableText ___QuarterOperatingExpenses,
                                  LocalizableText ___CurrentFunds, List <LocalizableText> ___ExpenditureLvlBtnMoraleFields, List <LocalizableText> ___ExpenditureLvlBtnCostFields)
        {
            if (__instance == null || ___simState == null)
            {
                return(true);
            }
            float    expenditureCostModifier = ___simState.GetExpenditureCostModifier(expenditureLevel);
            Traverse methodSetField          = Traverse.Create(__instance)
                                               .Method("SetField", new Type[] { typeof(LocalizableText), typeof(string) });
            int expLevel = (int)Traverse.Create(__instance)
                           .Method("GetExpendetureLevelIndexNormalized", new object[] { expenditureLevel }).GetValue();

            ___ExpenditureLevelIndicatorWidget.SetDifficulty(expLevel * 2);
            methodSetField.GetValue(new object[] { ___ExpenditureLevelField, string.Format("{0}", (object)expenditureLevel) });
            methodSetField.GetValue(new object[] { ___SectionOneExpenseLevel, string.Format("{0}", (object)expenditureLevel) });
            methodSetField.GetValue(new object[] { ___SectionTwoExpenseLevel, string.Format("{0}", (object)expenditureLevel) });
            ___FinanceWidget.RefreshData(expenditureLevel);
            int num1 = ___simState.ExpenditureMoraleValue[expenditureLevel];

            methodSetField.GetValue(new object[] { ___MoraleValueField, string.Format("{0}{1}", num1 > 0 ? (object)"+" : (object)"", (object)num1) });
            if (showMoraleChange)
            {
                int morale = ___simState.Morale;
                ___MoralBar.ShowMoraleChange(morale, morale + num1);
            }
            else
            {
                ___MoralBar.ShowCurrentMorale();
            }
            Traverse.Create(__instance).Method("ClearListLineItems", new object[] { ___SectionOneExpensesList }).GetValue();
            List <KeyValuePair <string, int> > keyValuePairList = new List <KeyValuePair <string, int> >();
            int    ongoingUpgradeCosts = 0;
            string key  = ___simState.CurDropship == DropshipType.Leopard ? Strings.T("Bank Loan Interest Payment") : Strings.T("Argo Operating Costs");
            int    num2 = Mathf.RoundToInt(expenditureCostModifier * (float)___simState.GetShipBaseMaintenanceCost());

            keyValuePairList.Add(new KeyValuePair <string, int>(key, num2));
            foreach (ShipModuleUpgrade shipUpgrade in ___simState.ShipUpgrades)
            {
                float pilotQurikModifier = PilotQuirkManager.Instance.getArgoUpgradeCostModifier(___simState.PilotRoster.ToList(),
                                                                                                 shipUpgrade.Description.Id, true);
                float baseCost = (float)shipUpgrade.AdditionalCost * pilotQurikModifier;
                if (___simState.CurDropship == DropshipType.Argo && Mathf.CeilToInt((float)baseCost * ___simState.Constants.CareerMode.ArgoMaintenanceMultiplier) > 0)
                {
                    string name = shipUpgrade.Description.Name;
                    int    num3 = Mathf.RoundToInt(expenditureCostModifier * (float)Mathf.CeilToInt((float)baseCost * ___simState.Constants.CareerMode.ArgoMaintenanceMultiplier));
                    keyValuePairList.Add(new KeyValuePair <string, int>(name, num3));
                }
            }
            foreach (MechDef mechDef in ___simState.ActiveMechs.Values)
            {
                string name = mechDef.Name;
                int    num3 = Mathf.RoundToInt(expenditureCostModifier * (float)___simState.Constants.Finances.MechCostPerQuarter);
                keyValuePairList.Add(new KeyValuePair <string, int>(name, num3));
            }
            keyValuePairList.Sort((Comparison <KeyValuePair <string, int> >)((a, b) => b.Value.CompareTo(a.Value)));
            keyValuePairList.ForEach((Action <KeyValuePair <string, int> >)(entry =>
            {
                ongoingUpgradeCosts += entry.Value;
                methodAddLineItem.Invoke(__instance, new object[] { ___SectionOneExpensesList, entry.Key, SimGameState.GetCBillString(entry.Value) });
            }));
            methodSetField.GetValue(new object[] { ___SectionOneExpensesField, SimGameState.GetCBillString(ongoingUpgradeCosts) });
            keyValuePairList.Clear();
            Traverse.Create(__instance).Method("ClearListLineItems", new object[] { ___SectionTwoExpensesList }).GetValue();
            int ongoingMechWariorCosts = 0;

            foreach (Pilot pilot in ___simState.PilotRoster)
            {
                string displayName = pilot.pilotDef.Description.DisplayName;
                int    num3        = Mathf.CeilToInt(expenditureCostModifier * (float)___simState.GetMechWarriorValue(pilot.pilotDef));
                keyValuePairList.Add(new KeyValuePair <string, int>(displayName, num3));
            }
            keyValuePairList.Sort((Comparison <KeyValuePair <string, int> >)((a, b) => b.Value.CompareTo(a.Value)));
            keyValuePairList.ForEach((Action <KeyValuePair <string, int> >)(entry =>
            {
                ongoingMechWariorCosts += entry.Value;
                methodAddLineItem.Invoke(__instance, new object[] { ___SectionTwoExpensesList, entry.Key, SimGameState.GetCBillString(entry.Value) });
            }));
            methodSetField.GetValue(new object[] { ___SectionTwoExpensesField, SimGameState.GetCBillString(ongoingMechWariorCosts) });
            methodSetField.GetValue(new object[] { ___EndOfQuarterFunds, SimGameState.GetCBillString(___simState.Funds + ___simState.GetExpenditures(false)) });
            methodSetField.GetValue(new object[] { ___QuarterOperatingExpenses, SimGameState.GetCBillString(___simState.GetExpenditures(false)) });
            methodSetField.GetValue(new object[] { ___CurrentFunds, SimGameState.GetCBillString(___simState.Funds) });
            int index = 0;

            foreach (KeyValuePair <EconomyScale, int> keyValuePair in ___simState.ExpenditureMoraleValue)
            {
                ___ExpenditureLvlBtnMoraleFields[index].SetText(string.Format("{0}", (object)keyValuePair.Value), (object[])Array.Empty <object>());
                ___ExpenditureLvlBtnCostFields[index].SetText(SimGameState.GetCBillString(___simState.GetExpenditures(keyValuePair.Key, false)), (object[])Array.Empty <object>());
                ++index;
            }

            return(false);
        }
Exemplo n.º 7
0
 static void Prefix(SGDifficultyIndicatorWidget __instance, ref int difficulty)
 {
     difficulty = Mathf.Min(10, difficulty);
 }