41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using Gameboard.ShogiUI.Rules;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ServiceTypes = Gameboard.ShogiUI.Sockets.ServiceModels.Socket.Types;
|
|
|
|
namespace Gameboard.ShogiUI.Sockets.Models
|
|
{
|
|
public class BoardState
|
|
{
|
|
public Piece[,] Board { get; set; }
|
|
public IReadOnlyCollection<Piece> Player1Hand { get; set; }
|
|
public IReadOnlyCollection<Piece> Player2Hand { get; set; }
|
|
|
|
public BoardState(ShogiBoard shogi)
|
|
{
|
|
Board = new Piece[9, 9];
|
|
for (var x = 0; x < 9; x++)
|
|
for (var y = 0; y < 9; y++)
|
|
Board[x, y] = new Piece(shogi.Board[x, y]);
|
|
|
|
Player1Hand = shogi.Hands[WhichPlayer.Player1].Select(_ => new Piece(_)).ToList();
|
|
Player2Hand = shogi.Hands[WhichPlayer.Player2].Select(_ => new Piece(_)).ToList();
|
|
}
|
|
|
|
public ServiceTypes.BoardState ToServiceModel()
|
|
{
|
|
var board = new ServiceTypes.Piece[9, 9];
|
|
Board = new Piece[9, 9];
|
|
for (var x = 0; x < 9; x++)
|
|
for (var y = 0; y < 9; y++)
|
|
board[x, y] = Board[x, y].ToServiceModel();
|
|
return new ServiceTypes.BoardState
|
|
{
|
|
Board = board,
|
|
Player1Hand = Player1Hand.Select(_ => _.ToServiceModel()).ToList(),
|
|
Player2Hand = Player2Hand.Select(_ => _.ToServiceModel()).ToList()
|
|
};
|
|
}
|
|
}
|
|
}
|