mapper class and delete old stuff

This commit is contained in:
2022-06-12 21:45:46 -05:00
parent 4ca0b63564
commit ab8d0c4c7c
39 changed files with 325 additions and 818 deletions

View File

@@ -0,0 +1,100 @@
using Gameboard.ShogiUI.Sockets.ServiceModels.Types;
using System;
using System.Collections.Generic;
using System.Linq;
using DomainWhichPiece = Shogi.Domain.WhichPiece;
using DomainWhichPlayer = Shogi.Domain.WhichPlayer;
namespace Gameboard.ShogiUI.Sockets.Managers
{
public class ModelMapper : IModelMapper
{
public WhichPlayer Map(DomainWhichPlayer whichPlayer)
{
return whichPlayer switch
{
DomainWhichPlayer.Player1 => WhichPlayer.Player1,
DomainWhichPlayer.Player2 => WhichPlayer.Player2,
_ => throw new ArgumentException("Unrecognized value for WhichPlayer", nameof(whichPlayer))
};
}
public WhichPlayer? Map(DomainWhichPlayer? whichPlayer)
{
return whichPlayer.HasValue
? Map(whichPlayer.Value)
: null;
}
public WhichPiece Map(DomainWhichPiece whichPiece)
{
return whichPiece switch
{
DomainWhichPiece.King => WhichPiece.King,
DomainWhichPiece.GoldGeneral => WhichPiece.GoldGeneral,
DomainWhichPiece.SilverGeneral => WhichPiece.SilverGeneral,
DomainWhichPiece.Bishop => WhichPiece.Bishop,
DomainWhichPiece.Rook => WhichPiece.Rook,
DomainWhichPiece.Knight => WhichPiece.Knight,
DomainWhichPiece.Lance => WhichPiece.Lance,
DomainWhichPiece.Pawn => WhichPiece.Pawn,
_ => throw new ArgumentException("Unrecognized value", nameof(whichPiece)),
};
}
public DomainWhichPiece Map(WhichPiece whichPiece)
{
return whichPiece switch
{
WhichPiece.King => DomainWhichPiece.King,
WhichPiece.GoldGeneral => DomainWhichPiece.GoldGeneral,
WhichPiece.SilverGeneral => DomainWhichPiece.SilverGeneral,
WhichPiece.Bishop => DomainWhichPiece.Bishop,
WhichPiece.Rook => DomainWhichPiece.Rook,
WhichPiece.Knight => DomainWhichPiece.Knight,
WhichPiece.Lance => DomainWhichPiece.Lance,
WhichPiece.Pawn => DomainWhichPiece.Pawn,
_ => throw new ArgumentException("Unrecognized value", nameof(whichPiece)),
};
}
public SessionMetadata Map(Shogi.Domain.SessionMetadata session)
{
return new SessionMetadata
{
Name = session.Name,
Player1 = session.Player1,
Player2 = session.Player2,
IsPrivate = session.IsPrivate
};
}
public Piece Map(Shogi.Domain.Pieces.Piece piece)
{
return new Piece { IsPromoted = piece.IsPromoted, Owner = Map(piece.Owner), WhichPiece = Map(piece.WhichPiece) };
}
public Dictionary<string, Piece?> Map(IDictionary<string, Shogi.Domain.Pieces.Piece?> boardState)
{
return boardState.ToDictionary(kvp => kvp.Key, kvp => MapNullable(kvp.Value));
}
public Piece? MapNullable(Shogi.Domain.Pieces.Piece? piece)
{
if (piece == null) return null;
return Map(piece);
}
}
public interface IModelMapper
{
WhichPlayer Map(DomainWhichPlayer whichPlayer);
WhichPlayer? Map(DomainWhichPlayer? whichPlayer);
WhichPiece Map(DomainWhichPiece whichPiece);
DomainWhichPiece Map(WhichPiece value);
SessionMetadata Map(Shogi.Domain.SessionMetadata session);
Piece Map(Shogi.Domain.Pieces.Piece p);
Piece? MapNullable(Shogi.Domain.Pieces.Piece? p);
Dictionary<string, Piece?> Map(IDictionary<string, Shogi.Domain.Pieces.Piece?> boardState);
}
}