X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FState.hpp;h=dc73e21fc90546920c8ea9b4bb830f730986ac4a;hb=cacc0641e5174d8b46e7a7086be6a45c87ab3642;hp=4462904ad5146f13b6cd5a21f961ef8ae110a329;hpb=91dfd6cd62ea0723c3c83572b4ebfa4ef7b4ac5f;p=blobs.git diff --git a/src/app/State.hpp b/src/app/State.hpp index 4462904..dc73e21 100644 --- a/src/app/State.hpp +++ b/src/app/State.hpp @@ -5,6 +5,9 @@ namespace blobs { +namespace graphics { + class Viewport; +} namespace app { class Application; @@ -16,7 +19,7 @@ class State { void Handle(const SDL_Event &); void Handle(const SDL_WindowEvent &); void Update(int dt); - void Render(); + void Render(graphics::Viewport &); virtual void OnEnter() { } virtual void OnResume() { } @@ -25,13 +28,26 @@ class State { virtual void OnFocus() { } virtual void OnBlur() { } - virtual void OnResize() { } + virtual void OnResize(int w, int h) { } + + virtual void OnKeyDown(const SDL_KeyboardEvent &) { } + virtual void OnKeyUp(const SDL_KeyboardEvent &) { } + virtual void OnMouseDown(const SDL_MouseButtonEvent &) { } + virtual void OnMouseUp(const SDL_MouseButtonEvent &) { } + virtual void OnMouseMotion(const SDL_MouseMotionEvent &) { } + virtual void OnMouseWheel(const SDL_MouseWheelEvent &) { } + virtual void OnQuit(); - virtual void OnEvent(const SDL_Event &); - virtual void OnUpdate(int dt); - virtual void OnRender(); + virtual void OnUpdate(int dt) { } + virtual void OnRender(graphics::Viewport &) { } int ref_count = 0; + Application *app = nullptr; + +protected: + Application &App() { + return *app; + } };