/// <summary>
        /// Processes user input.
        /// </summary>
        public override PlayerState ProcessInput(Board board, Point mouse)
        {
            base.ProcessInput(board, mouse);

            templateAffectedTiles = new List <Tile>();
            validCast             = false;

            if (MouseInfo.RightMousePressed)
            {
                return(new UnselectedPlayerState(player));
            }

            if (HighlightedTile != null)
            {
                List <Position> tileCoords = TemplateService.GetAffectedTileCoordinates(HighlightedTile.BoardPosition, SelectedAbility.Template);
                templateAffectedTiles = board.GetTiles(tileCoords);
            }

            validCast = TargetValidationService.Validate(HighlightedTile, SelectedAbility.TargetType, player.PowerCaster);

            if (MouseInfo.LeftMousePressed)
            {
                SelectedAbility.Execute(HighlightedTile, templateAffectedTiles, player.PowerCaster);
            }

            return(this);
        }
Exemple #2
0
        /// <summary>
        /// Processes user input.
        /// </summary>
        public override PlayerState ProcessInput(Board board, Point mouse)
        {
            PlayerState result = base.ProcessInput(board, mouse);

            if (result != null)
            {
                return(result);
            }

            abilityPath           = null;
            templateAffectedTiles = new List <Tile>();
            validTarget           = false;

            if (MouseInfo.RightMousePressed)
            {
                return(new SelectedPlayerState(player, SelectedUnit));
            }

            if (HighlightedTile != null)
            {
                abilityPath = board.GetAbilityPath(SelectedUnit, HighlightedTile);

                List <Position> tileCoords = TemplateService.GetAffectedTileCoordinates(HighlightedTile.BoardPosition, SelectedAbility.Template);
                templateAffectedTiles = board.GetTiles(tileCoords);
            }

            validTarget = IsValidTarget();

            if (MouseInfo.LeftMousePressed)
            {
                if (!IsValidTarget())
                {
                    eventManager.Notify(new UserAlertEvent("You cannot cast that there!"));
                }
                else if (!IsTargetInRange())
                {
                    eventManager.Notify(new UserAlertEvent("Target is not in range!"));
                }
                else
                {
                    SelectedAbility.Execute(HighlightedTile, templateAffectedTiles, SelectedUnit);
                }
            }

            return(this);
        }