Example #1
0
        /// <summary>
        /// オブジェクトの妥当性を検証します。
        /// </summary>
        public bool Validate()
        {
            if (BWType == BWType.None)
            {
                return(false);
            }

            if (SpecialMoveType != SpecialMoveType.None)
            {
                // 特に確認は行いません。
            }
            else if (ActionType == ActionType.Drop)
            {
                // 駒打ちの場合
                if (DstSquare == null || !DstSquare.Validate())
                {
                    return(false);
                }

                if (SrcSquare != null)
                {
                    return(false);
                }

                if (MovePiece != null)
                {
                    return(false);
                }

                if (IsPromote)
                {
                    return(false);
                }
            }
            else
            {
                // 駒打ちでない場合
                if (DstSquare == null || !DstSquare.Validate())
                {
                    return(false);
                }

                if (SrcSquare == null || !SrcSquare.Validate())
                {
                    return(false);
                }

                if (MovePiece == null)
                {
                    return(false);
                }
            }

            return(true);
        }
Example #2
0
 /// <summary>
 /// ハッシュ値を計算します。
 /// </summary>
 public override int GetHashCode()
 {
     return(
         BWType.GetHashCode() ^
         (DstSquare != null ? DstSquare.GetHashCode() : 0) ^
         (SrcSquare != null ? SrcSquare.GetHashCode() : 0) ^
         (MovePiece != null ? MovePiece.GetHashCode() : 0) ^
         DropPieceType.GetHashCode() ^
         IsPromote.GetHashCode() ^
         SpecialMoveType.GetHashCode());
 }