Esempio n. 1
0
        public static void Postfix(VisRangeIndicator __instance)
        {
            Mod.Log.Trace?.Write("VRI:I - invoked!");
            Transform projectorTransform = __instance.gameObject.transform.Find("VisRangeProjector");

            if (projectorTransform != null)
            {
                VisRangeState.VisRangeProjector = projectorTransform.gameObject;
            }
            else
            {
                Mod.Log.Warn?.Write("FAILED TO FIND VisRangeProjector transform!");
            }
        }
Esempio n. 2
0
        // Records actor selected events to allow id of the last player unit a player selected
        public static void OnActorSelectedMessage(MessageCenterMessage message)
        {
            ActorSelectedMessage actorSelectedMessage = message as ActorSelectedMessage;
            AbstractActor        actor = Combat.FindActorByGUID(actorSelectedMessage.affectedObjectGuid);

            if (actor.team.IsLocalPlayer)
            {
                Mod.Log.Info?.Write($"Updating last activated actor to: ({CombatantUtils.Label(actor)})");
                ModState.LastPlayerActorActivated = actor;

                EWState actorState = new EWState(actor);
                if (actorState.HasNightVision() && ModState.GetMapConfig().isDark)
                {
                    Mod.Log.Info?.Write($"Enabling night vision mode.");
                    VfxHelper.EnableNightVisionEffect(actor);
                }
                else
                {
                    if (ModState.IsNightVisionMode)
                    {
                        VfxHelper.DisableNightVisionEffect();
                    }
                }

                // Refresh the unit's vision
                VfxHelper.RedrawFogOfWar(actor);
                actor.VisibilityCache.RebuildCache(actor.Combat.GetAllImporantCombatants());
                CombatHUDHelper.ForceNameRefresh(actor.Combat);

                // Hack - turn on Vision indicator?
                VisRangeIndicator visRangeIndicator = VisRangeIndicator.Instance;
                visRangeIndicator.SetState(VisRangeIndicator.VisRangeIndicatorState.On);

                // Refresh any CombatHUDMarkDisplays
                foreach (CombatHUDMarkDisplay chudMD in ModState.MarkContainerRefs.Keys)
                {
                    chudMD.RefreshInfo();
                }
            }
        }
Esempio n. 3
0
 public static void Postfix(VisRangeIndicator __instance)
 {
     Mod.Log.Trace?.Write("VRI:OD - invoked!");
     VisRangeState.VisRangeProjector = null;
 }
Esempio n. 4
0
 public static void Postfix(VisRangeIndicator __instance, bool visible)
 {
     Mod.Log.Trace?.Write("VRI:SDV - invoked!");
     VisRangeState.VisRangeProjector.SetActive(visible);
 }