]> git.tdb.fi Git - libs/game.git/blob - source/gameview/application.h
Disable keyboard autorepeat by default
[libs/game.git] / source / gameview / application.h
1 #ifndef MSP_GAMEVIEW_APPLICATION_H_
2 #define MSP_GAMEVIEW_APPLICATION_H_
3
4 #include <msp/core/application.h>
5 #include <msp/game/director.h>
6 #include <msp/gl/device.h>
7 #include <msp/gl/windowview.h>
8 #include <msp/graphics/display.h>
9 #include <msp/graphics/window.h>
10 #include "playerinput.h"
11 #include "presenter.h"
12
13 namespace Msp::GameView {
14
15 template<typename T, typename R>
16 class Application: public Msp::RegisteredApplication<T>
17 {
18 public:
19         using ResourcesType = R;
20
21 protected:
22         Msp::Graphics::Display display;
23         Msp::Graphics::Window window;
24         GL::Device gl_device;
25         ResourcesType resources;
26         Msp::Game::Director director;
27         GL::WindowView gl_view;
28         Presenter presenter;
29         PlayerInput player_input;
30
31 public:
32         Application();
33
34         int main() override;
35 protected:
36         void tick() override;
37 };
38
39 template<typename T, typename R>
40 Application<T, R>::Application():
41         window(display, 1920, 1080),
42         gl_device(window),
43         director(resources),
44         gl_view(window),
45         presenter(director, gl_view),
46         player_input(director, window)
47 {
48         window.set_keyboard_autorepeat(false);
49         window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Application::exit), 0));
50 }
51
52 template<typename T, typename R>
53 int Application<T, R>::main()
54 {
55         window.show();
56         return Msp::Application::main();
57 }
58
59 template<typename T, typename R>
60 void Application<T, R>::tick()
61 {
62         display.tick();
63         director.tick();
64 }
65
66 } // namespace Msp::GameView
67
68 #endif