diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp index c0ba15f..7c65e81 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
@@ -1,17 +1,51 @@ | |||
1 | #include "renderer.h" | 1 | #include "renderer.h" |
2 | 2 | ||
3 | #include <random> | 3 | #include <random> |
4 | #include "renderer.h" | ||
4 | #include "simulation.h" | 5 | #include "simulation.h" |
5 | #include "level.h" | 6 | #include "level.h" |
7 | #include "editor.h" | ||
6 | 8 | ||
7 | int main(int, char**) | 9 | int main(int argc, char** argv) |
8 | { | 10 | { |
9 | std::random_device randomEngine; | 11 | std::random_device randomEngine; |
10 | std::mt19937 rng(randomEngine()); | 12 | std::mt19937 rng(randomEngine()); |
11 | 13 | ||
12 | Renderer renderer; | 14 | window_ptr win( |
15 | SDL_CreateWindow( | ||
16 | "dispatcher", | ||
17 | 100, | ||
18 | 100, | ||
19 | WINDOW_SIZE.w(), | ||
20 | WINDOW_SIZE.h(), | ||
21 | SDL_WINDOW_SHOWN)); | ||
22 | |||
23 | if (!win) | ||
24 | { | ||
25 | throw sdl_error(); | ||
26 | } | ||
27 | |||
28 | renderer_ptr ren( | ||
29 | SDL_CreateRenderer( | ||
30 | win.get(), | ||
31 | -1, | ||
32 | SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC)); | ||
33 | |||
34 | if (!ren) | ||
35 | { | ||
36 | throw sdl_error(); | ||
37 | } | ||
38 | |||
13 | Level level; | 39 | Level level; |
14 | Simulation sim(level); | 40 | |
41 | std::unique_ptr<State> state; | ||
42 | |||
43 | if (argc == 2 && !strcmp(argv[1], "--editor")) | ||
44 | { | ||
45 | state.reset(new Editor()); | ||
46 | } else { | ||
47 | state.reset(new Simulation(level)); | ||
48 | } | ||
15 | 49 | ||
16 | bool quit = false; | 50 | bool quit = false; |
17 | 51 | ||
@@ -43,10 +77,13 @@ int main(int, char**) | |||
43 | } | 77 | } |
44 | } | 78 | } |
45 | 79 | ||
46 | const Uint8* state = SDL_GetKeyboardState(NULL); | 80 | const Uint8* keystate = SDL_GetKeyboardState(NULL); |
47 | 81 | ||
48 | sim.tick(frameTime / 1000.0, state); | 82 | state->tick(frameTime / 1000.0, keystate); |
49 | 83 | ||
50 | renderer.render(sim); | 84 | SDL_SetRenderTarget(ren.get(), nullptr); |
85 | SDL_RenderClear(ren.get()); | ||
86 | state->render(ren.get()); | ||
87 | SDL_RenderPresent(ren.get()); | ||
51 | } | 88 | } |
52 | } | 89 | } |