Пример #1
0
        public override void CombatStartsOnce()
        {
            Type SlotType = typeof(CombatHUDWeaponSlot), PanelType = typeof(CombatHUDWeaponPanel);

            if (Settings.SaturationOfLoadout != 0 || Settings.ShowDamageInLoadout || Settings.ShowMeleeDamageInLoadout || Settings.ShowAlphaDamageInLoadout != null)
            {
                Patch(typeof(CombatHUDTargetingComputer), "RefreshWeaponList", null, "EnhanceWeaponLoadout");
            }

            if (Settings.ShowBaseHitchance)
            {
                Patch(SlotType, "UpdateToolTipsFiring", typeof(ICombatant), "ShowBaseHitChance", null);
                Patch(SlotType, "UpdateToolTipsMelee", typeof(ICombatant), "ShowBaseMeleeChance", null);
            }
            if (Settings.ShowNeutralRangeInBreakdown)
            {
                rangedPenalty = ModifierList.GetRangedModifierFactor("range");
                Patch(SlotType, "UpdateToolTipsFiring", typeof(ICombatant), "ShowNeutralRange", null);
            }
            if (Settings.ShowWeaponProp || Settings.WeaponRangeFormat != null)
            {
                Patch(SlotType, "GenerateToolTipStrings", null, "UpdateWeaponTooltip");
            }

            if (Settings.ShowReducedWeaponDamage || Settings.CalloutWeaponStability)
            {
                Patch(SlotType, "RefreshDisplayedWeapon", null, "UpdateWeaponDamage");
            }
            if (Settings.ShowTotalWeaponDamage)
            {
                Patch(PanelType, "ShowWeaponsUpTo", null, "ShowTotalDamageSlot");
                Patch(PanelType, "RefreshDisplayedWeapons", "ResetTotalWeaponDamage", "ShowTotalWeaponDamage");
                Patch(SlotType, "RefreshHighlighted", "BypassTotalSlotHighlight", null);
            }
            if (Settings.ShowReducedWeaponDamage || Settings.ShowTotalWeaponDamage)
            {
                // Update damage numbers (and multi-target highlights) _after_ all slots are in a correct state.
                Patch(typeof(SelectionStateFireMulti), "SetTargetedCombatant", null, "RefreshTotalDamage");
                Patch(SlotType, "OnPointerUp", null, "RefreshTotalDamage");
            }
            if (Settings.CalloutWeaponStability)
            {
                HeauUpDisplay.HookCalloutToggle(ToggleStabilityDamage);
            }

            if (HasMod("com.joelmeador.WeaponRealizer", "WeaponRealizer.Core"))
            {
                TryRun(ModLog, InitWeaponRealizerBridge);
            }
        }
        public override void CombatStartsOnce()
        {
            if (Settings.ShowNumericInfo)
            {
                Patch(typeof(CombatHUDActorDetailsDisplay), "RefreshInfo", null, "ShowNumericInfo");
                Patch(typeof(CombatHUDActorInfo), "RefreshAllInfo", "RecordTarget", "ShowBuildingInfo");
                Patch(typeof(CombatHUDActorInfo), "RefreshPredictedHeatInfo", null, "RecordRefresh");
                Patch(typeof(CombatHUDActorInfo), "RefreshPredictedStabilityInfo", null, "RecordRefresh");
                // Force heat/stab number refresh
                Patch(typeof(CombatHUDMechTray), "Update", null, "RefreshActorInfo");
                // Force move/distance number refresh
                Patch(typeof(SelectionStateMove), "ProcessMousePos", null, "RefreshMoveAndDist");
                Patch(typeof(SelectionStateJump), "ProcessMousePos", null, "RefreshMoveAndDist");
                HeauUpDisplay.HookCalloutToggle(RefreshTargetInfo);
            }
            if (Settings.FixHeatPreview)
            {
                Patch(typeof(Mech), "get_AdjustedHeatsinkCapacity", null, "CorrectProjectedHeat");
            }

            if (Settings.ShowAmmoInTooltip || Settings.ShowEnemyAmmoInTooltip)
            {
                MechTrayArmorHoverToolTipProp = typeof(CombatHUDMechTrayArmorHover).GetProperty("ToolTip", NonPublic | Instance);
                if (MechTrayArmorHoverToolTipProp == null)
                {
                    Warn("Cannot access CombatHUDMechTrayArmorHover.ToolTip, ammo not displayed in paperdoll tooltip.");
                }
                else
                {
                    Patch(typeof(CombatHUDMechTrayArmorHover), "setToolTipInfo", new Type[] { typeof(Mech), typeof(ArmorLocation) }, "OverridePaperDollTooltip", null);
                }
            }

            if (Settings.ShortPilotHint != null)
            {
                PilotStatus = new Dictionary <CombatHUDMWStatus, Pilot>(4);
                Patch(typeof(CombatHUDMWStatus), "OnPortraitRightClicked", null, "RefreshPilotHint");
                Patch(typeof(CombatHUDMWStatus), "ForceUnexpand", null, "RefreshPilotHint");
                Patch(typeof(CombatHUDMWStatus), "RefreshPilot", null, "ReplacePilotHint");
            }

            if (Settings.MechTrayGreyActedPilot)
            {
                Patch(typeof(CombatHUDPortrait), "RefreshDisplayedActor", null, "ColourPilotNames");
            }
        }