public void AddSnakeToMap(MapManager mm) { SnakePart snakeTail = snakeParts.First(); mm.PlaceItemOnTile(mm.GetCenterTile(), snakeTail); for (LinkedListNode <SnakePart> currentNode = snakeParts.First; currentNode != null;) { LinkedListNode <SnakePart> nextNode = currentNode.Next; if (nextNode != null) { Tile tile = mm.GetTileInFrontOfSnakePart(currentNode.Value); mm.PlaceItemOnTile(tile, nextNode.Value); } currentNode = nextNode; } }
public Tile GetTileInFrontOfSnakePart(SnakePart snakePart) { Direction partDirection = snakePart.GetSnakeDirection().GetCurrentDirection(); switch (partDirection) { case Direction.Up: return(FindUpwardsNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Down: return(FindDownwardsNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Left: return(FindLeftNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Right: return(FindRightNeighbourToTile(GetTileWithItem(snakePart))); default: return(FindRightNeighbourToTile(GetTileWithItem(snakePart))); } }
public Tile GetTileBehindSnakePart(SnakePart snakePart) { Direction oppositeOfPartDirection = snakePart.GetSnakeDirection().GetOppositeDirection(); switch (oppositeOfPartDirection) { case Direction.Up: return(FindUpwardsNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Down: return(FindDownwardsNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Left: return(FindLeftNeighbourToTile(GetTileWithItem(snakePart))); case Direction.Right: return(FindRightNeighbourToTile(GetTileWithItem(snakePart))); default: return(FindRightNeighbourToTile(GetTileWithItem(snakePart))); } }