Exemple #1
0
 public static void AssignLobbySlotId(Database.Domain.LobbySlot lobbySlot, Player player = null)
 {
     if (player == null)
     {
         player = Variables.Lobby.Players.FirstOrDefault(p => p.SteamId == lobbySlot.User.SteamId);
     }
     if (player == null)
     {
         LogUtils.Warn(string.Format("Could not assign lobby slot id for player: {0}({1})", lobbySlot.User.Name, lobbySlot.User.SteamId));
     }
     else
     {
         player.LobbySlotId = lobbySlot.Id;
     }
 }
Exemple #2
0
 private static void PersistLobbyStart(Lobby lobby)
 {
     try {
         using (IRepository repository = new Repository()) {
             var persistedLobby = repository.Lobbies.Include(l => l.Players).ThenInclude(p => p.User).FirstOrDefault(l => l.LobbyId == lobby.LobbyId);
             if (persistedLobby != null)
             {
                 foreach (var player in persistedLobby.Players)
                 {
                     if (player.User != null)
                     {
                         player.Position = 0;
                         repository.SetModified(player);
                     }
                     else
                     {
                         repository.Delete(player);
                     }
                 }
                 foreach (var player in lobby.Players)
                 {
                     try {
                         if (player.SteamId != 0)
                         {
                             var lobbyPlayer = UserUtils.GetUser(repository, player);
                             var lobbySlot   = persistedLobby.Players.FirstOrDefault(p => p.User != null && p.User.SteamId == player.SteamId);
                             if (lobbySlot == null)
                             {
                                 lobbySlot = new Database.Domain.LobbySlot()
                                 {
                                     Name   = player.Name,
                                     RankDM = player.RankDM,
                                     RankRM = player.RankRM,
                                     User   = lobbyPlayer,
                                     Lobby  = persistedLobby
                                 };
                                 repository.Add(lobbySlot);
                                 repository.SaveChanges();
                                 AssignLobbySlotId(lobbySlot);
                             }
                             else
                             {
                                 repository.SetModified(lobbySlot);
                             }
                             lobbySlot.Position = player.Position;
                             lobbyPlayer.Games++;
                             repository.SetModified(lobbyPlayer);
                         }
                         else
                         {
                             repository.Add(new Database.Domain.LobbySlot()
                             {
                                 Lobby    = persistedLobby,
                                 Name     = player.Name,
                                 Position = player.Position,
                             });
                         }
                     } catch (Exception e) {
                         LogUtils.Error(string.Format("Failed to finalize player - User {0}({1}) - Lobby: {2}", player.Name, player.SteamId, lobby.LobbyId), e);
                     }
                 }
                 persistedLobby.Started = DateTime.UtcNow;
                 persistedLobby.Sealed  = false;
                 repository.SetModified(persistedLobby);
                 repository.SaveChanges();
             }
         }
     } catch (Exception e) {
         LogUtils.Error("Failed to persist lobby start for lobby: " + lobby.LobbyId, e);
     }
 }