]> git.localhorst.tv Git - blobs.git/blob - src/app/State.hpp
simple planet render
[blobs.git] / src / app / State.hpp
1 #ifndef BLOBS_APP_STATE_HPP_
2 #define BLOBS_APP_STATE_HPP_
3
4 #include <SDL.h>
5
6
7 namespace blobs {
8 namespace graphics {
9         class Viewport;
10 }
11 namespace app {
12
13 class Application;
14
15 class State {
16
17         friend class Application;
18
19         void Handle(const SDL_Event &);
20         void Handle(const SDL_WindowEvent &);
21         void Update(int dt);
22         void Render(graphics::Viewport &);
23
24         virtual void OnEnter() { }
25         virtual void OnResume() { }
26         virtual void OnPause() { }
27         virtual void OnExit() { }
28
29         virtual void OnFocus() { }
30         virtual void OnBlur() { }
31         virtual void OnResize(int w, int h) { }
32
33         virtual void OnKeyDown(const SDL_KeyboardEvent &) { }
34         virtual void OnKeyUp(const SDL_KeyboardEvent &) { }
35         virtual void OnMouseDown(const SDL_MouseButtonEvent &) { }
36         virtual void OnMouseUp(const SDL_MouseButtonEvent &) { }
37         virtual void OnMouseMotion(const SDL_MouseMotionEvent &) { }
38         virtual void OnMouseWheel(const SDL_MouseWheelEvent &) { }
39         virtual void OnQuit();
40
41         virtual void OnUpdate(int dt) { }
42         virtual void OnRender(graphics::Viewport &) { }
43
44         int ref_count = 0;
45         Application *app = nullptr;
46
47 protected:
48         Application &App() {
49                 return *app;
50         }
51
52 };
53
54 }
55 }
56
57 #endif