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); } } }
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); }
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. }