コード例 #1
0
    //Swap blocks to empty cells
    public void MoveBlocksToEmptyCell()
    {
        int emptyCount = 0;

        do
        {
            for (int i = 0; i < _config.fieldWidth; i++)
            {
                for (int j = 0; j < _config.fieldHeight; j++)
                {
                    if (_gamefield[i, j] == null)
                    {
                        if (j == 0) //  If top block  - getting new block from pool
                        {
                            _gamefield[i, j] = _pool.GetBlock();
                            _gamefield[i, j].block.transform.position = new Vector3(i * BLOCK_SIZE, j * BLOCK_SIZE);
                            GetColor(_gamefield[i, j], i, j);
                            _gamefield[i, j].block.SetActive(true);
                        }
                        else // Swaping blocks
                        {
                            SwapBlocks(i, j, false, -1);
                        }
                    }
                }
            }

            emptyCount = GetEmptyCount(true);
        } while (emptyCount != 0);
    }
コード例 #2
0
    //Init
    public GameField(Config config, IPool pool)
    {
        _config = config;
        _pool   = pool;

        //Generate random colors
        _colors = new Color[config.countOfColors];
        GenerateColors(config.countOfColors);

        //generate base field structure and checking colors
        _gamefield = new Block[config.fieldWidth, config.fieldHeight];
        for (int i = 0; i < config.fieldWidth; i++)
        {
            for (int j = 0; j < config.fieldHeight; j++)
            {
                _gamefield[i, j] = _pool.GetBlock();
                _gamefield[i, j].block.transform.position = new Vector3(i * BLOCK_SIZE, -j * BLOCK_SIZE);
                GetColor(_gamefield[i, j], i, j);
                _gamefield[i, j].block.SetActive(true);
            }
        }

        //Set camera to center based on blocks count
        Camera.main.transform.position = new Vector3(_gamefield[(int)config.fieldWidth / 2, (int)config.fieldHeight / 2].block.transform.position.x, _gamefield[(int)config.fieldWidth / 2, (int)config.fieldHeight / 2].block.transform.position.y, Camera.main.transform.position.z);
        Camera.main.fieldOfView        = config.fieldWidth * 90 / 10;
    }