diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2019-02-24 12:30:40 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2019-02-24 12:30:40 -0500 |
commit | 90b9831d6fb89feedeec63cb392c4535c5df60fe (patch) | |
tree | 78faf1865bc0566454254d072b85f872bbc585ea /src/main.cpp | |
parent | f264cfd7655a48f7e9a6e2fc5b1c62d6d2036025 (diff) | |
download | dispatcher-90b9831d6fb89feedeec63cb392c4535c5df60fe.tar.gz dispatcher-90b9831d6fb89feedeec63cb392c4535c5df60fe.tar.bz2 dispatcher-90b9831d6fb89feedeec63cb392c4535c5df60fe.zip |
Started state machine
The "--editor" flag can be passed to the program to start it in editor mode, which is currently nothing. The Renderer class was removed here, as each state basically needs to do its own rendering. However, refactoring to make this more elegant will probably occur in the future.
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 | } |