Files
ld58/code/game/impl/player.c

60 lines
1.2 KiB
C
Raw Normal View History

2025-10-04 15:53:55 +01:00
#include "../player.h"
2025-10-05 18:05:01 +01:00
#include <SDL3/SDL_events.h>
#include <SDL3/SDL_keycode.h>
2025-10-04 15:53:55 +01:00
2025-10-05 18:05:01 +01:00
void PlayerInput(SDL_Event *event, Player *player)
2025-10-04 15:53:55 +01:00
{
2025-10-04 17:36:47 +01:00
SDL_KeyboardEvent key = event->key;
SDL_MouseButtonEvent mouseBtn = event->button;
2025-10-05 18:05:01 +01:00
if(event->type == SDL_EVENT_KEY_DOWN || event->type == SDL_EVENT_KEY_UP) {
bool val = event->type == SDL_EVENT_KEY_DOWN;
switch (key.key)
{
case SDLK_W:
{
player->controls.upDown = val;
break;
}
case SDLK_A:
{
player->controls.leftDown = val;
break;
}
case SDLK_D:
{
player->controls.rightDown = val;
break;
}
case SDLK_S:
{
player->controls.downDown = val;
break;
}
}
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
if (mouseBtn.clicks == 1)
2025-10-04 17:36:47 +01:00
{
2025-10-05 18:05:01 +01:00
// shooting
player->bulletsLoaded -= 1;
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
}
void PlayerUpdate(F32 delta, Player *player) {
V2f dir = V2F(0, 0);
if(player->controls.upDown) {
dir.y -= 1;
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
if(player->controls.downDown) {
dir.y += 1;
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
if(player->controls.leftDown) {
dir.x -= 1;
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
if(player->controls.rightDown) {
dir.x += 1;
2025-10-04 17:36:47 +01:00
}
2025-10-05 18:05:01 +01:00
dir = V2f_Scale(NormaliseV2F(dir), PLAYER_SPEED*delta);
player->pos.x += dir.x;
player->pos.y += dir.y;
2025-10-04 15:53:55 +01:00
}