diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2021-11-14 01:27:15 +0100 |
---|---|---|
committer | Johnny Richard <johnny@johnnyrichard.com> | 2021-11-14 01:27:15 +0100 |
commit | e415b62a2e85f44e6ff285e08b16525605d2fc0f (patch) | |
tree | f31f2ad1c8309b4fc5c5bfde2172efdb10076db3 /src/controller.c | |
parent | f584871064596b52efe12c2f8258f0839f6eb0fa (diff) |
controller_t: Reduce memory usage using bitwise
Diffstat (limited to 'src/controller.c')
-rw-r--r-- | src/controller.c | 72 |
1 files changed, 46 insertions, 26 deletions
diff --git a/src/controller.c b/src/controller.c index 09757c4..4e488e9 100644 --- a/src/controller.c +++ b/src/controller.c @@ -38,39 +38,59 @@ controller_update(controller_t *self, { if (event->type == SDL_KEYDOWN) { switch (event->key.keysym.sym) { - case SDLK_UP: - self->up = true; - break; - case SDLK_DOWN: - self->down = true; - break; - case SDLK_LEFT: - self->left = true; - break; - case SDLK_RIGHT: - self->right = true; - break; + case SDLK_UP: + self->pressed_buttons |= BTN_UP; + break; + case SDLK_DOWN: + self->pressed_buttons |= BTN_DOWN; + break; + case SDLK_LEFT: + self->pressed_buttons |= BTN_LEFT; + break; + case SDLK_RIGHT: + self->pressed_buttons |= BTN_RIGHT; + break; } } if (event->type == SDL_KEYUP) { switch (event->key.keysym.sym) { - case SDLK_UP: - self->up = false; - break; + case SDLK_UP: + self->pressed_buttons ^= BTN_UP; + break; + case SDLK_DOWN: + self->pressed_buttons ^= BTN_DOWN; + break; + case SDLK_LEFT: + self->pressed_buttons ^= BTN_LEFT; + break; + case SDLK_RIGHT: + self->pressed_buttons ^= BTN_RIGHT; + break; + } + } +} - case SDLK_DOWN: - self->down = false; - break; +bool +controller_is_up_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_UP; +} - case SDLK_LEFT: - self->left = false; - break; +bool +controller_is_down_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_DOWN; +} - case SDLK_RIGHT: - self->right = false; - break; - } - } +bool +controller_is_right_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_RIGHT; } +bool +controller_is_left_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_LEFT; +} |