Beispiel #1
0
 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;
 }
Beispiel #2
0
        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
                }
            });
        }
Beispiel #3
0
 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;
 }