Example #1
0
    private CollapseTiles CreateNewTileInSpecificColumns(IEnumerable<int> columnsWithMissingTile)
    {
        CollapseTiles newTileInfo = new CollapseTiles();

        foreach (int column in columnsWithMissingTile) {
            var emptyItems = board.GetAllEmptyInColumn(column);
            foreach (var item in emptyItems) {
                var go = randomTile();
                GameObject newTile = Instantiate(go, SpawnPositions[column], Quaternion.identity) as GameObject;

                newTile.GetComponent<TileInfo>().assign(go.GetComponent<TileInfo>().type, item.row, item.column);

                if (Constants.rows - item.row > newTileInfo.maxDistance) {
                    newTileInfo.maxDistance = Constants.rows - item.row;
                }

                board[item.row, item.column] = newTile;
                NetworkServer.Spawn(newTile);
                newTileInfo.addTile(newTile);
            }
        }
        return newTileInfo;
    }
Example #2
0
    public CollapseTiles Collapse(IEnumerable<int> columns)
    {
        CollapseTiles collapseInfo = new CollapseTiles();

        ///search in every column
        foreach (var column in columns) {
            //begin from bottom row
            for (int row = 0; row < Constants.rows - 1; row++) {
                //if you find a null item
                if (grid[row, column] == null) {
                    //start searching for the first non-null
                    for (int row2 = row + 1; row2 < Constants.rows; row2++) {
                        //if you find one, bring it down (i.e. replace it with the null you found)
                        if (grid[row2, column] != null) {
                            grid[row, column] = grid[row2, column];
                            grid[row2, column] = null;

                            //calculate the biggest distance
                            if (row2 - row > collapseInfo.maxDistance)
                                collapseInfo.maxDistance = row2 - row;

                            //assign new row and column (name does not change)
                            grid[row, column].GetComponent<TileInfo>().row = row;
                            grid[row, column].GetComponent<TileInfo>().column = column;

                            collapseInfo.addTile(grid[row, column]);
                            break;
                        }
                    }
                }
            }
        }

        return collapseInfo;
    }