Example #1
0
        public Guid BeginHostGame(Guid gameid, Version gameVersion, string gamename,
                                  string gameIconUrl, string password, string actualgamename, Version sasVersion, bool specators)
        {
            var hgr = new HostGameRequest(gameid, gameVersion, gamename, actualgamename, gameIconUrl, password ?? "", sasVersion, specators);

            Log.InfoFormat("BeginHostGame {0}", hgr);
            var m = new Message(new Jid(AppConfig.Instance.GameServUsername, AppConfig.Instance.ServerPath, null), this.Xmpp.MyJID, MessageType.normal, "", "hostgame");

            m.GenerateId();
            m.AddChild(hgr);
            this.Xmpp.Send(m);
            return(hgr.RequestId);
        }
Example #2
0
        public Guid HostGame(HostGameRequest req, User u)
        {
            var bport = AppConfig.Instance.BroadcastPort;

            var game = new HostedGame(Ports.NextPort, req.GameGuid, req.GameVersion,
                                      req.GameName, req.Name, req.Password, u, req.Spectators, false, true, req.RequestId, bport, req.SasVersion);

            if (game.StartProcess(true))
            {
                // Try to kill every other game this asshole started before this one.
                var others = GameListener.Games.Where(x => x.Username.Equals(u.UserName, StringComparison.InvariantCultureIgnoreCase))
                             .ToArray();
                foreach (var g in others)
                {
                    g.TryKillGame();
                }
                return(game.Id);
            }
            return(Guid.Empty);
        }
Example #3
0
        private static void HandleToServer(string source, MessageReader packet)
        {
            var messageType = (MessageType)packet.Tag;

            Console.ForegroundColor = ConsoleColor.White;
            //Console.WriteLine($"{source,-15} Server received: {packet.Tag,-2} {messageType}");

            try
            {
                var reader = packet.GetHazelReader();
                var body   = reader.PeekToEnd();
                if (SaveMessages)
                {
                    File.WriteAllBytes(Path.Combine(MessageFolder, $"send_{packet.Tag}_{allId++}.bin"), body);
                }

                switch (messageType)
                {
                case MessageType.HostGame:
                    var host = HostGameRequest.Deserialize(reader);
                    DumpToConsole(host);
                    break;

                case MessageType.JoinGame:
                    var join = JoinGameRequest.Deserialize(reader);
                    DumpToConsole(join);
                    break;

                case MessageType.GameData:
                    var gamedata = GameData.Deserialize(reader);
                    foreach (var item in gamedata)
                    {
                        HandleGameData(item, true);
                    }
                    //Directory.CreateDirectory("gamedata");
                    //File.WriteAllBytes(Path.Combine("gamedata", $"send_data_{gamedataId++}.bin"), body);
                    break;

                case MessageType.GameDataTo:
                    var gamedatato = GameDataTo.Deserialize(reader);
                    foreach (var item in gamedatato)
                    {
                        HandleGameDataTo(item, true);
                    }
                    break;

                case MessageType.GetGameListV2:
                    var gamelistrequest = GetGameListV2Request.Deserialize(reader);
                    DumpToConsole(gamelistrequest);
                    break;

                case MessageType.RemovePlayer:
                    var removeplayer = RemovePlayerRequest.Deserialize(reader);
                    DumpToConsole(removeplayer);
                    break;

                default:
                    Console.WriteLine($"Unhandled Message: {messageType} size: {body.Length}");
                    return;
                }

                if (reader.GetBytesLeft() > 0 && LogNotConsumed)
                {
                    Console.WriteLine($"[{messageType}]{reader.GetBytesLeft()} bytes not cunsumed");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error handling ToServer: " + ex.Message);
            }
        }