diff --git a/Blarg.GameFramework.SDL2/SDLLooper.cs b/Blarg.GameFramework.SDL2/SDLLooper.cs index 59e8392..1b8df26 100644 --- a/Blarg.GameFramework.SDL2/SDLLooper.cs +++ b/Blarg.GameFramework.SDL2/SDLLooper.cs @@ -163,6 +163,12 @@ namespace Blarg.GameFramework ReleaseSDL(); } + public override void Quit() + { + Logger.Info(LOG_TAG, "Quit signaled. Main loop will exit."); + _isQuitting = true; + } + private void MainLoop() { _isWindowActive = true; diff --git a/Blarg.GameFramework/BaseLooper.cs b/Blarg.GameFramework/BaseLooper.cs index 8480803..9b63794 100644 --- a/Blarg.GameFramework/BaseLooper.cs +++ b/Blarg.GameFramework/BaseLooper.cs @@ -32,6 +32,7 @@ namespace Blarg.GameFramework public bool IsRunningSlowly { get; protected set; } public abstract void Run(IGameApp gameApp, IPlatformConfiguration config); + public abstract void Quit(); protected void OnAppGainFocus() { diff --git a/Blarg.GameFramework/ILooper.cs b/Blarg.GameFramework/ILooper.cs index 7ede936..7fd53ab 100644 --- a/Blarg.GameFramework/ILooper.cs +++ b/Blarg.GameFramework/ILooper.cs @@ -27,6 +27,7 @@ namespace Blarg.GameFramework bool IsRunningSlowly { get; } void Run(IGameApp gameApp, IPlatformConfiguration config); + void Quit(); } } diff --git a/Game.Core/GameApp.cs b/Game.Core/GameApp.cs index 820cb56..691965e 100644 --- a/Game.Core/GameApp.cs +++ b/Game.Core/GameApp.cs @@ -55,6 +55,8 @@ namespace Game public void OnUpdate(float delta) { + if (Platform.Keyboard.IsPressed(Blarg.GameFramework.Input.Key.Escape)) + Platform.Looper.Quit(); } public void Dispose()