コード例 #1
0
        public ChessMoveInfo WithExtraStep(ChessMoveStepInfo extraStep)
        {
            var newMoveSteps = MoveSteps.ToList();

            newMoveSteps.Add(extraStep);
            return(new ChessMoveInfo(Player, newMoveSteps, WouldCaptureKing, IsCastling));
        }
コード例 #2
0
ファイル: Chance.cs プロジェクト: yongcycchen/prisel
        public override int GetHashCode()
        {
            int hash = 1;

            if (display_ != null)
            {
                hash ^= Display.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.Unspecified)
            {
                hash ^= Unspecified.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoveToTile)
            {
                hash ^= MoveToTile.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoneyExchange)
            {
                hash ^= MoneyExchange.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoveSteps)
            {
                hash ^= MoveSteps.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.Collectible)
            {
                hash ^= Collectible.GetHashCode();
            }
            hash ^= (int)extraCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
コード例 #3
0
ファイル: Chance.cs プロジェクト: yongcycchen/prisel
        public void MergeFrom(Chance other)
        {
            if (other == null)
            {
                return;
            }
            if (other.display_ != null)
            {
                if (display_ == null)
                {
                    Display = new global::Monopoly.Protobuf.ChanceDisplay();
                }
                Display.MergeFrom(other.Display);
            }
            switch (other.ExtraCase)
            {
            case ExtraOneofCase.Unspecified:
                Unspecified = other.Unspecified;
                break;

            case ExtraOneofCase.MoveToTile:
                if (MoveToTile == null)
                {
                    MoveToTile = new global::Monopoly.Protobuf.MoveToTileExtra();
                }
                MoveToTile.MergeFrom(other.MoveToTile);
                break;

            case ExtraOneofCase.MoneyExchange:
                if (MoneyExchange == null)
                {
                    MoneyExchange = new global::Monopoly.Protobuf.MoneyExchangeExtra();
                }
                MoneyExchange.MergeFrom(other.MoneyExchange);
                break;

            case ExtraOneofCase.MoveSteps:
                if (MoveSteps == null)
                {
                    MoveSteps = new global::Monopoly.Protobuf.MoveStepsExtra();
                }
                MoveSteps.MergeFrom(other.MoveSteps);
                break;

            case ExtraOneofCase.Collectible:
                if (Collectible == null)
                {
                    Collectible = new global::Monopoly.Protobuf.CollectibleExtra();
                }
                Collectible.MergeFrom(other.Collectible);
                break;
            }

            _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }
コード例 #4
0
        public bool Equals(ChessMoveInfo other)
        {
            if (other == null)
            {
                return(false);
            }

            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return(Equals(Player, other.Player) &&
                   MoveSteps.SequenceEqual(other.MoveSteps) &&
                   Equals(WouldCaptureKing, other.WouldCaptureKing) &&
                   Equals(IsCastling, other.IsCastling));
        }
コード例 #5
0
ファイル: TileEffect.cs プロジェクト: yongcycchen/prisel
        public override int GetHashCode()
        {
            int hash = 1;

            if (display_ != null)
            {
                hash ^= Display.GetHashCode();
            }
            if (Timing != global::Monopoly.Protobuf.TileEffect.Types.Timing.Unspecified)
            {
                hash ^= Timing.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.Unspecified)
            {
                hash ^= Unspecified.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoveToTile)
            {
                hash ^= MoveToTile.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoneyExchange)
            {
                hash ^= MoneyExchange.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.MoveSteps)
            {
                hash ^= MoveSteps.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.Collectible)
            {
                hash ^= Collectible.GetHashCode();
            }
            if (extraCase_ == ExtraOneofCase.Detained)
            {
                hash ^= Detained.GetHashCode();
            }
            hash ^= (int)extraCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
コード例 #6
0
        public override string ToString()
        {
            var firstMoveStep   = MoveSteps.First();
            var pieceColourName = firstMoveStep.PieceToMove.Player == Player.First ? "White" : "Black";

            if (IsCastling)
            {
                var firstPieceToMove      = firstMoveStep.PieceToMove;
                var secondPieceToMove     = MoveSteps[1].PieceToMove;
                var distanceBetweenPieces = Math.Abs((int)firstPieceToMove.Position.HorizontalPosition - (int)secondPieceToMove.Position.HorizontalPosition);
                var isShortString         = distanceBetweenPieces == 3 ? "short" : "long";

                return($"{pieceColourName} makes {isShortString} castling");
            }
            else if (MoveSteps.Count == 2)
            {
                // Pawn promotion
                var secondPieceToMove = MoveSteps[1].PieceToMove;
                return($"{pieceColourName} promotes pawn to {secondPieceToMove.Type.ToString().ToLower()} on {secondPieceToMove.Position}");
            }

            // Everything else
            return(firstMoveStep.ToString());
        }
コード例 #7
0
 public void MoveBySteps(Player player, MoveSteps moveSteps) =>
 MoveBySteps(player, moveSteps.Steps, moveSteps.CountGoPassed);