Esempio n. 1
0
    //해당 퍼즐을 맵 위에 놓았을 때. //
    public void PutPuzzleOnMap(PuzzleController tile)
    {
        //현재 위치에 퍼즐을 놓을 수 있는가? //
        if (mapAssistance.IsPossibleToPutOn())
        {
            if (tile.tileType.IsSameTile(TileData.BlockType.FillBlocks))
            {
                int side = Random.Range(0, 2);
                mapAssistance.FillLines(tile, side);
            }
            SoundManager.GetInstance().PlaySound(Define.SoundType.PutTileOnBoard);

            //퍼즐을 배치한 횟수 추가. //
            MissionManager.GetInstance().AddArrangeCount();

            //미션 갱신된 것이 있는지 체크. //
            MissionManager.GetInstance().CheckClearedMission();

            //더블 보너스가 있다면, 턴 차감. //
            scoreAssistance.SubDoubleBonusCount();

            //현재 위치에 퍼즐을 놓는다. //
            mapAssistance.PutPuzzleOnMap(tile);
            //지울 수 있는 타일이 있는지 모든 타일을 계산. //
            mapAssistance.CalculateAllClearTiles();
            //지울수 있는 타일이 맵 상에 있는가? //
            if (mapAssistance.HasClearTilesOnMap())
            {
                //지울 수 있는 모든 타일들을 지운다. //
                StartCoroutine(mapAssistance.ClearTiles((ClearTileData clearTileData) =>
                {
                    //모든 타일을 재갱신하고 강조 타일도 초기화한다. //
                    mapAssistance.UpdateMap();
                    //클리어한 타일들을 바탕으로 스킬사용이 가능한 동물이 있는지 체크한다. //
                    int count = petAssistance.CheckAllPetsCanUseSkill(clearTileData);

                    if (activeSkillGuideTutorial && count > 0)
                    {
                        StartSkillGuideTutorial();
                    }

                    //모든 지워져야 할 타일을 지운 후. //
                    //지워진 데이터를 맵에 반영시키고, //
                    mapAssistance.UpdateMap();

                    //새로운 퍼즐 조각들을 배치시킨다. //
                    StartCoroutine(mapAssistance.CallInPuzzleTiles(null));

                    AddCombo();
                }));
            }
            else
            {
                //모든 타일을 재갱신하고 강조 타일도 초기화한다. //
                mapAssistance.UpdateMap();
                //새로운 퍼즐 조각들을 배치시킨다. //
                StartCoroutine(mapAssistance.CallInPuzzleTiles(null));

                nowKeepComboCount++;
                if (nowKeepComboCount > keepComboCount)
                {
                    SetCombo(0);
                }
            }
        }
        else
        {
            //없다면, 해당 타일을 원래 대기라인으로 돌려놓는다. //
            mapAssistance.PuzzleReturntoReadyLine(tile);
        }
    }