示例#1
0
        public async Task <Guid> HostGame(Chat.HostGameRequest req, User u)
        {
            // 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();
            }

            var bport = AppConfig.Instance.BroadcastPort;

            var gameId = Guid.NewGuid();

            var waitTask = GameListener.WaitForGame(gameId);

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

            if (game.StartProcess(true))
            {
                await waitTask;
                return(game.Id);
            }
            return(Guid.Empty);
        }
示例#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.GameIconUrl, 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;
        }