private static Boolean OnHoverPrefix(Action action, HoverData hoverData, GameModeProcessor __instance)
        {
            if (!(__instance is PeaceModeProcessor))
            {
                return(HarmonyPrefix.CallOriginal);
            }

            Boolean flag = action.Data.IsPossible();

            if (flag)
            {
                if (action.Ability != null)
                {
                    hoverData.CursorType = action.Data.GetCursor(action.BlockReasons);
                }
                else if (action.Tool != null)
                {
                    hoverData.CursorType = CursorType.Variants;
                }
            }

            SetSilhouette(hoverData, action.Data);

            if (action.TargetEntity != null)
            {
                SetBadge(hoverData, action.TargetEntity);
                if (flag && action.Ability != null)
                {
                    hoverData.AddCommand(ActionTooltipBuilder.GetBanner(action, RestrictionStrategy.DefaultTooltip));
                }
            }

            return(HarmonyPrefix.SkipOriginal);
        }
 private static void SetBadge(HoverData hoverData, Entity targetEntity)
 {
     if (targetEntity != null && targetEntity.SubclassIndex == TypeIndex.Character)
     {
         hoverData.AddCommand(new BadgeCommand(targetEntity));
     }
 }
        public void Hover()
        {
            foreach (var targetEntity in GetEntities())
            {
                if (!targetEntity.HasActor())
                {
                    continue;
                }

                GameObject gameObject = targetEntity.Actor.gameObject;

                if (_actionData.Ability.Is <AttackAbility>())
                {
                    _hoverData.AddCommand(new SilhouetteCommand(gameObject, SilhouetteType.Enemy));
                    continue;
                }

                if (targetEntity.Is <Character>())
                {
                    _hoverData.AddCommand(new SilhouetteCommand(gameObject, SilhouetteType.Ally));
                    continue;
                }

                ContainerModule container = targetEntity.GetModule <ContainerModule>();
                if (container != null)
                {
                    HighlightContainer(container);
                    continue;
                }

                if (TryHighlightDoor(targetEntity))
                {
                    continue;
                }

                _hoverData.AddCommand(new SilhouetteCommand(gameObject, SilhouetteType.PointOfInterest));
            }
        }