public static void Postfix(CombatHUDStatusPanel __instance, List <CombatHUDStatusIndicator> ___Buffs, List <CombatHUDStatusIndicator> ___Debuffs)
        {
            Mod.Log.Trace?.Write("CHUDSP:RDC - entered.");
            if (__instance != null && __instance.DisplayedCombatant != null)
            {
                AbstractActor target = __instance.DisplayedCombatant as AbstractActor;
                // We can receive a building here, so
                if (target != null)
                {
                    if (target.Combat.HostilityMatrix.IsLocalPlayerEnemy(target.team))
                    {
                        SensorScanType scanType = SensorLockHelper.CalculateSharedLock(target, ModState.LastPlayerActorActivated);

                        // Hide the buffs and debuffs if the current scanType is less than allInfo
                        if (scanType < SensorScanType.AllInformation)
                        {
                            //// Hide the buffs and debuffs
                            ___Buffs.ForEach(si => si.gameObject.SetActive(false));
                            ___Debuffs.ForEach(si => si.gameObject.SetActive(false));
                        }
                    }

                    // Calculate stealth pips
                    Traverse stealthDisplayT = Traverse.Create(__instance).Field("stealthDisplay");
                    CombatHUDStealthBarPips stealthDisplay = stealthDisplayT.GetValue <CombatHUDStealthBarPips>();
                    VfxHelper.CalculateMimeticPips(stealthDisplay, target);
                }
            }
        }
示例#2
0
        public static void CalculateMimeticPips(CombatHUDStealthBarPips stealthDisplay, AbstractActor actor, float distanceMoved)
        {
            EWState actorState = new EWState(actor);

            Mod.Log.Trace?.Write($"Calculating mimeticPips for Actor: {CombatantUtils.Label(actor)}");

            int stepsMoved = (int)Math.Ceiling(distanceMoved / 30f);

            Mod.Log.Trace?.Write($"  stepsMoved: {stepsMoved} = distanceMoved: {distanceMoved} / 30");

            // Update # of pips
            int maxPips     = actorState.MaxMimeticPips();
            int currentPips = actorState.CurrentMimeticPips(distanceMoved);

            stealthDisplay.ShowNewActorStealth(currentPips, maxPips);

            // Change colors to reflect maxmimums
            Traverse       pipsT = Traverse.Create(stealthDisplay).Property("Pips");
            List <Graphic> pips  = pipsT.GetValue <List <Graphic> >();

            for (int i = 0; i < pips.Count; i++)
            {
                Graphic g = pips[i];
                if (g.isActiveAndEnabled)
                {
                    //Color pipColor = Color.white;
                    Color pipColor = new Color(50f, 206f, 230f);
                    UIHelpers.SetImageColor(g, pipColor);
                }
            }
        }
            public static void Postfix(CombatHUDStealthBarPips __instance, float current, float projected)
            {
                Mod.Log.Trace?.Write("CHUDSBP:SV entered");

                Mod.Log.Trace?.Write($"StealthBarPips incoming count is: {current} with projected: {projected}");

                Traverse  HUDT = Traverse.Create(__instance).Property("HUD");
                CombatHUD HUD  = HUDT.GetValue <CombatHUD>();

                Traverse      actorT        = Traverse.Create(HUD).Field("selectedUnit");
                AbstractActor selectedActor = actorT.GetValue <AbstractActor>();

                Mod.Log.Trace?.Write($"  selectedActor: ({CombatantUtils.Label(selectedActor)})");

                Traverse floorCurrentT = Traverse.Create(__instance).Field("floorCurrent");
                int      floorCurrent  = floorCurrentT.GetValue <int>();

                Traverse floorLockedT = Traverse.Create(__instance).Field("floorLocked");
                int      floorLocked  = floorLockedT.GetValue <int>();

                Traverse floorProjectedT = Traverse.Create(__instance).Field("floorProjected");
                int      floorProjected  = floorProjectedT.GetValue <int>();

                Traverse remainderT = Traverse.Create(__instance).Field("remainder");
                float    remainder  = remainderT.GetValue <float>();

                Mod.Log.Trace?.Write($"  floorCurrent: {floorCurrent} floorLocked: {floorLocked} floorProjected: {floorProjected} remainder: {remainder}");

                Traverse       pipsT = Traverse.Create(__instance).Property("Pips");
                List <Graphic> pips  = pipsT.GetValue <List <Graphic> >();

                for (int i = 0; i < pips.Count; i++)
                {
                    Mod.Log.Trace?.Write($"    -- pips graphic: {i} isEnabled: {pips[i].IsActive()}");
                }
            }
        public static void Postfix(CombatHUDStatusPanel __instance, AbstractActor target, float previewStealth, CombatHUDStealthBarPips ___stealthDisplay)
        {
            if (___stealthDisplay == null)
            {
                return;
            }
            Mod.Log.Trace?.Write("CHUDSP:SSI:float - entered.");

            VfxHelper.CalculateMimeticPips(___stealthDisplay, target);
        }
示例#5
0
        public static void CalculateMimeticPips(CombatHUDStealthBarPips stealthDisplay, AbstractActor actor)
        {
            float distanceMoved = Vector3.Distance(actor.PreviousPosition, actor.CurrentPosition);

            CalculateMimeticPips(stealthDisplay, actor, distanceMoved);
        }
 private static void UpdateStealNoop(CombatHUDStealthBarPips StealthDisplay, float current, float projected, bool force)
 {
     // no op.
 }