From d8e23cd844ea2c3ae32e7cd544fe10e5cc0c434c Mon Sep 17 00:00:00 2001 From: KikooDX Date: Mon, 14 Sep 2020 14:37:46 +0200 Subject: [PATCH] Camera lerp now working, first debug visualisation implemented. A lot of other misc stuff. --- include/camera.h | 8 ++++++-- include/debug.h | 1 + include/player.h | 2 +- src/camera.c | 12 +++++++++++- src/main.c | 22 +++++++++++++++------- src/player.c | 2 +- 6 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 include/debug.h diff --git a/include/camera.h b/include/camera.h index ee8a373..0384b76 100644 --- a/include/camera.h +++ b/include/camera.h @@ -2,15 +2,19 @@ #define _DEF_CAMERA #include "vec.h" +#include "debug.h" typedef struct Camera { - Vec position; + Vec pos; Vec *target; /* the target position to lerp on */ float speed; /* camera lerp speed with 0 < speed <= 1 */ } Camera; void camera_step(Camera *camera); -/* camera is invisible */ +#ifdef DEBUG +/* draw a dot corresponding to camera position */ +void camera_draw(Camera *camera); +#endif #endif /* _DEF_CAMERA */ diff --git a/include/debug.h b/include/debug.h new file mode 100644 index 0000000..d536a4b --- /dev/null +++ b/include/debug.h @@ -0,0 +1 @@ +#define DEBUG diff --git a/include/player.h b/include/player.h index d13bc56..e90d2cb 100644 --- a/include/player.h +++ b/include/player.h @@ -6,7 +6,7 @@ typedef struct Player { - Vec position; + Vec pos; } Player; void player_step(Player *player); diff --git a/src/camera.c b/src/camera.c index 90daef3..a1a49da 100644 --- a/src/camera.c +++ b/src/camera.c @@ -1,7 +1,17 @@ +#include + #include "camera.h" #include "vec.h" +#include "debug.h" void camera_step(Camera *camera) { - vec_lerp(&camera->position, *camera->target, camera->speed); + vec_lerp(&camera->pos, *camera->target, camera->speed); } + +#ifdef DEBUG +void camera_draw(Camera *camera) +{ + dpixel((int)camera->pos.x, (int)camera->pos.y, C_BLACK); +} +#endif diff --git a/src/main.c b/src/main.c index b8959cb..a7edd2b 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,7 @@ #include #include "main.h" +#include "debug.h" #include "init.h" #include "vec.h" #include "player.h" @@ -15,7 +16,7 @@ int main(void) /* create player */ Player player = { - .position = {32, 32} + .pos = {0, 0} }; /* create level */ @@ -26,15 +27,19 @@ int main(void) /* create camera */ Camera camera = { - .target = &player.position + .pos = {127, 63}, + .target = &player.pos, + .speed = 0.0005 }; - vec_cpy(&camera.position, player.position); + //vec_cpy(&camera.pos, player.pos); /* main game loop */ - step_event(&player, &level, &camera); - draw_event(&player, &level, &camera); - - getkey(); + while ((int)camera.pos.x != (int)player.pos.x) + { + step_event(&player, &level, &camera); + draw_event(&player, &level, &camera); + } + /* return to menu */ return 1; } @@ -50,5 +55,8 @@ void draw_event(Player *player, Level *level, Camera *camera) dclear(C_WHITE); level_draw(level, camera); player_draw(player, camera); + #ifdef DEBUG + camera_draw(camera); + #endif dupdate(); } diff --git a/src/player.c b/src/player.c index 1e53f33..cfb3822 100644 --- a/src/player.c +++ b/src/player.c @@ -9,5 +9,5 @@ void player_step(Player *player) void player_draw(Player *player, Camera *camera) { - dpixel(player->position.x, player->position.y, C_BLACK); + dpixel(player->pos.x, player->pos.y, C_BLACK); }