diff options
-rw-r--r-- | src/main.cpp | 20 | ||||
-rw-r--r-- | src/timer.h | 28 |
2 files changed, 35 insertions, 13 deletions
diff --git a/src/main.cpp b/src/main.cpp index 1d3d58e..83f63e0 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
@@ -2,6 +2,7 @@ | |||
2 | #include "renderer.h" | 2 | #include "renderer.h" |
3 | #include "game.h" | 3 | #include "game.h" |
4 | #include "party.h" | 4 | #include "party.h" |
5 | #include "timer.h" | ||
5 | 6 | ||
6 | void loop(Renderer& renderer) { | 7 | void loop(Renderer& renderer) { |
7 | Game game; | 8 | Game game; |
@@ -18,11 +19,8 @@ void loop(Renderer& renderer) { | |||
18 | 19 | ||
19 | renderer.render(game); | 20 | renderer.render(game); |
20 | 21 | ||
21 | size_t inputDt = 50; | 22 | Timer inputTimer(50); |
22 | size_t inputAcc = 0; | 23 | Timer animTimer(1000/5);//30fps * 1000 t/s; |
23 | |||
24 | size_t animDt = 1000/5;//30fps * 1000 t/s; | ||
25 | size_t animAcc = 0; | ||
26 | 24 | ||
27 | size_t lastTime = SDL_GetTicks(); | 25 | size_t lastTime = SDL_GetTicks(); |
28 | 26 | ||
@@ -44,17 +42,13 @@ void loop(Renderer& renderer) { | |||
44 | keystate.up = state[SDL_SCANCODE_UP]; | 42 | keystate.up = state[SDL_SCANCODE_UP]; |
45 | keystate.down = state[SDL_SCANCODE_DOWN]; | 43 | keystate.down = state[SDL_SCANCODE_DOWN]; |
46 | 44 | ||
47 | inputAcc += frameTime; | 45 | inputTimer.accumulate(frameTime); |
48 | while (inputAcc > inputDt) { | 46 | while (inputTimer.step()) { |
49 | inputAcc -= inputDt; | ||
50 | |||
51 | party.move(game, keystate); | 47 | party.move(game, keystate); |
52 | } | 48 | } |
53 | 49 | ||
54 | animAcc += frameTime; | 50 | animTimer.accumulate(frameTime); |
55 | while (animAcc > animDt) { | 51 | while (animTimer.step()) { |
56 | animAcc -= animDt; | ||
57 | |||
58 | game.tickSpriteAnim(); | 52 | game.tickSpriteAnim(); |
59 | } | 53 | } |
60 | 54 | ||
diff --git a/src/timer.h b/src/timer.h new file mode 100644 index 0000000..0809610 --- /dev/null +++ b/src/timer.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef TIMER_H_45E2F1F9 | ||
2 | #define TIMER_H_45E2F1F9 | ||
3 | |||
4 | class Timer { | ||
5 | public: | ||
6 | |||
7 | Timer(int dt) : dt_(dt) {} | ||
8 | |||
9 | void accumulate(int t) { | ||
10 | acc_ += t; | ||
11 | } | ||
12 | |||
13 | bool step() { | ||
14 | if (acc_ > dt_) { | ||
15 | acc_ -= dt_; | ||
16 | return true; | ||
17 | } else { | ||
18 | return false; | ||
19 | } | ||
20 | } | ||
21 | |||
22 | private: | ||
23 | |||
24 | int dt_; | ||
25 | int acc_ = 0; | ||
26 | }; | ||
27 | |||
28 | #endif /* end of include guard: TIMER_H_45E2F1F9 */ | ||