private void LoadSnakes(TimeTravelData timeTravelData) { Debug.Log("Time travel Load Snakes"); foreach (var snake in timeTravelData.snakes) { List <SnakeBlock> newThisSnake = new List <SnakeBlock>(); foreach (SnakeTailData snakeTail in snake.Value) { GameObject newSnakeTailGO = Instantiate(snakePrefabsSettings.TailBlockPrefab, snakeTail.parent); SnakeBlock newSnakeTail = newSnakeTailGO.GetComponent <SnakeBlock>(); newSnakeTail.currentGridCell = snakeTail.entityCell; newSnakeTail.BlockType = snakeTail.type; newSnakeTail.IsHead = snakeTail.isHead; if (newSnakeTail.IsHead) { newSnakeTail.spriteRenderer.sprite = newSnakeTail.headSprite; snake.Key.CurrentHead = newSnakeTail; } newSnakeTail.spriteRenderer.color = snakeTail.color; newThisSnake.Add(newSnakeTail); } snake.Key.ThisSnake = newThisSnake; } }
private void LoadFoods(TimeTravelData timeTravelData) { foreach (FoodData food in timeTravelData.foods) { GameObject newFoodGO = Instantiate(food.prefab, food.parent); Entity newFood = newFoodGO.GetComponent <Entity>(); newFood.currentGridCell = food.entityCell; } }
private void RemoveOldTimeTravelData(Snake snake) { TimeTravelData thisTimeTravel = null; foreach (TimeTravelData timeTravelData in snakesTimeTravelData) { if (timeTravelData.mainSnake == snake) { thisTimeTravel = timeTravelData; } } snakesTimeTravelData.Remove(thisTimeTravel); }
//When a snake gets a time travel block, it will send an event to time //travel handeler, in order to record the grid state. public void OnSnakeGetTimeTravelBlock(GameObject snakeGO) { Snake snake = snakeGO.GetComponent <Snake>(); RemoveOldTimeTravelData(snake); TimeTravelData newTimeTravelData = new TimeTravelData(timeTravelId, snake); snakesTimeTravelData.Add(newTimeTravelData); OnRequestReferences.Raise(timeTravelId); timeTravelId++; }
public void OnStartTimeTravel(GameObject snakeGO) { Snake snake = snakeGO.GetComponent <Snake>(); TimeTravelData thisTimeTravel = null; OnTimeTravel.Raise(); foreach (TimeTravelData timeTravelData in snakesTimeTravelData) { if (timeTravelData.mainSnake == snake) { thisTimeTravel = timeTravelData; LoadSnakes(timeTravelData); LoadFoods(timeTravelData); OnTimeTravelComplete.Raise(); } } snakesTimeTravelData.Remove(thisTimeTravel); }