diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/main.cpp b/src/main.cpp index e91f8f0..8bd7f89 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
@@ -4,20 +4,51 @@ | |||
4 | 4 | ||
5 | void loop(Renderer& renderer) { | 5 | void loop(Renderer& renderer) { |
6 | Game game; | 6 | Game game; |
7 | game.addSprite(Sprite("../res/lucas.png", renderer)); | 7 | int playerSpriteId = game.addSprite(Sprite("../res/lucas.png", renderer)); |
8 | 8 | ||
9 | renderer.render(game); | 9 | renderer.render(game); |
10 | 10 | ||
11 | size_t inputDt = 50; | ||
12 | size_t inputAcc = 0; | ||
13 | |||
14 | size_t lastTime = SDL_GetTicks(); | ||
15 | |||
11 | for (;;) { | 16 | for (;;) { |
17 | size_t currentTime = SDL_GetTicks(); | ||
18 | size_t frameTime = currentTime - lastTime; | ||
19 | lastTime = currentTime; | ||
20 | |||
12 | SDL_Event e; | 21 | SDL_Event e; |
13 | while (SDL_PollEvent(&e)) | 22 | while (SDL_PollEvent(&e)) { |
14 | { | 23 | if (e.type == SDL_QUIT) { |
15 | if (e.type == SDL_QUIT) | ||
16 | { | ||
17 | return; | 24 | return; |
18 | } | 25 | } |
19 | } | 26 | } |
20 | 27 | ||
28 | Sprite& playerSprite = game.getSprite(playerSpriteId); | ||
29 | const Uint8* state = SDL_GetKeyboardState(NULL); | ||
30 | |||
31 | inputAcc += frameTime; | ||
32 | while (inputAcc > inputDt) { | ||
33 | inputAcc -= inputDt; | ||
34 | |||
35 | if (state[SDL_SCANCODE_LEFT]) { | ||
36 | playerSprite.setX(playerSprite.getX()-8); | ||
37 | } | ||
38 | |||
39 | if (state[SDL_SCANCODE_RIGHT]) { | ||
40 | playerSprite.setX(playerSprite.getX()+8); | ||
41 | } | ||
42 | |||
43 | if (state[SDL_SCANCODE_UP]) { | ||
44 | playerSprite.setY(playerSprite.getY()-8); | ||
45 | } | ||
46 | |||
47 | if (state[SDL_SCANCODE_DOWN]) { | ||
48 | playerSprite.setY(playerSprite.getY()+8); | ||
49 | } | ||
50 | } | ||
51 | |||
21 | renderer.render(game); | 52 | renderer.render(game); |
22 | } | 53 | } |
23 | } | 54 | } |