Exemplo n.º 1
0
        public Tetro GetTetro(TetroType type)
        {
            Tetro tetro = pool.Where(t => t.GetTetroType() == type)
                          .FirstOrDefault();

            tetro.transform.parent = null;
            tetro.gameObject.SetActive(true);
            return(tetro);
        }
Exemplo n.º 2
0
        public void SetNextTetro(Tetro next)
        {
            if (NextTetro != null)
            {
                _renderer.Render(ClearTetro(NextTetro));
            }

            NextTetro = next;
            _renderer.Render(RenderNextTetro(NextTetro));
        }
Exemplo n.º 3
0
        private GridMutation RenderNextTetro(Tetro tetro)
        {
            var m = new TextWriter().WriteText(_x, _y + 2, "next:");

            foreach (Block b in tetro.Blocks)
            {
                m.AddTarget(new DrawablePoint(b.X + _x + 2, b.Y + 4, b.ForeColor, b.Symbol, b.Debug));
            }

            return(m);
        }
Exemplo n.º 4
0
    private void Start()
    {
        pontos = pontosAux = 0;

        timer = 0;

        tetro = GetComponent <Tetro>();

        txtScore.text = "" + pontos;
        txtLevel.text = "" + velocidadeQueda * 10;
    }
Exemplo n.º 5
0
        // Set current tetromino and generate the next one
        protected void ResetCurrentTetro()
        {
            _curTetro = _stage.GetNextTetro();

            // Add all blocks from all tetrominoes to single List
            // for faster rendering and colision detection
            foreach (Block b in _curTetro.Blocks)
            {
                _blocks.Add(b);
            }
        }
Exemplo n.º 6
0
        private GridMutation ClearTetro(Tetro tetro)
        {
            var m = new GridMutation();

            foreach (DrawablePoint b in tetro.Blocks)
            {
                m.AddSource(b.X + _x + 2, b.Y + 4);
            }

            return(m);
        }
Exemplo n.º 7
0
        public Tetro SpawnRandomTetro()
        {
            int       length = System.Enum.GetNames(typeof(TetroType)).Length;
            int       i      = Random.Range(1, length);
            TetroType type   = (TetroType)i;
            Tetro     tetro  = tetroPool.GetTetro(type);

            tetro.transform.position = spawnPos.position;
            tetro.gameObject.SetActive(true);
            tetro.StartFalling(fallSpeed);
            return(tetro);
        }
Exemplo n.º 8
0
 public Tetro[] PreWarm()
 {
     pool = new Tetro[tetroDatas.Length];
     for (int i = 0; i < pool.Length; i++)
     {
         Tetro t = Instantiate(tetroPrefab, poolPos.position, Quaternion.identity);
         t.SetUp(tetroDatas[i]);
         t.transform.parent = poolPos;
         t.SetPool(this);
         pool[i] = t;
     }
     return(pool);
 }
Exemplo n.º 9
0
 /// <summary>
 /// Finds the Tetro that contains the specified coordinates
 /// </summary>
 /// <param name="Row"></param>
 /// <param name="Col"></param>
 /// <returns></returns>
 private Tetromino.TetroTemplate FindTetroAt(int Row, int Col)
 {
     Tetromino.TetroTemplate TetroOut = null;
     foreach (Tetromino.TetroTemplate Tetro in Tetros)
     {
         if (Tetro.ContainsCoord(Row, Col))
         {
             TetroOut = Tetro;
             break;
         }
     }
     return(TetroOut);
 }
Exemplo n.º 10
0
        /// <summary>
        /// Gets the corresponding Tetromino for a specific coordinate
        /// </summary>
        /// <param name="Row"></param>
        /// <param name="Col"></param>
        /// <returns></returns>
        public Tetromino GetTetroAt(int Row, int Col)
        {
            Tetromino foundTetro = null;

            foreach (Tetromino Tetro in Tetrominos)
            {
                if (Tetro.ContainsCellAt(Row, Col))
                {
                    foundTetro = Tetro;
                    break;
                }
            }
            return(foundTetro);
        }
Exemplo n.º 11
0
    public void ProximaPeca()
    {
        
        instanciaPeca = Instantiate(criapecas[proxPeca], this.transform.position, Quaternion.identity);
        tetroScript = instanciaPeca.GetComponentInParent<Tetro>(); 

        proxPeca = Random.Range(0, 7);

        for (int i = 0; i < mostraPecas.Count; i++)
        {
            mostraPecas[i].SetActive(false);
        }

        mostraPecas[proxPeca].SetActive(true);
    }
Exemplo n.º 12
0
    public bool AcimaGrade(Tetro pecaTetro)
    {
        for (int x = 0; x < largura; x++)
        {
            foreach (Transform quadrado in pecaTetro.transform)
            {
                Vector2 posicao = Arredonda(quadrado.position);

                if (posicao.y > altura - 1)
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Exemplo n.º 13
0
        public Tetro GetNextTetro()
        {
            // If new game generate 'next' before setting 'current' tetromino
            if (_nextTetro == null)
            {
                _nextTetro = GenerateRandomTetro();
            }

            var curTetro = _nextTetro;

            _nextTetro = GenerateRandomTetro();

            // Update Scoreboard
            Scoreboard.SetNextTetro(_nextTetro);

            return(curTetro);
        }
Exemplo n.º 14
0
        public void Load(SavableData savableData)
        {
            _renderer.Clear();
            _playfield.RowRemoved += RowRemovedHandler;
            var currTetro = Tetro.CreateTetro(savableData.CurrentTetro, _playfield);
            var nextTetro = Tetro.CreateTetro(savableData.NextTetro, _playfield);

            _nextTetro = nextTetro;
            // Load scoreboard
            Scoreboard.IncrementScore(savableData.Score);
            Scoreboard.SetNextTetro(nextTetro);
            Scoreboard.RenderScore();

            // Load blocks
            _playfield.SetBlocks(savableData.Blocks.Concat(currTetro.Blocks));
            _playfield.SetCurrentTetro(currTetro);
            _playfield.Start(_settings.Speed);
            Thread.Sleep(300);
        }
Exemplo n.º 15
0
    public void atualizaGrade(Tetro pecaTetris)
    {
        /*
         *
         * A lógica aqui é a seguinte, toda vez que é realizado um movimento na peça, esse metodo é chamado quando o movimento é válido
         *
         * Caso o movimento não seja válido, persevera os valores da última chamada
         *
         */

        // limpa a grade referente ao bloco que está caindo
        for (int y = 0; y < altura; y++)
        {
            for (int x = 0; x < largura; x++)
            {
                if (grade[x, y] != null)
                {
                    // Verifica se não é a peça que está sendo usada agora
                    if (grade[x, y].parent == pecaTetris.transform)
                    {
                        grade[x, y] = null;
                    }
                }
            }
        }


        // Esse loop passa por cada quadradinho dentro da peça de tetris
        foreach (Transform quadradinhoPeca in pecaTetris.transform)
        {
            Vector2 posicao = Arredonda(quadradinhoPeca.position);


            if ((int)posicao.y < altura)
            {
                grade[(int)posicao.x, (int)posicao.y] = quadradinhoPeca;
            }
        }
    }
Exemplo n.º 16
0
        // Generates a random tetro
        public Tetro GenerateRandomTetro()
        {
            TetroTypes type = (TetroTypes)_randomizer.Next(7);

            return(Tetro.CreateTetro(type, _playfield));
        }
Exemplo n.º 17
0
 public void ReturnTetro(Tetro tetro)
 {
     tetro.transform.SetParent(poolPos);
     tetro.transform.localPosition = Vector3.zero;
 }
Exemplo n.º 18
0
 public void SetCurrentTetro(Tetro tetro) => _curTetro = tetro;