Example #1
0
        private List <MovementDirectionUtilities.MovementDirection> FindSuitableDirections(
            Vector2Int position)
        {
            var movementDirections = EnumUtilities.GetValues <MovementDirectionUtilities.MovementDirection>();

            movementDirections.Remove(MovementDirectionUtilities.MovementDirection.None);
            var suitableDirections = new List <MovementDirectionUtilities.MovementDirection>();

            foreach (var diff in locations.Select(l => l - position))
            {
                foreach (var movementDirection in from movementDirection in movementDirections
                         where !suitableDirections.Contains(movementDirection)
                         let possible = CheckLocation(diff, movementDirection)
                                        where possible
                                        select movementDirection)
                {
                    suitableDirections.Add(movementDirection);
                    if (suitableDirections.Count == 4)
                    {
                        return(suitableDirections);
                    }
                }
            }

            return(suitableDirections);

            bool CheckLocation(Vector2Int difference, MovementDirectionUtilities.MovementDirection movementDirection)
            {
                return(difference == MovementDirectionUtilities.VectorFromDirection(movementDirection));
            }
        }
Example #2
0
    public (GameTile.CantMoveReason, Unit) CanWalkOnTileInDirection(Vector2Int position,
                                                                    MovementDirectionUtilities.MovementDirection direction)
    {
        var endPosition = position + MovementDirectionUtilities.VectorFromDirection(direction);

        return(CanWalk(endPosition));
    }
Example #3
0
    protected Coroutine Move(MovementDirectionUtilities.MovementDirection movementDirection, bool force = false)
    {
        if (movementDirection != MovementDirectionUtilities.MovementDirection.None)
        {
            return(Move(currentPosition + MovementDirectionUtilities.VectorFromDirection(movementDirection), force));
        }

        return(null);
    }
Example #4
0
    public GameTile GetTileInDirection(Vector2Int position, MovementDirectionUtilities.MovementDirection direction)
    {
        var vectorFromDirection = MovementDirectionUtilities.VectorFromDirection(direction);

        return(GameSessionManager.Instance.currentSceneObjects.currentWorld.GetTile(position + vectorFromDirection));
    }