예제 #1
0
    void HandleMatches()
    {
        //消除所有链后的hashset
        HashSet <Chain> chains = level.RemoveMatches();

        //多次消除后需要这个来清除combo标记以及停止链结构的再次计算
        if (chains.Count == 0)
        {
            StartNextTurn();
            return;
        }

        boardController.AnimateMatchedAnimals(chains, () =>
        {
            foreach (Chain chain in chains)
            {
                score += chain.score;
            }
            levelUIController.SetScoreLabelText(score.ToString());

            //所有应该移动的item
            List <List <Animal> > columns = level.FillHoles();

            //动画
            boardController.AnimateFallingAnimals(columns, () =>
            {
                //填满最上层的空缺
                columns = level.TopAnimals();

                //填满动画
                boardController.AnimateNewAnimals(columns, () =>
                {
                    HandleMatches();
                });
            });
        });
    }