Files
Shogi/Gameboard.ShogiUI.Sockets/Models/Move.cs
2021-05-08 10:26:04 -05:00

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);
}
}
}