예제 #1
0
        public void Begin()
        {
            this.scene = new Scene {
                DrawBelow = true
            };

            scene.Update      += (sender, gameTime) => Update?.Invoke(gameTime);
            scene.Draw        += Scene_Draw;
            scene.UpdateInput += Scene_UpdateInput;

            sceneStack.Add(scene);
        }
        private static void CreateGameScene(ISceneStack stack)
        {
            // Here we build a simple scene for a "game" where the
            // player can move a big white circle around the screen.
            var   gameInputHandler = NewInputHandler();
            Scene gameScene        = new Scene {
                InputHandler = gameInputHandler
            };

            Vector2 position = 0.5 * (Vector2)Display.CurrentWindow.Size;
            Vector2 velocity = Vector2.Zero;

            var gamepad = gameInputHandler.Gamepads.First();

            gamepad.ButtonPressed += (sender, e) =>
            {
                if (e.Button == GamepadButton.Back)
                {
                    gameScene.IsFinished = true;
                }
            };

            gamepad.LeftStickChanged += (sender, e) =>
            {
                velocity = 500 * gamepad.LeftStick;
            };

            gameScene.Update += (sender, e) =>
            {
                position += velocity * e.TotalSeconds;
            };

            var font = new Font(Font.AgateSerif)
            {
                Size  = 22,
                Style = FontStyles.Bold
            };

            gameScene.Redraw += (sender, e) =>
            {
                Display.Clear(Color.Blue);
                font.DrawText(0, 0, "Press escape to go back to title screen.");

                Display.Primitives.FillCircle(Color.White, position, 40);
            };

            stack.Add(gameScene);
        }