예제 #1
0
            /// <summary>
            ///     Wire up the server to connect to when <see cref="IClientNetManager.ClientConnect"/> gets called.
            /// </summary>
            public void SetConnectTarget(ServerIntegrationInstance server)
            {
                var clientNetManager = ResolveDependency <IntegrationNetManager>();
                var serverNetManager = server.ResolveDependency <IntegrationNetManager>();

                if (!serverNetManager.IsRunning)
                {
                    throw new InvalidOperationException("Server net manager is not running!");
                }

                clientNetManager.NextConnectChannel = serverNetManager.MessageChannelWriter;
            }
예제 #2
0
        public GridPainter(ClientIntegrationInstance client, ServerIntegrationInstance server)
        {
            _entityPainter = new EntityPainter(client, server);
            _decalPainter  = new DecalPainter(client, server);

            _cEntityManager = client.ResolveDependency <IEntityManager>();
            _cMapManager    = client.ResolveDependency <IMapManager>();

            _sEntityManager = server.ResolveDependency <IEntityManager>();
            _sMapManager    = server.ResolveDependency <IMapManager>();

            _entities = GetEntities();
            _decals   = GetDecals();
        }
예제 #3
0
        public async Task Setup()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = Prototypes
            };

            _server = StartServerDummyTicker(options);

            await _server.WaitIdleAsync();

            _mapManager    = _server.ResolveDependency <IMapManager>();
            _entityManager = _server.ResolveDependency <IEntityManager>();
            _gameTiming    = _server.ResolveDependency <IGameTiming>();
        }
예제 #4
0
        public async Task Setup()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = Prototypes
            };

            _server = StartServer(options);

            await _server.WaitIdleAsync();

            _mapManager           = _server.ResolveDependency <IMapManager>();
            _entityManager        = _server.ResolveDependency <IEntityManager>();
            _gameTiming           = _server.ResolveDependency <IGameTiming>();
            _extensionCableSystem = _entityManager.EntitySysManager.GetEntitySystem <ExtensionCableSystem>();
        }
예제 #5
0
 public TilePainter(ClientIntegrationInstance client, ServerIntegrationInstance server)
 {
     _sTileDefinitionManager = server.ResolveDependency <ITileDefinitionManager>();
     _cResourceCache         = client.ResolveDependency <IResourceCache>();
 }
예제 #6
0
        private static async Task ConnectNetworking(ClientIntegrationInstance client, ServerIntegrationInstance server)
        {
            await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());

            // Connect.

            client.SetConnectTarget(server);

            client.Post(() => IoCManager.Resolve <IClientNetManager>().ClientConnect(null, 0, null));

            // Run some ticks for the handshake to complete and such.

            for (var i = 0; i < 10; i++)
            {
                server.RunTicks(1);
                await server.WaitIdleAsync();

                client.RunTicks(1);
                await client.WaitIdleAsync();
            }

            await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());
        }