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); }
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 } }