diff --git a/include/level.h b/include/level.h index 1c394b9..33736ea 100644 --- a/include/level.h +++ b/include/level.h @@ -7,7 +7,7 @@ typedef struct Level { int width; /* in tiles */ int height; /* in tiles */ - const unsigned char **tiles; /* points toward the level content */ + const unsigned char **layers; /* points toward the level content */ } Level; void level_step(Level *level); diff --git a/include/player.h b/include/player.h index e90d2cb..ee94d09 100644 --- a/include/player.h +++ b/include/player.h @@ -7,6 +7,8 @@ typedef struct Player { Vec pos; + Vec hbox; /* the bottom right corner of the player's hitbox */ + Vec origin; /* the origin of the player (offset) */ } Player; void player_step(Player *player); diff --git a/src/camera.c b/src/camera.c index a1a49da..3efa05e 100644 --- a/src/camera.c +++ b/src/camera.c @@ -12,6 +12,11 @@ void camera_step(Camera *camera) #ifdef DEBUG void camera_draw(Camera *camera) { + #ifdef FX9860G dpixel((int)camera->pos.x, (int)camera->pos.y, C_BLACK); + #endif /* FX9860G */ + #ifdef FXCG50 + dpixel((int)camera->pos.x, (int)camera->pos.y, C_RED); + #endif /* FXCG50 */ } #endif diff --git a/src/main.c b/src/main.c index 031e0ec..655a3f3 100644 --- a/src/main.c +++ b/src/main.c @@ -25,25 +25,27 @@ int play_level(int level_id) { /* create player */ Player player = { - .pos = {0, 0} + .pos = {16, 16}, + .hbox = {7, 7}, + .origin = {4, 4} }; - const unsigned char level_content[] = {127}; - const unsigned char level_content2[] = {63}; - const unsigned char *level_contents[] = {level_content, level_content2}; /* create level */ Level level = { .width = 0, - .height = 0, - .tiles = level_contents + .height = 0 }; /* create camera */ Camera camera = { - //.pos = {127, 63}, - .pos = {level.tiles[0][0], level.tiles[1][0]}, /* test code */ + .pos = {DWIDTH, DHEIGHT}, .target = &player.pos, + #ifdef FX9860G .speed = 0.0005 + #endif /* FX9860G */ + #ifdef FXCG50 + .speed = 0.05 + #endif /* FXCG50 */ }; //vec_cpy(&camera.pos, player.pos); while ((int)camera.pos.x != (int)player.pos.x) diff --git a/src/player.c b/src/player.c index cfb3822..6160ffc 100644 --- a/src/player.c +++ b/src/player.c @@ -9,5 +9,16 @@ void player_step(Player *player) void player_draw(Player *player, Camera *camera) { - dpixel(player->pos.x, player->pos.y, C_BLACK); + Vec draw_pos_tl; + Vec draw_pos_br; + vec_cpy(&draw_pos_tl, player->pos); + vec_sub(&draw_pos_tl, player->origin); + vec_cpy(&draw_pos_br, draw_pos_tl); + vec_add(&draw_pos_br, player->hbox); + #ifdef FX9860G + drect(draw_pos_tl.x, draw_pos_tl.y, draw_pos_br.x, draw_pos_br.y, C_LIGHT); + #endif /* FX9860G */ + #ifdef FXCG50 + drect(draw_pos_tl.x, draw_pos_tl.y, draw_pos_br.x, draw_pos_br.y, C_BLACK); + #endif /* FXCG50 */ }