Exemple #1
0
        public PieceMoveTransaction(IPlayer player, VerifiedMove verifiedMove, PositionArrayAccessor <IPiece> pieces, IFieldEffectChecker fieldEffectChecker,
                                    IValueInputProvider <int> valueProvider, bool isTurnEnd)
        {
            Assert.IsNotNull(verifiedMove);
            Assert.IsNotNull(verifiedMove.Player);
            Assert.IsNotNull(player);
            Assert.AreEqual(verifiedMove.Player, player);
            Assert.IsNotNull(pieces);
            Assert.IsNotNull(fieldEffectChecker);
            Assert.IsNotNull(valueProvider);

            this.player        = player;
            this.pieces        = pieces;
            this.valueProvider = valueProvider;

            startPosition = verifiedMove.MovingPiece.Position;    //worldPathに開始地点は含まれないのでこの方法で開始地点を取得
            viaPosition   = verifiedMove.ViaPositionNode;
            endPosition   = verifiedMove.WorldPath.Last();

            this.worldPath = verifiedMove.WorldPath;
            this.isTurnEnd = isTurnEnd;

            pieceMover        = new Mover(pieces);
            waterEntryChecker = new WaterEntryChecker(3, fieldEffectChecker, valueProvider);
            moveFinisher      = new MoveFinisher(pieceMover, new Capturer(pieces));
        }
Exemple #2
0
 //PositionArrayAccessor<IPiece> pieces, IFieldEffectChecker fieldEffectCheckerをコンストラクタの引数にすることも検討
 public IPieceMoveTransaction Create(IPlayer player, VerifiedMove verifiedMove, PositionArrayAccessor <IPiece> pieces, IFieldEffectChecker fieldEffectChecker, IValueInputProvider <int> valueProvider, bool isTurnEnd)
 {
     return(new PieceMoveTransaction(player, verifiedMove, pieces, fieldEffectChecker, valueProvider, isTurnEnd));
 }