Ejemplo n.º 1
0
 protected static void AlertNeighbors(HexPosition position)
 {
     foreach (var enemy in position.Neighbors().Select(Board.ToState).Where(x => x.Friendliness == Friendliness.Hostile))
     {
         enemy.PendingAwaken = true;
     }
 }
Ejemplo n.º 2
0
    public IEnumerable <HexPosition> PossibleMoves()
    {
        switch (unit)
        {
        case UnitType.Sword:
            foreach (var option in position.Neighbors())
            {
                if (Board.Get[option].unit == UnitType.Empty)
                {
                    yield return(option);
                }
            }
            break;

        case UnitType.Arrow:
            foreach (var direction in ((HexDirection[])Enum.GetValues(typeof(HexDirection))))
            {
                foreach (var tile in position.Neighbors(direction))
                {
                    yield return(tile);
                }
            }
            break;

        case UnitType.Shield:
            foreach (var direction in ((HexDirection[])Enum.GetValues(typeof(HexDirection))))
            {
                var neighborPosition = position.Neighbor(direction);
                if (Board.Get[neighborPosition].Friendliness == Friendliness.Friendly)
                {
                    var leapPosition = neighborPosition.Neighbor(direction);
                    if (leapPosition.IsInBounds && Board.Get[leapPosition].unit == UnitType.Empty)
                    {
                        yield return(leapPosition);
                    }
                }
            }
            break;
        }
    }