public SettingMenuState(GameWindow owner, GameFiniteStateMachine parent) : base(owner, parent)
        {
            var uiElementBehavior = new Behaviour <UiElementBase>(o =>
            {
                var floatPos  = BehaviorHelpers.EaseMouse(o.MousePosition);
                o.PositionAdd = floatPos / ((float)o.AttachedProperties["floatiness"]);
            });
            var exitButton = new TextElement(owner, "return", ".\\fonts\\toxica.ttf", 40f)
            {
                NormalColor        = Color4.Gray,
                Position           = new Vector2(0f, -0.15f),
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 50f } },
                MouseOverColor     = Color4.White,
            };

            exitButton.Clicked += args => TransitionOut("return");

            GameElements.Add(new TextElement(owner, "Settings", ".\\fonts\\toxica.ttf", 72f)
            {
                NormalColor        = Color4.DarkRed,
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 25f } },
                Position           = new Vector2(0f, -0.75f)
            });

            GameElements.Add(new TextElement(owner, "alpha 0.1", ".\\fonts\\pixelmix.ttf", 12f)
            {
                Position  = new Vector2(0.8f, 0.9f),
                Alignment = QFontAlignment.Left
            });

            GameElements.Add(exitButton);
        }
        public PauseMenuState(GameWindow owner, GameFiniteStateMachine parent) : base(owner, parent)
        {
            var uiElementBehavior = new Behaviour <UiElementBase>(o =>
            {
                var floatPos  = BehaviorHelpers.EaseMouse(o.MousePosition);
                o.PositionAdd = floatPos / ((float)o.AttachedProperties["floatiness"]);
            });

            var resumeButton = new TextElement(owner, "resume", ".\\fonts\\toxica.ttf", 40f)
            {
                NormalColor        = Color4.Gray,
                Position           = new Vector2(0f, -0.4f),
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 50f } },
                MouseOverColor     = Color4.White
            };

            resumeButton.Clicked += args => TransitionOut("return");

            var settingsButton = new TextElement(owner, "settings", ".\\fonts\\toxica.ttf", 40f)
            {
                NormalColor        = Color4.Gray,
                Position           = new Vector2(0f, -0.15f),
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 50f } },
                MouseOverColor     = Color4.White,
            };

            settingsButton.Clicked += args => TransitionOut("settings");

            var mainMenuButton = new TextElement(owner, "main menu", ".\\fonts\\toxica.ttf", 40f)
            {
                NormalColor        = Color4.Gray,
                Position           = new Vector2(0f, 0.1f),
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 50f } },
                MouseOverColor     = Color4.White,
            };

            mainMenuButton.Clicked += args => TransitionOut("main menu");

            var exitButton = new TextElement(owner, "exit", ".\\fonts\\toxica.ttf", 40f)
            {
                NormalColor        = Color4.Gray,
                Position           = new Vector2(0f, 0.35f),
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 50f } },
                MouseOverColor     = Color4.White,
            };

            exitButton.Clicked += args => StateMachine.Transition("exit");

            GameElements.Add(new TextElement(owner, "Game Paused", ".\\fonts\\toxica.ttf", 72f)
            {
                NormalColor        = Color4.DarkRed,
                Behaviours         = { { GameTriggers.MouseMove, uiElementBehavior } },
                AttachedProperties = { { "floatiness", 25f } },
                Position           = new Vector2(0f, -0.75f)
            });
            GameElements.Add(resumeButton);
            GameElements.Add(exitButton);
            GameElements.Add(settingsButton);
            GameElements.Add(mainMenuButton);
        }