示例#1
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
            BindingErrorListener.EnableExceptionOnBindingError();

            LogFactory.ConfigureFileTarget("GeishaEditor.log");

            var log = LogFactory.Create(typeof(App));

            log.Info("Geisha Editor is being started.");

            var containerBuilder = new ContainerBuilder();

            CommonModules.RegisterAll(containerBuilder);
            EngineModules.RegisterAll(containerBuilder);
            EditorModules.RegisterAll(containerBuilder);

            containerBuilder.RegisterInstance(new CSCoreAudioBackend()).As <IAudioBackend>();
            containerBuilder.RegisterInstance(new DirectXRenderingBackend()).As <IRenderingBackend>();

            _container     = containerBuilder.Build();
            _lifetimeScope = _container.BeginLifetimeScope();

            ViewRepository.Default.RegisterViewsFromCurrentlyLoadedAssemblies();

            var mainViewModel = _lifetimeScope.Resolve <MainViewModel>();

            _mainWindow = new MainWindow(mainViewModel);
            _mainWindow.Show();
            _mainWindow.LoadLayout();

            log.Info("Geisha Editor started successfully.");
        }
        public virtual void SetUp()
        {
            var renderingConfigurationBuilder = RenderingConfiguration.CreateBuilder();

            ConfigureRendering(renderingConfigurationBuilder);
            var renderingConfiguration = renderingConfigurationBuilder.Build();

            _renderForm = new RenderForm("IntegrationTestsWindow")
            {
                ClientSize = new Size(renderingConfiguration.ScreenWidth, renderingConfiguration.ScreenWidth)
            };

            if (ShowDebugWindow)
            {
                _renderForm.Show();
            }

            var containerBuilder = new ContainerBuilder();

            // Register configuration
            containerBuilder.RegisterInstance(renderingConfiguration).As <RenderingConfiguration>().SingleInstance();

            // Register engine back-ends
            containerBuilder.RegisterInstance(new CSCoreAudioBackend()).As <IAudioBackend>().SingleInstance();
            containerBuilder.RegisterInstance(new WindowsInputBackend(_renderForm)).As <IInputBackend>().SingleInstance();
            containerBuilder.RegisterInstance(new DirectXRenderingBackend(_renderForm, DriverType.Software)).As <IRenderingBackend>().SingleInstance();

            // Register common modules
            CommonModules.RegisterAll(containerBuilder);

            // Register engine modules
            EngineModules.RegisterAll(containerBuilder);

            // Register test components
            RegisterTestComponents(containerBuilder);

            // Register tested components
            containerBuilder.RegisterType <TSystemUnderTest>().AsSelf().SingleInstance();

            _container     = containerBuilder.Build();
            _lifetimeScope = _container.BeginLifetimeScope();

            SystemUnderTest = _lifetimeScope.Resolve <TSystemUnderTest>();
        }