static bool Prefix(PreGameCareerModeSettingsTotalScoreDescAndBar __instance, float newMod)
        {
            bool         flag       = false;
            SimGameState simulation = UnityGameInstance.BattleTechGame.Simulation;

            if (simulation != null && simulation.DifficultySettings.GetRawCareerModifier() < newMod)
            {
                flag = true;
            }

            var absDiffRange = Mathf.Abs(ModState.MinDiffModifier) + ModState.MaxDiffModifier;

            var newModShiftedAbs = newMod + Mathf.Abs(ModState.MinDiffModifier);

            __instance.ShowAttemptedToRaiseDifficultyWarningIcon(flag);

            float fillAmount = newModShiftedAbs / absDiffRange;

            __instance.DifficultyFillBar.fillAmount = fillAmount;
            __instance.TotalScoreModifierValue.SetText("{0:n2}", new object[]
            {
                newMod
            });
            return(false);
        }
        static void Postfix(SimGameDifficultySettingsModule __instance, PreGameCareerModeSettingsTotalScoreDescAndBar ___difficultyBarAndMod)
        {
            if (__instance != null && ___difficultyBarAndMod != null)
            {
                ___difficultyBarAndMod.TotalScoreModifierLabel.SetText(
                    new Text(Mod.LocalizedText.SimGameDifficultyStrings[ModText.SGDS_Desc], new object[] { })
                    );

                GameObject difficultyTotalGO = __instance.gameObject.FindFirstChildNamed("OBJ_difficultyTotal");
                if (difficultyTotalGO != null)
                {
                    // Find difTotal-text
                    GameObject diffTotalGO = difficultyTotalGO.FindFirstChildNamed("difTotal-text");
                    if (diffTotalGO != null)
                    {
                        // Use the label here
                        LocalizableText localText = diffTotalGO.GetComponent <LocalizableText>();
                        if (localText != null)
                        {
                            Mod.Log.Info?.Write("UPDATED LABEL");
                            localText.SetText(Mod.LocalizedText.SimGameDifficultyStrings[ModText.SGDS_Label]);
                        }
                        else
                        {
                            Mod.Log.Warn?.Write("FAILED TO FIND LocalizableText COMP FOR `diffTotal-text`");
                        }
                    }
                    else
                    {
                        Mod.Log.Warn?.Write("FAILED TO FIND `diffTotal-text` CHILD OF `OBJ_difficultyTotal`!");
                    }
                }
            }
        }
        static bool Prefix(SimGameDifficultySettingsModule __instance, SimGameDifficulty ___cachedDiff,
                           PreGameCareerModeSettingsTotalScoreDescAndBar ___difficultyBarAndMod)
        {
            float num    = __instance.CalculateRawScoreMod();
            bool  active = __instance.ShouldShowDifficultyData();

            ___difficultyBarAndMod.gameObject.SetActive(active);
            ___difficultyBarAndMod.RefreshInfo(num);

            if (__instance.CanModifyStartSettings)
            {
                var atlasSkull      = GameObject.Find("atlasSkull-image");
                var atlasImage      = atlasSkull.gameObject.GetComponent <Image>();
                var currentModifier = Mathf.Abs(Mathf.Max(0, num) - ModState.MaxDiffModifier);
                var scaledModifier  = Mathf.FloorToInt(currentModifier * 255 / ModState.MaxDiffModifier);
                Mod.Log.Info?.Write($"COLOR SCORE MOD THING: real score {num} vs current {currentModifier} vs scaled {scaledModifier}");
                Mod.Log.Info?.Write($"From UPDATEDIFFICULTYSCOREBAR: Atlas values: {atlasImage.color.r}, {atlasImage.color.g}, {atlasImage.color.b}, {atlasImage.color.a}");
                atlasImage.color = new Color32(255, (byte)scaledModifier, (byte)scaledModifier, 255);;
            }

            return(false);
        }
        static void Prefix(SimGameDifficultySettingsModule __instance, SimGameDifficulty ___cachedDiff, PreGameCareerModeSettingsTotalScoreDescAndBar ___difficultyBarAndMod)
        {
            if (ModState.HaveDiffSettingsInitiated)
            {
                return;
            }

            ___cachedDiff = UnityGameInstance.BattleTechGame.DifficultySettings;

            if (ModState.MaxDiffModifier == 0f && ModState.MinDiffModifier == 0f)
            {
                Helper.DifficultyHelper.GetDifficultyModifierRange(___cachedDiff);
            }

            if (__instance.CanModifyStartSettings)
            {
                var atlasSkull      = GameObject.Find("atlasSkull-image");
                var atlasImage      = atlasSkull.gameObject.GetComponent <Image>();
                var currentModifier = Mathf.Abs(Mathf.Max(0, __instance.CalculateRawScoreMod()) - ModState.MaxDiffModifier);
                var scaledModifier  = Mathf.FloorToInt(currentModifier * 255 / ModState.MaxDiffModifier);
                atlasImage.color = new Color32(255, (byte)scaledModifier, (byte)scaledModifier, 255);
                Mod.Log.Info?.Write($"From INITSETTINGS: Atlas values: {atlasImage.color.r}, {atlasImage.color.g}, {atlasImage.color.b}, {atlasImage.color.a}");
            }

            var settings = ___cachedDiff.GetSettings();

            settings.Sort(delegate(SimGameDifficulty.DifficultySetting a, SimGameDifficulty.DifficultySetting b)
            {
                if (a.UIOrder != b.UIOrder)
                {
                    return(a.UIOrder.CompareTo(b.UIOrder));
                }
                return(a.Name.CompareTo(b.Name));
            });
            var startCount = -5;

            foreach (var setting in settings)
            {
                if (setting.Visible && setting.StartOnly && setting.Enabled)
                {
                    startCount += 1;
                }
            }

            var startYAdjust = startCount / 2;

            var regularDiffs = GameObject.Find("difficulty_scroll");
            var startOnly    = GameObject.Find("OBJ_startOnly_settings");
            var startRect    = startOnly.GetComponent <RectTransform>();


            if (startYAdjust > 0)
            {
                if (__instance.CanModifyStartSettings)
                {
                    var barRect       = ___difficultyBarAndMod.gameObject.GetComponent <RectTransform>();
                    var currentbarPos = barRect.position;
                    currentbarPos.x  = 700f;
                    currentbarPos.y  = 400f;
                    barRect.position = currentbarPos;
                }
                else
                {
                    var barRect       = ___difficultyBarAndMod.gameObject.GetComponent <RectTransform>();
                    var currentbarPos = barRect.position;
                    currentbarPos.y  = 820f;
                    barRect.position = currentbarPos;
                }


                var currentStartPosition = startRect.position;
                currentStartPosition.y += Mod.Config.Misc.DifficultyUIScaling.StartOnlyPositionY;
                startRect.position      = currentStartPosition;

                var currentStartSizeDelta = startRect.sizeDelta;

                currentStartSizeDelta.y += startYAdjust * Mod.Config.Misc.DifficultyUIScaling.StartOnlyScalar;
                startRect.sizeDelta      = currentStartSizeDelta;

                var regularRect         = regularDiffs.GetComponent <RectTransform>();
                var currentRegSizeDelta = regularRect.sizeDelta;
                currentRegSizeDelta.y -= startYAdjust - 1 * Mod.Config.Misc.DifficultyUIScaling.StartOnlyScalar;
                regularRect.sizeDelta  = currentRegSizeDelta;

                var currentRegPosition = regularRect.position;
                currentRegPosition.y += Mod.Config.Misc.DifficultyUIScaling.RegularPositionY;
                currentRegPosition.y -= (startYAdjust * Mod.Config.Misc.DifficultyUIScaling.StartOnlyPositionY);
                regularRect.position  = currentRegPosition;
            }

            var startTransformLayoutGroup = startOnly.GetComponent <RectTransform>().GetComponent <GridLayoutGroup>();

            startTransformLayoutGroup.childAlignment = TextAnchor.UpperCenter;
            startTransformLayoutGroup.cellSize       = new Vector2(375, 40);
            startTransformLayoutGroup.spacing        = new Vector2(25, 10);
        }