Esempio n. 1
0
        /// <summary>
        /// 標準ホールド
        /// </summary>
        private void NormalHold()
        {
            //中間保持者にホールド状態のミノを受け渡し
            middleKeepMino = holdMino;
            //落下中のミノをホールドに格納
            Tetrimino currentTarget = mediator.GetActiveMino();

            currentTarget.Initialize();
            holdMino = currentTarget;
            middleKeepMino.Initialize();
            //中間保持者にホールド状態のミノを受け渡す
            mediator.OrderToSetNewMinoActive(middleKeepMino);

            middleKeepMino = null;
            CanHold        = false;
        }
Esempio n. 2
0
        ///<summary>
        ///固定状態のテトリミノに対応するフィールドの座標データへ反映
        ///</summary>
        public void RefToField()
        {
            if (minoStateManager.IsLocked)
            {
                var unitPosList = new List <Vector2>();
                //テトリミノの構成ブロックの座標を取得
                foreach (var point in tetrimino.GetMinoUnitPos())
                {
                    //構成ブロックに対応するフィールドの配列位置を取得
                    int unitPos_X = (int)(tetrimino.Position.X + point.X);
                    int unitPos_Y = (int)(tetrimino.Position.Y + point.Y);

                    unitPosList.Add(new Vector2(unitPos_X, unitPos_Y));
                }

                ////対応する位置のフィールドの要素を書き換える
                lineJudge.RefToField(unitPosList, tetrimino.GetUnitNum());
                this.fieldData = lineJudge.ReflectData();

                //消去した列数に反映
                for (int i = 0; i < lineJudge.RemoLineCnt; i++)
                {
                    mediator.AddRemoveLine();
                }
                //スコアを加算
                mediator.AddScore(lineJudge.AddScoreVal);

                //加算用ラインとスコアを初期化
                lineJudge.RemoLineCnt = 0;
                lineJudge.AddScoreVal = 0;

                //状態管理者を初期化
                minoStateManager.Initialize();
                //一通り書き換えが終わったら初期化
                tetrimino = minoGenerator.PickHeaderMino();
                minoGenerator.GenerateEndOfNextMino();
                nextMinoBoard.UpdateNext();

                //テトリミノ制御対象を再設定
                OrderToSetNewMinoActive(tetrimino);
                //ホールド制限を解除
                if (!nextMinoBoard.CanHold)
                {
                    nextMinoBoard.CanHold = true;
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 初期化
        /// </summary>
        public void Initialize()
        {
            minoGenerator = new MinoGenerator();
            //テトリミノの実体生成
            tetrimino = minoGenerator.PickHeaderMino();
            minoGenerator.GenerateEndOfNextMino();

            //ライン審判を実体生成
            lineJudge     = new LineJudgement(this);
            nextMinoBoard = new NextMinoBoard(this);

            //各種テトリミノ管理者を生成、ターゲットを設定
            minoMove         = new MinoMove(tetrimino, this);
            minoStateManager = new MinoStateManager(tetrimino, this, mediator);
            minoCordinate    = new MinoCordinateController(tetrimino, this, mediator);

            //最初は死亡フラグはOFFにする
            IsDeadFlag = false;
        }
Esempio n. 4
0
        /// <summary>
        /// 最初にホールド機能を使う場合のホールド手順
        /// </summary>
        private void NullHold()
        {
            //ホールドオブジェクトに落下中のミノを収容
            Tetrimino currentTarget = mediator.GetActiveMino();

            currentTarget.Initialize();
            holdMino = currentTarget;
            //落下ミノを更新
            mediator.OrderToPickHead();
            //末尾にテトリミノを追加
            mediator.OrderToGenerate();
            //更新された落下ミノを取得
            Tetrimino newTarget = mediator.GetActiveMino();

            newTarget.Initialize();
            //各種テトリミノ制御オブジェクトの制御対象を更新
            mediator.OrderToSetNewMinoActive(newTarget);

            CanHold = false;
        }
Esempio n. 5
0
 public void OrderToPickHead()
 {
     tetrimino = minoGenerator.PickHeaderMino();
 }
Esempio n. 6
0
 /// <summary>
 /// 移動処理を施す対象を設定する
 /// </summary>
 /// <param name="target">動かしたいターゲット</param>
 public void SetTarget(Tetrimino target)
 {
     this.target = target;
 }
Esempio n. 7
0
 /// <summary>
 /// 制御対象を設定する
 /// </summary>
 /// <param name="newTarget">制御を行うテトリミノ</param>
 public void SetTarget(Tetrimino newTarget)
 {
     this.target = newTarget;
 }
Esempio n. 8
0
 public Tetrimino(Tetrimino other)
     : this()
 {
 }