42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
using Gameboard.ShogiUI.Sockets.ServiceModels.Socket.Types;
|
|
using System.Numerics;
|
|
|
|
namespace Gameboard.ShogiUI.Sockets.Models
|
|
{
|
|
public class Move
|
|
{
|
|
public Coords? From { get; set; }
|
|
public bool IsPromotion { get; set; }
|
|
public WhichPiece? PieceFromHand { get; set; }
|
|
public Coords To { get; set; }
|
|
|
|
public Move(Coords from, Coords to, bool isPromotion)
|
|
{
|
|
From = from;
|
|
To = to;
|
|
IsPromotion = isPromotion;
|
|
}
|
|
|
|
public Move(WhichPiece pieceFromHand, Coords to)
|
|
{
|
|
PieceFromHand = pieceFromHand;
|
|
To = to;
|
|
}
|
|
|
|
public ServiceModels.Socket.Types.Move ToServiceModel() => new()
|
|
{
|
|
From = From?.ToBoardNotation(),
|
|
IsPromotion = IsPromotion,
|
|
To = To.ToBoardNotation(),
|
|
PieceFromCaptured = PieceFromHand
|
|
};
|
|
|
|
public Rules.Move ToRulesModel()
|
|
{
|
|
return PieceFromHand != null
|
|
? new Rules.Move((Rules.WhichPiece)PieceFromHand, new Vector2(To.X, To.Y))
|
|
: new Rules.Move(new Vector2(From!.X, From.Y), new Vector2(To.X, To.Y), IsPromotion);
|
|
}
|
|
}
|
|
}
|