private void _clientMain()
            {
                try
                {
                    IoCManager.InitThread(DependencyCollection);
                    ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
                    IoCManager.Register <INetManager, IntegrationNetManager>(true);
                    IoCManager.Register <IClientNetManager, IntegrationNetManager>(true);
                    IoCManager.Register <IntegrationNetManager, IntegrationNetManager>(true);
                    _options?.InitIoC?.Invoke();
                    IoCManager.BuildGraph();

                    GameController.RegisterReflection();

                    var client = DependencyCollection.Resolve <IGameControllerInternal>();

                    client.ContentRootDir        = "../../";
                    client.LoadConfigAndUserData = false;
                    _options?.BeforeStart?.Invoke();
                    client.Startup();

                    var gameLoop = new IntegrationGameLoop(DependencyCollection.Resolve <IGameTiming>(),
                                                           _fromInstanceWriter, _toInstanceReader);
                    client.OverrideMainLoop(gameLoop);
                    client.MainLoop(GameController.DisplayMode.Headless);
                }
                catch (Exception e)
                {
                    _fromInstanceWriter.TryWrite(new ShutDownMessage(e));
                    return;
                }

                _fromInstanceWriter.TryWrite(new ShutDownMessage(null));
            }
Esempio n. 2
0
            private void _clientMain()
            {
                try
                {
                    IoCManager.InitThread(DependencyCollection);
                    ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
                    IoCManager.Register <INetManager, IntegrationNetManager>(true);
                    IoCManager.Register <IClientNetManager, IntegrationNetManager>(true);
                    IoCManager.Register <IntegrationNetManager, IntegrationNetManager>(true);
                    IoCManager.Register <IModLoader, ModLoader>(true);
                    IoCManager.Register <ModLoader, ModLoader>(true);
                    _options?.InitIoC?.Invoke();
                    IoCManager.BuildGraph();

                    GameController.RegisterReflection();

                    var client = DependencyCollection.Resolve <IGameControllerInternal>();

                    if (_options?.ClientContentAssembly != null)
                    {
                        IoCManager.Resolve <ModLoader>().ClientContentAssembly = _options.ClientContentAssembly;
                    }

                    if (_options?.SharedContentAssembly != null)
                    {
                        IoCManager.Resolve <ModLoader>().SharedContentAssembly = _options.SharedContentAssembly;
                    }

                    client.LoadConfigAndUserData = false;

                    if (_options != null)
                    {
                        _options.BeforeStart?.Invoke();
                        IoCManager.Resolve <IConfigurationManager>()
                        .OverrideConVars(_options.CVarOverrides.Select(p => (p.Key, p.Value)));

                        if (_options.ExtraPrototypes != null)
                        {
                            IoCManager.Resolve <IResourceManagerInternal>()
                            .MountString("/Prototypes/__integration_extra.yml", _options.ExtraPrototypes);
                        }
                    }

                    client.Startup(() => new TestLogHandler("CLIENT"));

                    var gameLoop = new IntegrationGameLoop(DependencyCollection.Resolve <IGameTiming>(),
                                                           _fromInstanceWriter, _toInstanceReader);
                    client.OverrideMainLoop(gameLoop);
                    client.MainLoop(GameController.DisplayMode.Headless);
                }
                catch (Exception e)
                {
                    _fromInstanceWriter.TryWrite(new ShutDownMessage(e));
                    return;
                }

                _fromInstanceWriter.TryWrite(new ShutDownMessage(null));
            }
Esempio n. 3
0
        public static void Run(Action postInit, InitialWindowParameters windowParameters = null)
        {
            IoCManager.InitThread();

            ClientIoC.RegisterIoC(GameController.DisplayMode.Clyde);
            IoCManager.Register <IGameController, LiteGameController>(true);
            IoCManager.Register <IGameControllerInternal, LiteGameController>(true);
            IoCManager.Register <LiteGameController, LiteGameController>(true);
            IoCManager.BuildGraph();

            var gc = IoCManager.Resolve <LiteGameController>();

            gc.Startup(windowParameters);

            IoCManager.Resolve <ITaskManager>().RunOnMainThread(postInit);
            gc.MainLoop(GameController.DisplayMode.Clyde);

            IoCManager.Clear();
        }
Esempio n. 4
0
        /// <summary>
        /// Registers all the types into the <see cref="IoCManager"/> with <see cref="IoCManager.Register{TInterface, TImplementation}"/>
        /// </summary>
        private void RegisterIoC()
        {
            switch (Project)
            {
            case UnitTestProject.Client:
                ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
                break;

            case UnitTestProject.Server:
                ServerIoC.RegisterIoC();
                break;

            default:
                throw new NotSupportedException($"Unknown testing project: {Project}");
            }

            OverrideIoC();

            IoCManager.BuildGraph();
        }