Blaze.Server.CreateGameCommand.HandleRequest C# (CSharp) Method

HandleRequest() public static method

public static HandleRequest ( Request request ) : void
request Request
return void
        public static void HandleRequest(Request request)
        {
            var attr = (TdfMap)request.Data["ATTR"];
            var gameName = (TdfString)request.Data["GNAM"];
            var gameSettings = (TdfInteger)request.Data["GSET"];
            var playerCapacity = (TdfList)request.Data["PCAP"];
            var igno = (TdfInteger)request.Data["IGNO"];
            var pmax = (TdfInteger)request.Data["PMAX"];
            var nres = (TdfInteger)request.Data["NRES"];

            var notResetable = (TdfInteger)request.Data["NTOP"];
            var voip = (TdfInteger)request.Data["VOIP"];

            var presence = (TdfInteger)request.Data["PRES"];
            var qcap = (TdfInteger)request.Data["QCAP"];

            var game = new Game();

            game.ClientID = request.Client.ID;

            game.Name = gameName.Value;
            game.Attributes = attr.Map;
            game.Capacity = playerCapacity.List;

            game.Level = attr.Map["level"].ToString();
            game.GameType = attr.Map["levellocation"].ToString();

            game.MaxPlayers = (ushort)pmax.Value;
            game.NotResetable = (byte)nres.Value;
            game.QueueCapacity = (ushort)qcap.Value;
            game.PresenceMode = (PresenceMode)presence.Value;
            game.State = GameState.Initializing;

            game.NetworkTopology = (GameNetworkTopology)notResetable.Value;
            game.VoipTopology = (VoipTopology)voip.Value;

            game.Settings = gameSettings.Value;

            game.InternalIP = request.Client.InternalIP;
            game.InternalPort = request.Client.InternalPort;

            game.ExternalIP = request.Client.ExternalIP;
            game.ExternalPort = request.Client.ExternalPort;

            GameManager.Add(game);

            request.Client.GameID = game.ID;

            Log.Info($"Client {request.Client.ID} creating game {game.ID} ({game.Name})");

            var data = new List<Tdf>
            {
                new TdfInteger("GID", (ulong)game.ID)
            };

            request.Reply(0, data);

            GameStateChangeNotification.Notify(request.Client);
            GameSetupNotification.Notify(request.Client);
        }
    }

Usage Example

コード例 #1
0
        public static void HandleRequest(Request request)
        {
            switch (request.CommandID)
            {
            case 1:
                CreateGameCommand.HandleRequest(request);
                break;

            case 2:
                Log.Warn("DESTROY GAME");
                break;

            case 3:
                AdvanceGameStateCommand.HandleRequest(request);
                break;

            case 4:
                SetGameSettingsCommand.HandleRequest(request);
                break;

            case 5:
                SetPlayerCapacityCommand.HandleRequest(request);
                break;

            case 7:
                SetGameAttributesCommand.HandleRequest(request);
                break;

            case 9:
                JoinGameCommand.HandleRequest(request);
                break;

            case 0xB:
                Log.Warn("*GameManager->HandleRemovePlayerCommand*");
                //HandleRemovePlayerCommand(clientId, request, stream);
                break;

            case 0xF:
                FinalizeGameCreationCommand.HandleRequest(request);
                break;

            case 0x1D:
                UpdateMeshConnectionCommand.HandleRequest(request);
                break;

            case 0x27:
                UpdateGameNameCommand.HandleRequest(request);
                break;

            default:
                Log.Warn(string.Format("Unhandled request: {0} {1}", request.ComponentID, request.CommandID));
                break;
            }
        }
CreateGameCommand