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