Exemple #1
0
        /// <summary>
        /// Draw this instance on current frame.
        /// </summary>
        public void Draw()
        {
            IDrawable current;

            for (int i = 0; i < _drawablesCount; i++)
            {
                current = _drawables[i];

                if (current.Enabled)
                {
                    current.Draw(_drawContext);
                }
            }

            CurrentScene.Draw(_drawContext);

            GraphicSystem.Render();
        }
Exemple #2
0
        /// <summary>
        /// Runs the specified game assembly using the args passed.
        /// </summary>
        /// <remarks>
        /// This method should be called inside in your Program.cs Main method.
        /// </remarks>
        /// <param name="gameAssembly">The game assembly.</param>
        /// <param name="args">The arguments.</param>
        public static void Run(Assembly gameAssembly, string[] args)
        {
            using (var game = GameActivator.CreateInstance(gameAssembly))
            {
                var gs = new GraphicSystem();

                // TODO: create a StartupConfig to pass arguments as defaultFontName.
                var ts          = new MapTextSystem(game, "Slant");
                var inputSystem = new InputSystem();
                game.Initialize(
                    gs,
                    new PhysicSystem(),
                    ts,
                    inputSystem,
                    () => Terminate(gs));

                Console.CancelKeyPress += (sender, e) => Terminate(gs);

                GameActivator.Config(game, args);

                var secondsPerFrame = 1f / 120;
                var previous        = DateTime.Now;
                var lag             = 0.0;

                game.Update(previous);

                while (true)
                {
                    var current = DateTime.Now;
                    var elapsed = current - previous;
                    previous = current;
                    lag     += elapsed.TotalSeconds;

                    while (lag >= secondsPerFrame)
                    {
                        game.Update(current);
                        lag -= secondsPerFrame;
                    }

                    game.Draw();
                }
            }
        }
Exemple #3
0
 private static void Terminate(GraphicSystem gs)
 {
     gs.Terminate();
     Environment.Exit(0);
 }