예제 #1
0
    // Update is called once per frame
    void Update()
    {
        switch (lineDecisionState)
        {
            #region 探索
        case LineDecisionState.SEARCH:

            //探索範囲(0~14)以外でははしらない
            seachLine = timeLineMove.LineDecision();
            if (seachLine < 0 || seachLine >= 14)
            {
                break;
            }

            if (seachLine != completionLine)
            {
                break;
            }
            completionLine += 1;
            delete          = 0;

            //消去予定のブロックの優先度を変更
            for (int y = 0; y < GameController.FIELD_Y; y++)
            {
                if (gameController.fields[seachLine, y] == DELETE_BRACK)
                {
                    gameController.fields[seachLine, y] = 6;

                    //ブロックの表示を優先度に合わせて変更
                    Destroy(gameController.delBlockPrefabs[seachLine, y].gameObject);
                    gameController.delBlockPrefabs[seachLine, y] = Instantiate(DeleteAfterPrefab, new Vector3(seachLine, y, -7.2f), transform.rotation);

                    deleteBlock++;
                    delete++;
                }
                else if (gameController.fields[seachLine, y] == DELETE_LIGHT)
                {
                    gameController.fields[seachLine, y] = 5;

                    //ブロックの表示を優先度に合わせて変更
                    Destroy(gameController.delBlockPrefabs[seachLine, y].gameObject);
                    gameController.delBlockPrefabs[seachLine, y] = Instantiate(DeleteAfterPrefab, new Vector3(seachLine, y, -7.2f), transform.rotation);

                    deleteBlock++;
                    delete++;
                }

                if (gameController.delBlocks[seachLine, y] == SQUARE_BRACKBLOCK ||
                    gameController.delBlocks[seachLine, y] == SQUARE_LIGHTBLOCK)
                {
                    deleteSquare++;
                }
            }

            //探索ラインを戻す
            if (completionLine == 14)
            {
                completionLine = 0;
                delete         = 0;
            }
            lineDecisionState = LineDecisionState.PROPRIETY;
            break;
            #endregion

            #region 消去実行の可否 
        case LineDecisionState.PROPRIETY:
            lineDecisionState = LineDecisionState.SEARCH;

            //ラインのブロックの数で命令を変更
            if (delete == 0)
            {
                //ブロックを消去
                lineDecisionState = LineDecisionState.NOTIFICATION;
            }
            else if (delete > 0)
            {
                //消去ブロックがあることを通知
                soundController.TimeLineCheckSound();
            }
            break;
            #endregion

            #region 通知
        case LineDecisionState.NOTIFICATION:

            //初期化とブロックの消去を実行
            timeLineMove.DeleteBlocks(deleteBlock);
            timeLineMove.DeleteSquares(deleteSquare);
            deleteBlock  = 0;
            deleteSquare = 0;
            timeLineController.DeleteResult();
            lineDecisionState = LineDecisionState.SEARCH;
            break;
            #endregion
        }
    }
예제 #2
0
 ///<summary>
 ///判定の開始
 ///</summary>
 public void DecisionStart()
 {
     lineDecisionState = LineDecisionState.SEARCH;
 }