feat: Player controller
This commit is contained in:
@@ -1,33 +1,36 @@
|
||||
#include "../player.h"
|
||||
#include <SDL3/SDL_events.h>
|
||||
#include <SDL3/SDL_keycode.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void PlayerUpdate(SDL_Event *event, Player *player)
|
||||
void PlayerInput(SDL_Event *event, Player *player)
|
||||
{
|
||||
SDL_KeyboardEvent key = event->key;
|
||||
SDL_MouseButtonEvent mouseBtn = event->button;
|
||||
switch (key.key)
|
||||
{
|
||||
case SDLK_W:
|
||||
{
|
||||
player->pos.y += 10;
|
||||
break;
|
||||
}
|
||||
case SDLK_A:
|
||||
{
|
||||
player->pos.x -= 10;
|
||||
break;
|
||||
}
|
||||
case SDLK_D:
|
||||
{
|
||||
player->pos.x += 10;
|
||||
break;
|
||||
}
|
||||
case SDLK_S:
|
||||
{
|
||||
player->pos.y -= 10;
|
||||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mouseBtn.clicks == 1)
|
||||
{
|
||||
@@ -35,3 +38,22 @@ void PlayerUpdate(SDL_Event *event, Player *player)
|
||||
player->bulletsLoaded -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerUpdate(F32 delta, Player *player) {
|
||||
V2f dir = V2F(0, 0);
|
||||
if(player->controls.upDown) {
|
||||
dir.y -= 1;
|
||||
}
|
||||
if(player->controls.downDown) {
|
||||
dir.y += 1;
|
||||
}
|
||||
if(player->controls.leftDown) {
|
||||
dir.x -= 1;
|
||||
}
|
||||
if(player->controls.rightDown) {
|
||||
dir.x += 1;
|
||||
}
|
||||
dir = V2f_Scale(NormaliseV2F(dir), PLAYER_SPEED*delta);
|
||||
player->pos.x += dir.x;
|
||||
player->pos.y += dir.y;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user