summary refs log tree commit diff stats
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp49
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
7int main(int, char**) 9int 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}