예제 #1
0
    private IEnumerator AfterBallMovedToNewPosition(Queue <GameObject> stepImages, BallBehavior oldBall, Point start, Point end)
    {
        var oldScore = Score;

        oldBall.StopJumping();
        while (stepImages.Count > 0)
        {
            var stepToRemove = stepImages.Dequeue();
            Destroy(stepToRemove);
            if (stepImages.Count > 0)
            {
                yield return(new WaitForSeconds(0.05f));
            }
        }
        GameBoardManager.Instance.field[end.X, end.Y]     = GameBoardManager.Instance.field[start.X, start.Y];
        GameBoardManager.Instance.field[start.X, start.Y] = null;
        var deletedCount = RemoveCompletedLinesAndAddScore();

        if (deletedCount > 0)
        {
            yield return(new WaitForSeconds(0.10f));
        }
        else
        {
            for (int i = 0; i < 3; i++)
            {
                CreateBallInRandomPlace(NextBalls[i]);
            }
            InitNextBalls();
            RemoveCompletedLinesAndAddScore();
        }
        GameState = GameState.Gameplay;
        CheckGameover();
        if (GameState == GameState.Gameplay &&
            Score > EnemyScore &&
            oldScore <= EnemyScore)
        {
            GameState = GameState.Animation;
            AudioManager.Instance.PlayWinMusicIfCan(() =>
            {
                GameState = GameState.Gameplay;
            });
        }
    }