Blaze.Server.GameSetupNotification.Notify C# (CSharp) Method

Notify() public static method

public static Notify ( Client client ) : void
client Client
return void
        public static void Notify(Client client)
        {
            var game = GameManager.Games[client.GameID];

            var data = new List<Tdf>
            {
                new TdfStruct("GAME", new List<Tdf>
                {
                    new TdfList("ADMN", TdfBaseType.Integer, new ArrayList
                    {
                        client.User.ID
                    }),
                    new TdfMap("ATTR", TdfBaseType.String, TdfBaseType.String, game.Attributes),
                    new TdfList("CAP", TdfBaseType.Integer, game.Capacity),
                    new TdfInteger("GID", game.ID),
                    new TdfString("GNAM", game.Name),
                    new TdfInteger("GPVH", 666),
                    //new TdfInteger("GSET", game.gset), TODO
                    new TdfInteger("GSID", 1),
                    new TdfInteger("GSTA", (ulong)game.State),
                    new TdfString("GTYP", "frostbite_multiplayer"),
                    new TdfList("HNET", TdfBaseType.Struct, new ArrayList
                    {
                        new List<Tdf>
                        {
                            new TdfStruct("EXIP", new List<Tdf>
                            {
                                new TdfInteger("IP", game.ExternalIP),
                                new TdfInteger("PORT", game.ExternalPort)
                            }),
                            new TdfStruct("INIP", new List<Tdf>
                            {
                                new TdfInteger("IP", game.InternalIP),
                                new TdfInteger("PORT", game.InternalPort)
                            })
                        }
                    }, true),
                    new TdfInteger("HSES", 13666),
                    new TdfInteger("MCAP", game.MaxPlayers),
                    new TdfInteger("NRES", game.NotResetable),
                    new TdfInteger("NTOP", (ulong)game.NetworkTopology),
                    new TdfString("PGID", "b6852db1-ba37-4b40-aea3-0bd16efba4f9"),
                    new TdfBlob("PGSR", new byte[] { }),
                    new TdfStruct("PHST", new List<Tdf>
                    {
                        new TdfInteger("HPID", client.User.ID),
                        new TdfInteger("HSLT", 1)
                    }),
                    new TdfInteger("PRES", (ulong)game.PresenceMode),
                    new TdfString("PSAS", "ams"),
                    new TdfInteger("QCAP", (ulong)game.QueueCapacity),
                    new TdfUnion("REAS", NetworkAddressMember.XboxClientAddress, new List<Tdf> { }),
                    new TdfStruct("VALU", new List<Tdf>
                    {
                        new TdfInteger("DCTX", 0)
                    }),
                    new TdfInteger("SEED", 2291),
                    new TdfInteger("TCAP", 0),
                    new TdfStruct("THST", new List<Tdf>
                    {
                        new TdfInteger("HPID", client.GameID),
                        new TdfInteger("HSLT", 0)
                    }),
                    new TdfString("UUID", "714b05dc-93bc-49ac-961c-cb38b574f30a"),
                    new TdfInteger("VOIP", (ulong)game.VoipTopology),
                    new TdfString("VSTR", "67")
                })
            };

            client.Notify(Component.GameManager, 0x14, 0, data);
        }
    }

Usage Example

        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);
        }
GameSetupNotification