diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2022-09-20 13:43:18 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2022-09-20 16:56:30 +0200 |
| commit | 87b4ef3a15af505f5ed5150ee1dadd2e2bc94c17 (patch) | |
| tree | f3d317088514089d0f84fb553cf9e307dffca549 /src/player | |
| parent | 14df82ee4db71509f4ec4968df439d4659ca1ac3 (diff) | |
| download | jancity-87b4ef3a15af505f5ed5150ee1dadd2e2bc94c17.tar.gz | |
Remap calls to pad/mouse/keyboard to input
Diffstat (limited to 'src/player')
| -rw-r--r-- | src/player/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/player/inc/human_player.h | 2 | ||||
| -rw-r--r-- | src/player/src/human_player.c | 40 |
3 files changed, 27 insertions, 16 deletions
diff --git a/src/player/CMakeLists.txt b/src/player/CMakeLists.txt index 3d995ee..f722a53 100644 --- a/src/player/CMakeLists.txt +++ b/src/player/CMakeLists.txt @@ -11,6 +11,7 @@ target_link_libraries(player gfx keyboard instance + input mouse pad resource diff --git a/src/player/inc/human_player.h b/src/player/inc/human_player.h index 7d28b34..173ff80 100644 --- a/src/player/inc/human_player.h +++ b/src/player/inc/human_player.h @@ -4,6 +4,7 @@ #include <camera.h> #include <keyboard.h> #include <instance.h> +#include <input.h> #include <mouse.h> #include <pad.h> #include <peripheral.h> @@ -32,6 +33,7 @@ struct human_player struct player pl; struct camera cam; union peripheral periph; + struct input in; struct sel_instance { diff --git a/src/player/src/human_player.c b/src/player/src/human_player.c index 1d2af7d..314581b 100644 --- a/src/player/src/human_player.c +++ b/src/player/src/human_player.c @@ -6,6 +6,7 @@ #include <gfx.h> #include <gui.h> #include <instance.h> +#include <input.h> #include <keyboard.h> #include <pad.h> #include <resource.h> @@ -542,26 +543,28 @@ static void update_target(struct human_player *const h) static void update_from_pad(struct human_player *const h, struct player_others *const o) { - struct pad *const p = &h->periph.pad.pad; + const struct pad *const p = &h->periph.pad.pad; + const struct input *const in = &h->in; - if (pad_justpressed(p, PAD_KEY_A)) + if (input_pad_justpressed(in, p, PAD_KEY_A)) select_instances(h, o, false, false); - else if (pad_justpressed(p, PAD_KEY_B)) + else if (input_pad_justpressed(in, p, PAD_KEY_B)) move_units(h, o); - else if (pad_justpressed(p, PAD_KEY_C)) + else if (input_pad_justpressed(in, p, PAD_KEY_C)) deselect_instances(h); - else if (pad_justpressed(p, PAD_KEY_E)) + else if (input_pad_justpressed(in, p, PAD_KEY_E)) h->top_gui ^= true; } static void update_from_touch(struct human_player *const h, struct player_others *const o) { - struct mouse *const m = &h->periph.kbm.mouse; + const struct mouse *const m = &h->periph.kbm.mouse; + const struct input *const in = &h->in; struct peripheral_kbm *const kbm = &h->periph.kbm; bool *const pan = &h->cam.pan; - if (mouse_pressed(m, MOUSE_BUTTON_LEFT) && !*pan) + if (input_mouse_pressed(in, m, MOUSE_BUTTON_LEFT) && !*pan) { enum {LONG_PRESS_THRESHOLD = 30}; @@ -573,7 +576,7 @@ static void update_from_touch(struct human_player *const h, deselect_instances(h); } } - else if (mouse_justreleased(m, MOUSE_BUTTON_LEFT)) + else if (input_mouse_justreleased(in, m, MOUSE_BUTTON_LEFT)) { if (!*pan && !select_instances(h, o, false, true)) move_units(h, o); @@ -587,19 +590,22 @@ static void update_from_touch(struct human_player *const h, static void update_from_keyboard_mouse(struct human_player *const h, struct player_others *const o) { - struct mouse *const m = &h->periph.kbm.mouse; - struct keyboard *const k = &h->periph.kbm.keyboard; + const struct mouse *const m = &h->periph.kbm.mouse; + const struct keyboard *const k = &h->periph.kbm.keyboard; + const struct input *const in = &h->in; - if (mouse_justreleased(m, MOUSE_BUTTON_LEFT)) + if (input_mouse_justreleased(in, m, MOUSE_BUTTON_LEFT)) { const bool shift_pressed = - keyboard_pressed(k, &KEYBOARD_COMBO(KEYBOARD_KEY_LSHIFT)) - || keyboard_pressed(k, &KEYBOARD_COMBO(KEYBOARD_KEY_RSHIFT)); + input_keyboard_pressed(in, k, + &KEYBOARD_COMBO(KEYBOARD_KEY_LSHIFT)) + || input_keyboard_pressed(in, k, + &KEYBOARD_COMBO(KEYBOARD_KEY_RSHIFT)); if (!select_instances(h, o, !shift_pressed, false)) deselect_instances(h); } - else if (mouse_justreleased(m, MOUSE_BUTTON_RIGHT)) + else if (input_mouse_justreleased(in, m, MOUSE_BUTTON_RIGHT)) move_units(h, o); } @@ -614,6 +620,7 @@ void human_player_update(struct human_player *const h, update_selected(h); update_target(h); peripheral_update(&h->periph); + input_update(&h->in, &h->periph); switch (h->periph.common.type) { @@ -630,7 +637,7 @@ void human_player_update(struct human_player *const h, break; } - camera_update(&h->cam, &h->periph); + camera_update(&h->cam, &h->periph, &h->in); player_update(p); } } @@ -702,7 +709,8 @@ int human_player_render(const struct human_player *const h, || render_own_units(h) || render_own_buildings(h) || render_resources(h, o->res, o->n_res) - || human_player_gui_render(h)) + || human_player_gui_render(h) + || input_render(&h->in, &h->periph)) return -1; switch (h->periph.common.type) |
