public void MoveSnakeParts(LinkedList <SnakePart> snakeParts, MapManager mm) { LinkedListNode <SnakePart> snakeHead = snakeParts.Last; Tile destinationTile = mm.GetTileInFrontOfSnakePart(snakeHead.Value); Tile currentTile = mm.GetTileWithItem(snakeParts.First.Value); mm.PlaceItemOnTile(currentTile, null); for (LinkedListNode <SnakePart> snakePartNode = snakeParts.First; snakePartNode != null;) { LinkedListNode <SnakePart> nextSnakePartNode = snakePartNode.Next; if (nextSnakePartNode != null) { // Move snakePart forward to take the tile of the next snakePart MoveSnakePartToTileOfNextSnakePart(mm, snakePartNode.Value, nextSnakePartNode.Value); } else { //Moves snakehead to destination MoveSnakeHeadToDestinationTile(mm, destinationTile, snakePartNode.Value); } snakePartNode = nextSnakePartNode; } if (ShouldGrow) { GrowSnake(mm); } HandleCollision(mm.GetTileInFrontOfSnakePart(snakeHead.Value)); }
void MoveSnakeHeadToDestinationTile(MapManager mm, Tile destinationTile, SnakePart snakeHead) { if (destinationTile == null) { throw new Exception("destinationTile is null"); } mm.PlaceItemOnTile(destinationTile, snakeHead); }
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 Food SpawnFoodOnTile(MapManager mm) { int range = random.Next(foodies.Count()); Food foodie = foodies.ElementAt(range); mm.PlaceItemOnTile(mm.GetRandomTile(), foodie); foodie.MIsEaten = false; return(foodie); }
void MoveSnakePartToTileOfNextSnakePart(MapManager mm, SnakePart snakePart, SnakePart nextSnakePart) { Tile nextTile = mm.GetTileWithItem(nextSnakePart); if (nextTile == null) { throw new Exception("nextTile is null"); } mm.PlaceItemOnTile(nextTile, snakePart); snakePart.SetSnakePartDirection(nextSnakePart.GetSnakeDirection().GetCurrentDirection()); }
void GrowSnake(MapManager mm) { snake.AddSnakePart(); mm.PlaceItemOnTile(mm.GetTileBehindSnakePart(snake.GetSnakePart(1)), snake.GetSnakePart(0)); ShouldGrow = false; }