private async Task AnimateNewAndFallingTilesAsync(List <MovedTile> newTiles, List <MovedTile> movedTiles) { Sequence seq = DOTween.Sequence(); foreach (MovedTile movedTile in newTiles) { TileRenderer tileRenderer = Instantiate(tileRendererPrefab, transform); tileRenderer.SetTile(movedTile.Tile, movedTile.From); tileDictionary[movedTile.Tile.ID] = tileRenderer; seq.Insert(0, tileRenderer.FallToCurrentPosition(movedTile.From)); } foreach (MovedTile movedTile in movedTiles) { Tile tile = movedTile.Tile; TileRenderer tileRenderer = tileDictionary[tile.ID]; seq.Insert(0, tileRenderer.FallToCurrentPosition(movedTile.From)); } await seq.Completion(); await new WaitForSeconds(postFallDelay); }
public void RenderInitial(Board board) { if (cancelAnimation) { return; } foreach (TileRenderer tileRenderer in tileDictionary.Values) { if (tileRenderer) { Destroy(tileRenderer.gameObject); } } tileDictionary.Clear(); this.board = board; width = board.Width; height = board.Height; for (int x = 0; x < width; ++x) { for (int y = 0; y < height; ++y) { Tile tile = board[x, y]; if (tile is null) { continue; } TileRenderer tileRenderer = Instantiate(tileRendererPrefab, transform); tileRenderer.SetTile(tile); tileDictionary[tile.ID] = tileRenderer; } } }