summary refs log tree commit diff stats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-03 12:33:03 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-03 12:33:03 -0500
commit683e22c419757744ce853c35d732f607ddb9af16 (patch)
treebc31c1c08f19d270f70b27737d4f6944d30759b7 /src/main.cpp
parent8d7ef2b2ae3ddff204f5934fe67c535d7f1345e9 (diff)
downloadtanetane-683e22c419757744ce853c35d732f607ddb9af16.tar.gz
tanetane-683e22c419757744ce853c35d732f607ddb9af16.tar.bz2
tanetane-683e22c419757744ce853c35d732f607ddb9af16.zip
Added input system
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/main.cpp b/src/main.cpp index 3ac4d09..771aa1c 100644 --- a/src/main.cpp +++ b/src/main.cpp
@@ -9,15 +9,15 @@
9#include "camera_system.h" 9#include "camera_system.h"
10#include "animation_system.h" 10#include "animation_system.h"
11#include "character_system.h" 11#include "character_system.h"
12#include "input_system.h"
12 13
13void loop(Renderer& renderer, Mixer& mixer) { 14void loop(Renderer& renderer) {
14 Game game; 15 Game game;
15 game.emplaceSystem<TransformSystem>(); 16 game.emplaceSystem<TransformSystem>();
16 game.emplaceSystem<CameraSystem>(); 17 game.emplaceSystem<InputSystem>();
17 game.emplaceSystem<AnimationSystem>();
18 game.emplaceSystem<CharacterSystem>(); 18 game.emplaceSystem<CharacterSystem>();
19 19 game.emplaceSystem<AnimationSystem>();
20 Input keystate; 20 game.emplaceSystem<CameraSystem>();
21 21
22 auto map = std::make_unique<Map>("../res/map1.tmx", renderer); 22 auto map = std::make_unique<Map>("../res/map1.tmx", renderer);
23 game.setMap(std::move(map)); 23 game.setMap(std::move(map));
@@ -25,6 +25,8 @@ void loop(Renderer& renderer, Mixer& mixer) {
25 int lucasSprite = game.emplaceSprite(); 25 int lucasSprite = game.emplaceSprite();
26 game.getSystem<TransformSystem>().initSprite(lucasSprite, {32, 32}); 26 game.getSystem<TransformSystem>().initSprite(lucasSprite, {32, 32});
27 game.getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/lucas_anim.txt", renderer); 27 game.getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/lucas_anim.txt", renderer);
28 game.getSprite(lucasSprite).controllable = true;
29 game.getSystem<CharacterSystem>().initSprite(lucasSprite);
28 30
29 int kumaSprite = game.emplaceSprite(); 31 int kumaSprite = game.emplaceSprite();
30 game.getSystem<TransformSystem>().initSprite(kumaSprite, {32, 32}); 32 game.getSystem<TransformSystem>().initSprite(kumaSprite, {32, 32});
@@ -46,8 +48,6 @@ void loop(Renderer& renderer, Mixer& mixer) {
46 48
47 renderer.render(game); 49 renderer.render(game);
48 50
49 Timer inputTimer(33);
50
51 size_t lastTime = SDL_GetTicks(); 51 size_t lastTime = SDL_GetTicks();
52 52
53 for (;;) { 53 for (;;) {
@@ -55,33 +55,15 @@ void loop(Renderer& renderer, Mixer& mixer) {
55 size_t frameTime = currentTime - lastTime; 55 size_t frameTime = currentTime - lastTime;
56 lastTime = currentTime; 56 lastTime = currentTime;
57 57
58 SDL_Event e;
59 while (SDL_PollEvent(&e)) {
60 if (e.type == SDL_QUIT || (e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE)) {
61 return;
62 } else if (e.type == SDL_KEYDOWN && (e.key.keysym.sym == SDLK_LSHIFT || e.key.keysym.sym == SDLK_RSHIFT)) {
63 game.getSystem<CharacterSystem>().beginCrouch(lucasSprite);
64 } else if (e.type == SDL_KEYUP && (e.key.keysym.sym == SDLK_LSHIFT || e.key.keysym.sym == SDLK_RSHIFT)) {
65 game.getSystem<CharacterSystem>().endCrouch(lucasSprite);
66 }
67 }
68
69 const Uint8* state = SDL_GetKeyboardState(NULL);
70 keystate.left = state[SDL_SCANCODE_LEFT];
71 keystate.right = state[SDL_SCANCODE_RIGHT];
72 keystate.up = state[SDL_SCANCODE_UP];
73 keystate.down = state[SDL_SCANCODE_DOWN];
74
75 inputTimer.accumulate(frameTime);
76 while (inputTimer.step()) {
77 game.getSystem<CharacterSystem>().moveSprite(lucasSprite, mixer, keystate);
78 }
79
80 for (System& system : game.systems()) { 58 for (System& system : game.systems()) {
81 system.tick(frameTime); 59 system.tick(frameTime);
82 } 60 }
83 61
84 renderer.render(game); 62 renderer.render(game);
63
64 if (game.shouldQuit()) {
65 return;
66 }
85 } 67 }
86} 68}
87 69
@@ -89,9 +71,8 @@ int main(int, char**) {
89 try 71 try
90 { 72 {
91 Renderer renderer; 73 Renderer renderer;
92 Mixer mixer;
93 74
94 loop(renderer, mixer); 75 loop(renderer);
95 } catch (const sdl_error& ex) 76 } catch (const sdl_error& ex)
96 { 77 {
97 std::cout << "SDL error (" << ex.what() << ")" << std::endl; 78 std::cout << "SDL error (" << ex.what() << ")" << std::endl;