From 90b9831d6fb89feedeec63cb392c4535c5df60fe Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 24 Feb 2019 12:30:40 -0500 Subject: 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. --- src/main.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) (limited to 'src/main.cpp') 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 @@ #include "renderer.h" #include +#include "renderer.h" #include "simulation.h" #include "level.h" +#include "editor.h" -int main(int, char**) +int main(int argc, char** argv) { std::random_device randomEngine; std::mt19937 rng(randomEngine()); - Renderer renderer; + window_ptr win( + SDL_CreateWindow( + "dispatcher", + 100, + 100, + WINDOW_SIZE.w(), + WINDOW_SIZE.h(), + SDL_WINDOW_SHOWN)); + + if (!win) + { + throw sdl_error(); + } + + renderer_ptr ren( + SDL_CreateRenderer( + win.get(), + -1, + SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC)); + + if (!ren) + { + throw sdl_error(); + } + Level level; - Simulation sim(level); + + std::unique_ptr state; + + if (argc == 2 && !strcmp(argv[1], "--editor")) + { + state.reset(new Editor()); + } else { + state.reset(new Simulation(level)); + } bool quit = false; @@ -43,10 +77,13 @@ int main(int, char**) } } - const Uint8* state = SDL_GetKeyboardState(NULL); + const Uint8* keystate = SDL_GetKeyboardState(NULL); - sim.tick(frameTime / 1000.0, state); + state->tick(frameTime / 1000.0, keystate); - renderer.render(sim); + SDL_SetRenderTarget(ren.get(), nullptr); + SDL_RenderClear(ren.get()); + state->render(ren.get()); + SDL_RenderPresent(ren.get()); } } -- cgit 1.4.1