public ChessMoveInfo WithExtraStep(ChessMoveStepInfo extraStep) { var newMoveSteps = MoveSteps.ToList(); newMoveSteps.Add(extraStep); return(new ChessMoveInfo(Player, newMoveSteps, WouldCaptureKing, IsCastling)); }
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); }
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); }
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)); }
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); }
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()); }
public void MoveBySteps(Player player, MoveSteps moveSteps) => MoveBySteps(player, moveSteps.Steps, moveSteps.CountGoPassed);