public static void SetDirectionMarker(AttackDirectionIndicator __instance, AttackDirection direction) { try { AttackDirectionIndicator me = __instance; if (me.Owner == null || me.Owner.IsDead || Combat == null) { return; } Color orig = me.ColorInactive; Color?[] activeColors = __instance.Owner?.team?.IsFriendly(Combat?.LocalPlayerTeam) ?? false ? FacingMarkerPlayerColors : FacingMarkerEnemyColors; object[] colors; if (direction != AttackDirection.ToProne && direction != AttackDirection.FromTop) { colors = new object[] { activeColors?[0] ?? orig, activeColors?[1] ?? orig, activeColors?[2] ?? orig, activeColors?[3] ?? orig }; if (direction != AttackDirection.None) { int dirIndex = Math.Max(0, Math.Min((int)direction - 1, LOSDirectionCount - 1)); colors[dirIndex] = FacingMarkerTargetColors?[dirIndex] ?? me.ColorActive; //Log( $"Direction {direction}, Index {dirIndex}, Color {colors[ dirIndex ]}" ); } } else { if (ActiveState == null) { return; } FiringPreviewManager.PreviewInfo info = ActiveState.FiringPreview.GetPreviewInfo(me.Owner); orig = info.HasLOF ? (FacingMarkerTargetColors?[4] ?? me.ColorActive) : (activeColors?[4] ?? me.ColorInactive); colors = new object[] { orig, orig, orig, orig }; } SetColors.Invoke(__instance, colors); } catch (Exception ex) { Error(ex); } }
public static void SaveDirectionMarker(AttackDirectionIndicator __instance) { try { if (OrigDirectionMarkerColors == null) { OrigDirectionMarkerColors = new Color[] { __instance.ColorInactive, __instance.ColorActive } } ; } catch (Exception ex) { Error(ex); } }