public GameMoveResultModel(DomainModel.Player player, DomainModel.Game result)
        {
            var defender = result.GameStatus.OtherPlayer;
            var human    = player.IsComputerControlled ? defender : player;

            this.GameID            = result.ID;
            this.Result            = result.GameStatus.CurrentMoveResult;
            this.AttackerTokenType = result.GameStatus.AttackerToken.TokenType;
            this.DefenderTokenType = result.GameStatus.DefenderToken == null ? DomainModel.TokenType.Empty : result.GameStatus.DefenderToken.TokenType;
            this.AttackerTokenID   = result.GameStatus.CurrentMove.Token.ID;
            this.MoveToX           = result.GameStatus.CurrentMove.MoveTo.X;
            this.MoveToY           = result.GameStatus.CurrentMove.MoveTo.Y;
            this.Rows   = result.GameBoard.NumRows;
            this.Cols   = result.GameBoard.NumCols;
            this.Tokens = result.GameBoard.GetTokens().Select(token => new GameTokenModel(token, human.ID)).ToArray();

            switch (result.GameStatus.CurrentMoveResult)
            {
            case DomainModel.GameMoveResultType.AttackerWins:
                this.Message = string.Format("{0} attacks {1} - {0} Wins!", AttackerTokenType, DefenderTokenType);
                break;

            case DomainModel.GameMoveResultType.DefenderWins:
                this.Message = string.Format("{0} attacks {1} - {1} Wins!", AttackerTokenType, DefenderTokenType);
                break;

            case DomainModel.GameMoveResultType.BothLose:
                this.Message = string.Format("{0} attacks {1} - Everyone Loses!", AttackerTokenType, DefenderTokenType);
                break;

            case DomainModel.GameMoveResultType.FlagCapturedByAttacker:
                this.Message = string.Format("Player {0} Wins!  Game Over.", player.Name);
                break;

            case DomainModel.GameMoveResultType.AttackerOutOfPieces:
                this.Message = string.Format("Player {0} ran out of pieces.  Player {1} Wins!  Game Over.", player.Name, defender.Name);
                break;

            case DomainModel.GameMoveResultType.DefenderOutOfPieces:
                this.Message = string.Format("Player {0} ran out of pieces.  Player {1} Wins!  Game Over.", defender.Name, player.Name);
                break;

            case DomainModel.GameMoveResultType.BothOutOfPieces:
                this.Message = "Its a tie!  Game Over.";
                break;
            }
        }
 public void Add(DomainModel.Player player, DomainModel.Game result)
 {
     this.Results.Add(new GameMoveResultModel(player, result));
 }