public Game(ClientObject client, MediusCreateGameRequest createGame, DMEObject dmeServer) { Id = IdCounter++; ApplicationId = createGame.ApplicationID; GameName = createGame.GameName; MinPlayers = createGame.MinPlayers; MaxPlayers = createGame.MaxPlayers; GameLevel = createGame.GameLevel; PlayerSkillLevel = createGame.PlayerSkillLevel; RulesSet = createGame.RulesSet; GenericField1 = createGame.GenericField1; GenericField2 = createGame.GenericField2; GenericField3 = createGame.GenericField3; GamePassword = createGame.GamePassword; SpectatorPassword = createGame.SpectatorPassword; GameHostType = createGame.GameHostType; Attributes = createGame.Attributes; WorldStatus = MediusWorldStatus.WorldPendingCreation; utcTimeCreated = DateTime.UtcNow; utcTimeEmpty = null; DMEServer = dmeServer; ChannelId = client.CurrentChannelId; ChatChannel = Program.GetChannelById(ChannelId); ChatChannel?.RegisterGame(this); Host = client; }
public void CreateGame(ClientSocket client, MediusCreateGameRequest request) { // Ensure the name is unique // If the host leaves then we unreserve the name if (Program.Games.Any(x => x.WorldStatus != MediusWorldStatus.WorldClosed && x.WorldStatus != MediusWorldStatus.WorldInactive && x.GameName == request.GameName && x.Host != null && x.Host.IsConnected)) { client.ClientObject.AddLobbyMessage(new RT_MSG_SERVER_APP() { AppMessage = new MediusCreateGameResponse() { MessageID = request.MessageID, MediusWorldID = -1, StatusCode = MediusCallbackStatus.MediusGameNameExists } }); return; } // var dme = GetFreeDme()?.ClientObject as DMEObject; if (dme == null) { client.ClientObject.AddLobbyMessage(new RT_MSG_SERVER_APP() { AppMessage = new MediusCreateGameResponse() { MessageID = request.MessageID, MediusWorldID = -1, StatusCode = MediusCallbackStatus.MediusDMEError } }); return; } var game = new Game(client.ClientObject, request, dme); Program.Games.Add(game); Console.WriteLine($"DEBUG: GAME ADDED"); dme.AddProxyMessage(new RT_MSG_SERVER_APP() { AppMessage = new MediusServerCreateGameWithAttributesRequest() { MessageID = $"{game.Id}-{client.ClientObject.ClientAccount.AccountId}-{request.MessageID}", MediusWorldUID = (uint)game.Id, Attributes = game.Attributes, ApplicationID = Program.Settings.ApplicationId, MaxClients = game.MaxPlayers } }); }
private void FromCreateGameRequest(MediusCreateGameRequest createGame) { ApplicationId = createGame.ApplicationID; GameName = createGame.GameName; MinPlayers = createGame.MinPlayers; MaxPlayers = createGame.MaxPlayers; GameLevel = createGame.GameLevel; PlayerSkillLevel = createGame.PlayerSkillLevel; RulesSet = createGame.RulesSet; GenericField1 = createGame.GenericField1; GenericField2 = createGame.GenericField2; GenericField3 = createGame.GenericField3; GenericField4 = createGame.GenericField4; GenericField5 = createGame.GenericField5; GenericField6 = createGame.GenericField6; GenericField7 = createGame.GenericField7; GenericField8 = createGame.GenericField8; GamePassword = createGame.GamePassword; SpectatorPassword = createGame.SpectatorPassword; GameHostType = createGame.GameHostType; Attributes = createGame.Attributes; }