From baa6071ebfc7f7ecc513c1e21d7af5c68a9ede08 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Thu, 17 Sep 2020 14:30:46 +0200 Subject: [PATCH] Input manager demonstration --- include/player.h | 3 ++- src/main.c | 4 ++-- src/player.c | 14 +++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/player.h b/include/player.h index ee94d09..9ea5699 100644 --- a/include/player.h +++ b/include/player.h @@ -3,6 +3,7 @@ #include "vec.h" #include "camera.h" +#include "input.h" typedef struct Player { @@ -11,7 +12,7 @@ typedef struct Player Vec origin; /* the origin of the player (offset) */ } Player; -void player_step(Player *player); +void player_step(Player *player, Input *input); void player_draw(Player *player, Camera *camera); #endif /* _DEF_PLAYER */ diff --git a/src/main.c b/src/main.c index b8b1a43..0225753 100644 --- a/src/main.c +++ b/src/main.c @@ -57,7 +57,7 @@ int play_level(int level_id) input.keys[K_DOWN] = KEY_DOWN; //vec_cpy(&camera.pos, player.pos); - while ((int)camera.pos.x != (int)player.pos.x) + while ((int)camera.pos.x != (int)player.pos.x || (int)camera.pos.y != (int)player.pos.y) { step_event(&player, &level, &camera, &input); draw_event(&player, &level, &camera, &input); @@ -68,7 +68,7 @@ int play_level(int level_id) void step_event(Player *player, Level *level, Camera *camera, Input *input) { input_step(input); - player_step(player); + player_step(player, input); level_step(level); camera_step(camera); } diff --git a/src/player.c b/src/player.c index 6160ffc..6fe99fd 100644 --- a/src/player.c +++ b/src/player.c @@ -2,9 +2,21 @@ #include "player.h" #include "camera.h" +#include "input.h" -void player_step(Player *player) +void player_step(Player *player, Input *input) { + Vec move = { + input_is_down(*input, K_RIGHT) - input_is_down(*input, K_LEFT), + input_is_down(*input, K_DOWN) - input_is_down(*input, K_UP) + }; + #ifdef FX9860G + vec_div(&move, 50); + #endif /* FX9860G */ + #ifdef FXCG50 + vec_mul(&move, 2); + #endif /* FXCG50 */ + vec_add(&player->pos, move); } void player_draw(Player *player, Camera *camera)