using System;
using System.Collections.Generic;
using System.Text;

namespace shuchancontrol
{
    /// <summary>
    /// 駒の移動をGUIに通知するためのデータのセット。
    /// </summary>
    public class PieceMoveToGui
    {
        /// <summary>
        /// 駒の移動元。
        /// </summary>
        public ShuchanPiecePosition MoveFrom { get; set; }
        /// <summary>
        /// 駒の移動先。
        /// </summary>
        public ShuchanPiecePosition MoveTo { get; set; }
        /// <summary>
        /// この移動が終了した直後の手番が白のときtrue。
        /// </summary>
        public bool IsNextMoveWhite { get; set; }
        /// <summary>
        /// 移動がキャスリングで、キングの移動のときtrue。この次にルークの移動があることを示す。
        /// </summary>
        public bool IsCastlingKingMove { get; set; }
        /// <summary>
        /// 移動がプロモーションのとき、プロモーション先の駒の種類。それ以外ではPieceType.None。
        /// </summary>
        public ShuchanChessBoard.PieceType PromotionType { get; set; }
        /// <summary>
        /// 移動した結果形成される盤の状態(クローンであり、Guiスレッド以外が勝手に変更することはない)。
        /// </summary>
        public ShuchanChessBoard MoveResultBoard { get; set; }
        /// <summary>
        /// 移動のSAN表記。ただしキャスリングのルーク移動ではnull。
        /// </summary>
        public string MoveSAN { get; set; }
        /// <summary>
        /// 白黒あわせて合計の移動回数。最初の白、黒の移動がともに1にあたる。
        /// </summary>
        public int FullMoveNumber { get; set; }
        /// <summary>
        /// 白の移動のときtrue。
        /// </summary>
        public bool IsWhiteMove { get; set; }

        public PieceMoveToGui()
        {
            IsCastlingKingMove = false;
            PromotionType = ShuchanChessBoard.PieceType.None;
            MoveResultBoard = null;
            MoveSAN = null;
            FullMoveNumber = 0;
            IsWhiteMove = true;
        }
    }
}
