private GameObject GetNextPiece(PieceParameter parameter) { if ("s".Equals(parameter.piece)) { return(pieceS); } else if ("z".Equals(parameter.piece)) { return(pieceZ); } else if ("j".Equals(parameter.piece)) { return(pieceJ); } else if ("l".Equals(parameter.piece)) { return(pieceL); } else if ("t".Equals(parameter.piece)) { return(pieceT); } else if ("i".Equals(parameter.piece)) { return(pieceI); } return(pieceO); }
private Sprite GetNextImage(PieceParameter parameter) { if ("s".Equals(parameter.piece)) { return(imageS); } else if ("z".Equals(parameter.piece)) { return(imageZ); } else if ("j".Equals(parameter.piece)) { return(imageJ); } else if ("l".Equals(parameter.piece)) { return(imageL); } else if ("t".Equals(parameter.piece)) { return(imageT); } else if ("i".Equals(parameter.piece)) { return(imageI); } return(imageO); }
/// <summary> /// コンストラクタ /// </summary> public NextBlockControl() { InitializeComponent(); _lastPieceParameter = MainModel.NextPieceParameter; SetEvent(); }
/// <summary> /// ピースを新しく更新する /// </summary> /// <returns></returns> public static PieceParameter CreatePieceParameter() { // ランダム関数でパラメータを決定 Random random = new Random(); int pieceLength = Enum.GetValues(typeof(PieceType)).Length; int pieceIndex = random.Next(pieceLength - 1); int angleLength = Enum.GetValues(typeof(AngleType)).Length; int angleIndex = random.Next(angleLength); PieceParameter pieceParameter = new PieceParameter(); // 更新 switch (pieceIndex) { case 0: pieceParameter.Piece = new PieceI(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.I; break; case 1: pieceParameter.Piece = new PieceO(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.O; break; case 2: pieceParameter.Piece = new PieceS(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.S; break; case 3: pieceParameter.Piece = new PieceZ(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.Z; break; case 4: pieceParameter.Piece = new PieceJ(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.J; break; case 5: pieceParameter.Piece = new PieceL(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.L; break; case 6: pieceParameter.Piece = new PieceT(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.T; break; default: System.Diagnostics.Debug.Assert(false); pieceParameter.Piece = new PieceI(NEW_PIECE_START_X, NEW_PIECE_START_Y, (AngleType)angleIndex); pieceParameter.PieceType = PieceType.I; break; } return(pieceParameter); }
/// <summary> /// モデル層からのデータ更新通知 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainModel_Updated(object sender, EventArgs e) { // 次のピースが新しくなった場合 if (_lastPieceParameter != MainModel.NextPieceParameter) { _lastPieceParameter = MainModel.NextPieceParameter; Invalidate(); } }
private void SpawnNextPiece() { PieceParameter parameter = nextPieces.Dequeue(); // Spawn Group at current Position GameObject newObj = Instantiate(GetNextPiece(parameter), transform.position, Quaternion.identity, transform.parent); newObj.transform.Rotate(0, 0, parameter.rotation); nextPieceDisplay.color = new Color(0, 0, 0, 0); if (nextPieces.Count > 0) { UpdateNextPieces(); } }