//ブロックを消す void DeleteBlocks() { Debug.Log("ブロックを消してもいいか" + isDeleteBlock); ResultState(); //falseなら早期リターン if (!isDeleteBlock) { return; } if (!WaitRemoveBlock()) { return; //上昇中のものがいたらreturn } gameManager.ZeroOrCube(); //自分がゼロじゃなくてspaceでもwallでもない場合 ゼロ以外デスにする //消されたものがあるならスコア加算して if (gameManager.IsDeath()) { conbo.RemoveCubeCount(); //消された数を計算して、スコアに加算 if (conbo.GetIsConbo()) //コンボしてたら加算・してなかったら0に戻す { nowConbo++; } else { nowConbo = 0; } conbo.SetFalseIsConbo(); //コンボを確認したらfalseにする if (gameManager.moveOk) { gameManager.ZeroDesthChangeSpace(); } } else { isDeleteBlock = false; //場に0か死んでいるブロックがないならfalseに変更する for (int i = 0; i < gameManager.useObjects.Count; i++) { if (gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState == CurrentState.SelfReady || gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState == CurrentState.SelfZero) { return; } gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState = CurrentState.Down; } } }
//ターンの全体管理 void TurnManager() { switch (nowTurn) { case Turn.Thinking: //選ばれたら切り替える break; case Turn.PutIn: //選ばれたら落とす for (int j = 0; j < gameManager.useObjects.Count; j++) { // 一個でも落ちている奴がいれば if (gameManager.useObjects[j].GetComponent <Block>().currentState == CurrentState.Down) { text.text = "現在のターン:" + nowTurn; return; } } turnManager.CountDown(gameManager.useObjects); int putCount = 0; for (int i = 0; i < gameManager.useObjects.Count; i++) { //一個でもゼロブロックがあるなら if (gameManager.useObjects[i].GetComponent <Block>().CheckFryCount()) { ChangeTurn(Turn.Results); } else { putCount++; } } //カウントが0のブロックがなかった場合 if (putCount == gameManager.useObjects.Count) { nowConbo = 0; //0に戻す //戻す ChangeTurn(Turn.Thinking); } break; case Turn.Results: int resCount = 0; if (l.Count <= gameManager.useObjects.Count) { for (int c = 0; c < gameManager.useObjects.Count; c++) { if (gameManager.useObjects[c].GetComponent <Block>().currentState == CurrentState.SelfReady || gameManager.useObjects[c].GetComponent <Block>().currentState == CurrentState.SelfZero) { l.Add(gameManager.useObjects[c]); } } } for (int i = 0; i < l.Count; i++) { //止まっていたら if (l[i].GetComponent <Block>().currentState == CurrentState.UpStop) { resCount++; } } if (resCount == l.Count && resCount != 0) { l = new List <GameObject>(); ChangeTurn(Turn.Delete); } break; case Turn.OutOil: #region O //if (gameManager.InArrayZero()) //{ // for (int i = 0; i < gameManager.useObjects.Count; i++) // { // if (gameManager.useObjects[i].GetComponent<Block>().DownZeroBlock() && // !gameManager.useObjects[i].GetComponent<Block>().CheckFryCount()) // { // Debug.Log(gameManager.useObjects[i].name); // gameManager.useObjects[i].GetComponent<Block>().PositionUp(); // } // } //} #endregion break; case Turn.Delete: #region D //if (gameManager.InArrayZero()) //{ // for (int i = 0; i < gameManager.useObjects.Count; i++) // { // if (gameManager.useObjects[i].GetComponent<Block>().DownZeroBlock()) // { // gameManager.useObjects[i].GetComponent<Block>().PositionUp(); // } // } //} #endregion //ゼロがなかった場合 gameManager.ZeroOrCube(); //if (!gameManager.IsZero()) //{ // ChangeTurn(Turn.Deleting); //} if (gameManager.IsDeath()) { conbo.RemoveCubeCount(); //消された数を計算して、スコアに加算 if (conbo.GetIsConbo()) //コンボしてたら加算・してなかったら0に戻す { nowConbo++; } else { nowConbo = 0; } conbo.SetFalseIsConbo(); //コンボを確認したらfalseにする ChangeTurn(Turn.Deleting); } break; case Turn.Deleting: if (!gameManager.IsDeath()) { for (int i = 0; i < gameManager.useObjects.Count; i++) { gameManager.useObjects[i].GetComponent <Block>().currentState = CurrentState.Down; } ChangeTurn(Turn.Form); } if (gameManager.moveOk) { gameManager.ZeroDesthChangeSpace(); } break; //形を判定 case Turn.Form: int forCount = 0; for (int i = 0; i < gameManager.useObjects.Count; i++) { //止まっていたら if (gameManager.useObjects[i].GetComponent <Block>().currentState == CurrentState.DownStop) { forCount++; } } if (forCount == gameManager.useObjects.Count) { //最初に戻る ChangeTurn(Turn.Thinking); } break; case Turn.Clear: //終了 break; default: break; } text.text = "現在のターン:" + nowTurn; }