Exemplo n.º 1
0
        public Application()
        {
            Assembly renderAssembly = Assembly.GetAssembly(typeof(RenderService));
            Assembly inputAssembly = Assembly.GetAssembly(typeof(InputService));

            Factory drawFactory = new SlimDX.Direct2D.Factory();

            GameLoader gameLoader = new GameLoader("game.kgl", new Assembly[] { renderAssembly, inputAssembly }, die);

            game = gameLoader.CreateGame();

            renderService = game.GetService<RenderService>();
            renderService.Dpi = drawFactory.DesktopDpi;

            if (renderService.Width == 0)
            {
                renderService.Width = 800;
            }

            if (renderService.Height == 0)
            {
                renderService.Height = 600;
            }

            PointF pixelSize = renderService.ConvertDipsToPixels(new PointF(renderService.Width, renderService.Height));
            Size size = new Size((int)pixelSize.X, (int)pixelSize.Y);

            form = new RenderForm(game.Name)
            {
                ClientSize = size,
                FormBorderStyle = FormBorderStyle.FixedSingle,
                MaximizeBox = false
            };

            renderService.RenderTarget = new WindowRenderTarget(drawFactory, new WindowRenderTargetProperties()
            {
                Handle = form.Handle,
                PixelSize = size
            });

            inputService = game.GetService<InputService>();
            inputService.Form = form;

            int y = (int)((SystemInformation.VirtualScreen.Height - renderService.Height * renderService.Dpi.Height / 96.0) / 2);
            if (y < 0) y = 0;
            int x = (int)((SystemInformation.VirtualScreen.Width - renderService.Width * renderService.Dpi.Width / 96.0) / 2);
            if (x < 0) x = 0;
            form.SetDesktopLocation(x, y);
        }