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); }
public static void HandleRequest(Request request) { var gameID = (TdfInteger)request.Data["GID"]; var gameState = (TdfInteger)request.Data["GSTA"]; Log.Info(string.Format("Client {0} changing game {1} state to {2}", request.Client.ID, gameID.Value, (GameState)gameState.Value)); var game = GameManager.Games[gameID.Value]; game.State = (GameState)gameState.Value; request.Reply(); GameStateChangeNotification.Notify(request.Client); }