private void SaveGame(BattleshipsServiceLibrary.Game game) { using (BattleshipsDbEntities bdc = new BattleshipsDbEntities()) { BattleshipsDatabase.Game g = new BattleshipsDatabase.Game(); g.End = DateTime.Now; g.Winner = game.Winner.PlayerId; g.Loser = game.Opponent(g.Winner).PlayerId; g.Start = game.Start; foreach (Move m in game.Moves) { bdc.Turns.Add(new Turn() { Game = g.GameId, Player = m.Player, Time = m.Time, Hit = m.Result == BlockState.HIT, X = m.AtX, Y = m.AtY }); } bdc.Games.Add(g); bdc.SaveChanges(); } }
public void LeaveGame(int gameId, long playerId) { Game g = games[gameId]; //Player 2 was not connected if (g.Player1.PlayerId == playerId && g.Player2 == null) { games.Remove(gameId); } //Player 1 disconnected if (g.Player1.PlayerId == playerId) { g.Player1Left = true; } else if (g.Player2.PlayerId == playerId) { g.Player2Left = true; } else { throw new Exception(); } if (g.Winner == null) { g.Winner = g.Opponent(playerId); g.Turn = null; } if (g.Player1Left && g.Player2Left) { games.Remove(gameId); if (GameEnded != null) { GameEnded(g); } } }
public string GetGameState(int gameId, long player) { if (!games.ContainsKey(gameId)) { return("Game not initialised"); } Game game = games[gameId]; if (game.Opponent(player) == null) { return(game.IsPrivate ? $"Prepare your battlefield while waiting for friend. Game Id: {game.GameId}" : "Searching for oponent..."); } if (game.Winner?.PlayerId == player) { return($"!! VICTORY !!"); } if (game.Winner?.PlayerId == game.Opponent(player).PlayerId) { return($".. DEFEAT .."); } if (game.Opponent(player) != null && !game.OpponentReady(player)) { return($"Player {game.Opponent(player).Name} placing his ships..."); } if (game.Turn?.PlayerId == player) { return($"Your turn..."); } if (game.Turn?.PlayerId == game.Opponent(player).PlayerId) { return($"Opponents turn..."); } if (game.Opponent(player) != null && game.OpponentReady(player)) { return($"Opponent ready, place your ships..."); } throw new Exception(); }