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 Player1Hand { get; set; } public IReadOnlyCollection 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() }; } } }