public override void OnRegister()
        {
            base.OnRegister();

            HoveredTileChangeSignal.AddListener(OnHighlightPositionChange);
            HoverTileEnableSignal.AddListener(OnHighlightEnable);
            HoverTileDisableSignal.AddListener(OnHighlightDisable);
            ClearHighlightSignal.AddListener(OnClearHighlight);
            MapHighlightSignal.AddListener(OnHighlight);
        }
Beispiel #2
0
        public override void Execute()
        {
            var map = Model.Map;

            if (map == null)
            {
                return;
            }

            if (Model.State == BattleUIState.SelectingMoveLocation)
            {
                var combatant   = Model.SelectedCombatant;
                var moveRange   = combatant.GetAttribute(Attribute.AttributeType.Move).Value;
                var destination = Position.GridCoordinates;
                var filter      = PathfindingUtils.GetCombatantTileFilter(combatant);
                var path        = map.FindPath(combatant.Position, destination, filter);
                if (path == null || path.Count - 1 > moveRange)
                {
                    PathUnavailableSignal.Dispatch();
                    Model.CurrentMovementPath = null;
                }
                else
                {
                    PathReadySignal.Dispatch(path);
                    Model.CurrentMovementPath = new MovementPath(path, Model.SelectedCombatant);
                }
            }
            else if (Model.State != BattleUIState.Fighting || Model.State != BattleUIState.CombatantMoving)
            {
                if (map.IsBlockedByEnvironment(Position.GridCoordinates))
                {
                    HoveredTileChangeSignal.Dispatch(new Vector2(float.MaxValue, float.MaxValue));
                }
                else
                {
                    Model.HoveredTile = Position.GridCoordinates;
                    HoveredTileChangeSignal.Dispatch(Position.WorldCoordinates);
                }
            }
        }