Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public NextBlockControl()
        {
            InitializeComponent();

            _lastPieceParameter = MainModel.NextPieceParameter;
            SetEvent();
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
 /// <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();
     }
 }
Пример #6
0
    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();
        }
    }