Mercurial > molko
diff libmlk-core/mlk/core/event.c @ 613:f76cada0bbb2
misc: switch to SDL3
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 20 Aug 2023 11:14:58 +0200 |
parents | 95792046d3d2 |
children | 281608524dd1 |
line wrap: on
line diff
--- a/libmlk-core/mlk/core/event.c Sun Aug 20 10:48:57 2023 +0200 +++ b/libmlk-core/mlk/core/event.c Sun Aug 20 11:14:58 2023 +0200 @@ -16,6 +16,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include <string.h> + #include <SDL.h> #include "event.h" @@ -180,28 +182,28 @@ int button; enum mlk_gamepad_button value; } pads[] = { - { SDL_CONTROLLER_BUTTON_A, MLK_GAMEPAD_BUTTON_A }, - { SDL_CONTROLLER_BUTTON_B, MLK_GAMEPAD_BUTTON_B }, - { SDL_CONTROLLER_BUTTON_X, MLK_GAMEPAD_BUTTON_X }, - { SDL_CONTROLLER_BUTTON_Y, MLK_GAMEPAD_BUTTON_Y }, - { SDL_CONTROLLER_BUTTON_BACK, MLK_GAMEPAD_BUTTON_BACK }, - { SDL_CONTROLLER_BUTTON_GUIDE, MLK_GAMEPAD_BUTTON_LOGO }, - { SDL_CONTROLLER_BUTTON_START, MLK_GAMEPAD_BUTTON_START }, - { SDL_CONTROLLER_BUTTON_LEFTSTICK, MLK_GAMEPAD_BUTTON_LTHUMB }, - { SDL_CONTROLLER_BUTTON_RIGHTSTICK, MLK_GAMEPAD_BUTTON_RTHUMB }, - { SDL_CONTROLLER_BUTTON_LEFTSHOULDER, MLK_GAMEPAD_BUTTON_LSHOULDER }, - { SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, MLK_GAMEPAD_BUTTON_RSHOULDER }, - { SDL_CONTROLLER_BUTTON_DPAD_UP, MLK_GAMEPAD_BUTTON_UP }, - { SDL_CONTROLLER_BUTTON_DPAD_DOWN, MLK_GAMEPAD_BUTTON_DOWN }, - { SDL_CONTROLLER_BUTTON_DPAD_LEFT, MLK_GAMEPAD_BUTTON_LEFT }, - { SDL_CONTROLLER_BUTTON_DPAD_RIGHT, MLK_GAMEPAD_BUTTON_RIGHT }, + { SDL_GAMEPAD_BUTTON_A, MLK_GAMEPAD_BUTTON_A }, + { SDL_GAMEPAD_BUTTON_B, MLK_GAMEPAD_BUTTON_B }, + { SDL_GAMEPAD_BUTTON_X, MLK_GAMEPAD_BUTTON_X }, + { SDL_GAMEPAD_BUTTON_Y, MLK_GAMEPAD_BUTTON_Y }, + { SDL_GAMEPAD_BUTTON_BACK, MLK_GAMEPAD_BUTTON_BACK }, + { SDL_GAMEPAD_BUTTON_GUIDE, MLK_GAMEPAD_BUTTON_LOGO }, + { SDL_GAMEPAD_BUTTON_START, MLK_GAMEPAD_BUTTON_START }, + { SDL_GAMEPAD_BUTTON_LEFT_STICK, MLK_GAMEPAD_BUTTON_LTHUMB }, + { SDL_GAMEPAD_BUTTON_RIGHT_STICK, MLK_GAMEPAD_BUTTON_RTHUMB }, + { SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, MLK_GAMEPAD_BUTTON_LSHOULDER }, + { SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, MLK_GAMEPAD_BUTTON_RSHOULDER }, + { SDL_GAMEPAD_BUTTON_DPAD_UP, MLK_GAMEPAD_BUTTON_UP }, + { SDL_GAMEPAD_BUTTON_DPAD_DOWN, MLK_GAMEPAD_BUTTON_DOWN }, + { SDL_GAMEPAD_BUTTON_DPAD_LEFT, MLK_GAMEPAD_BUTTON_LEFT }, + { SDL_GAMEPAD_BUTTON_DPAD_RIGHT, MLK_GAMEPAD_BUTTON_RIGHT }, { -1, MLK_GAMEPAD_BUTTON_UNKNOWN } }; static void convert_key(const SDL_Event *event, union mlk_event *ev) { - ev->type = event->type == SDL_KEYDOWN ? MLK_EVENT_KEYDOWN : MLK_EVENT_KEYUP; + ev->type = event->type == SDL_EVENT_KEY_DOWN ? MLK_EVENT_KEYDOWN : MLK_EVENT_KEYUP; ev->key.key = MLK_KEY_UNKNOWN; for (size_t i = 0; keymap[i].key != 0; ++i) { @@ -231,7 +233,7 @@ static void convert_click(const SDL_Event *event, union mlk_event *ev) { - ev->type = event->type == SDL_MOUSEBUTTONDOWN ? MLK_EVENT_CLICKDOWN : MLK_EVENT_CLICKUP; + ev->type = event->type == SDL_EVENT_MOUSE_BUTTON_DOWN ? MLK_EVENT_CLICKDOWN : MLK_EVENT_CLICKUP; ev->click.button = MLK_MOUSE_BUTTON_NONE; ev->click.x = event->button.x; ev->click.y = event->button.y; @@ -248,10 +250,10 @@ static void convert_pad(const SDL_Event *event, union mlk_event *ev) { - ev->type = event->type == SDL_CONTROLLERBUTTONDOWN ? MLK_EVENT_PADDOWN : MLK_EVENT_PADUP; + ev->type = event->type == SDL_EVENT_GAMEPAD_BUTTON_DOWN ? MLK_EVENT_PADDOWN : MLK_EVENT_PADUP; for (size_t i = 0; pads[i].value != MLK_GAMEPAD_BUTTON_UNKNOWN; ++i) { - if (pads[i].button == event->cbutton.button) { + if (pads[i].button == event->gbutton.button) { ev->pad.button = pads[i].value; break; } @@ -262,12 +264,12 @@ int axis; enum mlk_gamepad_axis value; } axises[] = { - { SDL_CONTROLLER_AXIS_LEFTX, MLK_GAMEPAD_AXIS_LX }, - { SDL_CONTROLLER_AXIS_LEFTY, MLK_GAMEPAD_AXIS_LY }, - { SDL_CONTROLLER_AXIS_RIGHTX, MLK_GAMEPAD_AXIS_RX }, - { SDL_CONTROLLER_AXIS_RIGHTY, MLK_GAMEPAD_AXIS_RY }, - { SDL_CONTROLLER_AXIS_TRIGGERLEFT, MLK_GAMEPAD_AXIS_LTRIGGER }, - { SDL_CONTROLLER_AXIS_TRIGGERRIGHT, MLK_GAMEPAD_AXIS_RTRIGGER }, + { SDL_GAMEPAD_AXIS_LEFTX, MLK_GAMEPAD_AXIS_LX }, + { SDL_GAMEPAD_AXIS_LEFTY, MLK_GAMEPAD_AXIS_LY }, + { SDL_GAMEPAD_AXIS_RIGHTX, MLK_GAMEPAD_AXIS_RX }, + { SDL_GAMEPAD_AXIS_RIGHTY, MLK_GAMEPAD_AXIS_RY }, + { SDL_GAMEPAD_AXIS_LEFT_TRIGGER, MLK_GAMEPAD_AXIS_LTRIGGER }, + { SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, MLK_GAMEPAD_AXIS_RTRIGGER }, { -1, MLK_GAMEPAD_AXIS_UNKNOWN } }; @@ -275,10 +277,10 @@ convert_axis(const SDL_Event *event, union mlk_event *ev) { ev->type = MLK_EVENT_AXIS; - ev->axis.value = event->caxis.value; + ev->axis.value = event->gaxis.value; for (size_t i = 0; axises[i].value != MLK_GAMEPAD_AXIS_UNKNOWN; ++i) { - if (axises[i].axis == event->caxis.axis) { + if (axises[i].axis == event->gaxis.axis) { ev->axis.axis = axises[i].value; break; } @@ -298,25 +300,25 @@ */ while (SDL_PollEvent(&event)) { switch (event.type) { - case SDL_QUIT: + case SDL_EVENT_QUIT: ev->type = MLK_EVENT_QUIT; return 1; - case SDL_KEYDOWN: - case SDL_KEYUP: + case SDL_EVENT_KEY_DOWN: + case SDL_EVENT_KEY_UP: convert_key(&event, ev); return 1; - case SDL_MOUSEMOTION: + case SDL_EVENT_MOUSE_MOTION: convert_mouse(&event, ev); return 1; - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: + case SDL_EVENT_MOUSE_BUTTON_DOWN: + case SDL_EVENT_MOUSE_BUTTON_UP: convert_click(&event, ev); return 1; - case SDL_CONTROLLERBUTTONDOWN: - case SDL_CONTROLLERBUTTONUP: + case SDL_EVENT_GAMEPAD_BUTTON_DOWN: + case SDL_EVENT_GAMEPAD_BUTTON_UP: convert_pad(&event, ev); return 1; - case SDL_CONTROLLERAXISMOTION: + case SDL_EVENT_GAMEPAD_AXIS_MOTION: convert_axis(&event, ev); return 1; default: