public GameSessionService(
            ISceneHost scene,
            IUserSessions sessions,
            IConfiguration configuration,
            IEnvironment environment,
            IDelegatedTransports pools,
            ManagementClientAccessor management,
            ILogger logger,
            Func <IEnumerable <IGameSessionEventHandler> > eventHandlers)
        {
            _management    = management;
            _scene         = scene;
            _sessions      = sessions;
            _configuration = configuration;
            _logger        = logger;
            _environment   = environment;
            _pools         = pools;

            _eventHandlers = eventHandlers;

            scene.Shuttingdown.Add(args =>
            {
                CloseGameServerProcess();
                return(Task.FromResult(true));
            });
            scene.Connecting.Add(this.PeerConnecting);
            scene.Connected.Add(this.PeerConnected);
            scene.Disconnected.Add((args) => this.PeerDisconnecting(args.Peer));
            scene.AddRoute("player.ready", ReceivedReady, _ => _);
            scene.AddRoute("player.faulted", ReceivedFaulted, _ => _);
        }
Exemplo n.º 2
0
        public GameSessionService(
            ISceneHost scene,
            IConfiguration configuration,
            IEnvironment environment,
            IDelegatedTransports pools,
            ManagementClientAccessor management,
            ILogger logger,
            IAnalyticsService analytics)
        {
            _analytics     = analytics;
            _management    = management;
            _scene         = scene;
            _configuration = configuration;
            _logger        = logger;
            _environment   = environment;
            _pools         = pools;


            _configuration.SettingsChanged += OnSettingsChange;
            OnSettingsChange(_configuration, _configuration.Settings);

            scene.Shuttingdown.Add(args =>
            {
                _sceneCts.Cancel();
                return(Task.CompletedTask);
            });
            scene.Connecting.Add(this.PeerConnecting);
            scene.Connected.Add(this.PeerConnected);
            scene.Disconnected.Add((args) => this.PeerDisconnecting(args.Peer));
            scene.AddRoute("player.ready", ReceivedReady, _ => _);
            scene.AddRoute("player.faulted", ReceivedFaulted, _ => _);
        }
Exemplo n.º 3
0
 public LocalServer(
     IEnvironment env,
     IDelegatedTransports pools,
     ILogger logger)
 {
     _logger      = logger;
     _environment = env;
     this.pools   = pools;
 }
        public GameSessionService(
            ISceneHost scene,
            IUserSessions sessions,
            IConfiguration configuration,
            IEnvironment environment,
            IDelegatedTransports pools,
            ILogger logger,
            Func <IEnumerable <IGameSessionEventHandler> > eventHandlers)
        {
            _scene         = scene;
            _sessions      = sessions;
            _configuration = configuration;
            _logger        = logger;
            _environment   = environment;
            _pools         = pools;

            _eventHandlers = eventHandlers;

            scene.Shuttingdown.Add(args =>
            {
                _logger.Log(LogLevel.Trace, "gameserver", $"Shutting down gamesession scene {_scene.Id}.", new { _scene.Id, Port = _port });

                try
                {
                    if (_gameServerProcess != null && !_gameServerProcess.HasExited)
                    {
                        _gameServerProcess.Close();
                        _gameServerProcess = null;
                    }
                }
                catch { }
                finally
                {
                    _portLease?.Dispose();
                }
                _logger.Log(LogLevel.Trace, "gameserver", $"gamesession scene {_scene.Id} shut down.", new
                {
                    _scene.Id,
                    Port = _port
                });

                return(Task.FromResult(true));
            });
            scene.Connecting.Add(this.PeerConnecting);
            scene.Connected.Add(this.PeerConnected);
            scene.Disconnected.Add((args) => this.PeerDisconnecting(args.Peer));
            scene.AddRoute("player.ready", ReceivedReady, _ => _);
            scene.AddRoute("player.faulted", ReceivedFaulted, _ => _);
        }