protected static void AlertNeighbors(HexPosition position) { foreach (var enemy in position.Neighbors().Select(Board.ToState).Where(x => x.Friendliness == Friendliness.Hostile)) { enemy.PendingAwaken = true; } }
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; } }