Exemplo n.º 1
0
 IEnumerator LineClearAnimation(List <int> yRows, int minYPos)
 {
     for (int i = 0; i < yRows.Count(); i++)
     {
         StartCoroutine(ClearLine(yRows[i], i, minYPos));
     }
     if (!yRows.Any())
     {
         StartCoroutine(ARE(EntryFrameDelays.GetFrameDelay(currentTetrominoPos[1] + minYPos))); // tetromino spawned in ARE
     }
     yield return(null);
 }
Exemplo n.º 2
0
    IEnumerator ClearLine(int y, int j, int minYPos)
    {
        int frameThen = frameCounter;

        are = true;
        for (int i = 0; i < 5; i++)
        {
            if (j == 3) // make screen flash if tetris (and if has EngineUI attached)
            {
                nextAnimFrame?.Invoke();
            }
            //yield return new WaitForSeconds((4 - frameCounter % 4) / _FRAME_RATE);
            yield return(new WaitUntil(() => (frameCounter % 4 == 0)));  // frame counter % 4 = 0

            field[i + 5][y] = 0;
            field[4 - i][y] = 0;
        }
        are = false;
        FallAboveRows(y);
        if (j == 0)                                                                                // first iteration of clearline
        {
            StartCoroutine(ARE(EntryFrameDelays.GetFrameDelay(currentTetrominoPos[1] + minYPos))); // tetromino spawned in ARE
        }
    }