diff --git a/CMakeLists.txt b/CMakeLists.txt index fbb1df5..859ddea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,9 +58,11 @@ set(ASSETS_cg assets-cg/tileset.png assets-cg/inventory.png assets-cg/categories.png + assets-cg/contours.png assets-cg/dialogue.png assets-cg/capacite.png assets-cg/battle_ui.png + assets-cg/battle_env_1.png assets-cg/maps/inside/tileset_in.png assets-cg/maps/testCarte.json assets-cg/maps/1.json diff --git a/assets-cg/battle_env_1.png b/assets-cg/battle_env_1.png new file mode 100644 index 0000000..040c886 Binary files /dev/null and b/assets-cg/battle_env_1.png differ diff --git a/assets-cg/battle_env_1b.png b/assets-cg/battle_env_1b.png new file mode 100644 index 0000000..6462c97 Binary files /dev/null and b/assets-cg/battle_env_1b.png differ diff --git a/assets-cg/battle_ui.png b/assets-cg/battle_ui.png index 7eb538e..5bd5120 100644 Binary files a/assets-cg/battle_ui.png and b/assets-cg/battle_ui.png differ diff --git a/assets-cg/contours.png b/assets-cg/contours.png new file mode 100644 index 0000000..9cf0628 Binary files /dev/null and b/assets-cg/contours.png differ diff --git a/assets-cg/converters.py b/assets-cg/converters.py index 28f1bd3..1174c64 100644 --- a/assets-cg/converters.py +++ b/assets-cg/converters.py @@ -332,6 +332,8 @@ def convert_monster(input, output, params, target): monster = fxconv.Structure() monster += fxconv.string(data["name"]) monster += fxconv.ptr(f"img_{data['sprite']}") + monster += fxconv.u32(data["sprite_x"]) + monster += fxconv.u32(data["sprite_y"]) monster += fxconv.u32(data["id"]) monster += fxconv.u32(len(data["moves"])) monster += fxconv.ptr(stats) diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt index 0c5105e..5d3784a 100644 --- a/assets-cg/fxconv-metadata.txt +++ b/assets-cg/fxconv-metadata.txt @@ -28,6 +28,16 @@ capacite.png: categories.png: type: bopti-image name: img_categories + profile: p4 + +contours.png: + type: bopti-image + name: img_contours + profile: p4 + +battle_env_1.png: + type: bopti-image + name: img_battle_env_1 profile: p4 battle_ui.png: diff --git a/assets-cg/monsters/test.json b/assets-cg/monsters/test.json index 2eff763..4a067db 100644 --- a/assets-cg/monsters/test.json +++ b/assets-cg/monsters/test.json @@ -1,6 +1,9 @@ { "name":"test", "sprite":"test", + "sprite_x":100, + "sprite_y":85, + "id":1, "type":"Labélisateur", "stats":{ diff --git a/assets-cg/monsters/test2.json b/assets-cg/monsters/test2.json index 7ef4303..d57b741 100644 --- a/assets-cg/monsters/test2.json +++ b/assets-cg/monsters/test2.json @@ -1,6 +1,9 @@ { - "name":"Citron", + "name":"Banane", "sprite":"test2", + "sprite_x":109, + "sprite_y":111, + "id":2, "type":"Modérateur", "stats":{ diff --git a/assets-cg/monsters/test2.png b/assets-cg/monsters/test2.png index a328f5a..4e3c2ec 100644 Binary files a/assets-cg/monsters/test2.png and b/assets-cg/monsters/test2.png differ diff --git a/include/monster.h b/include/monster.h index b11f282..8d0416e 100644 --- a/include/monster.h +++ b/include/monster.h @@ -9,6 +9,8 @@ struct Monster { char *name; bopti_image_t *sprite; + int sprite_x; + int sprite_y; int id; int nbMoves; struct Stats *stats; diff --git a/src/battle.c b/src/battle.c index 3c7f4c7..728eab0 100644 --- a/src/battle.c +++ b/src/battle.c @@ -156,7 +156,6 @@ int select_move(struct Player *player, struct Monster *monster, int prec_selecte dclear(C_RGB(25,25,25)); draw_battle(player, monster); draw_ui(player, selection); - dtext(58 + (selection * 130), DHEIGHT-15 , C_RED, "[X]"); dupdate(); if(keydown(KEY_OPTN)) { @@ -179,16 +178,18 @@ int select_move(struct Player *player, struct Monster *monster, int prec_selecte void draw_battle(struct Player *player, struct Monster *monster) { extern bopti_image_t img_battle; + extern bopti_image_t img_battle_env_1; const int WIDTH_HP = 74; if(player->stats.pv < 0) player->stats.pv = 0; if(monster->stats->pv < 0) monster->stats->pv = 0; - dclear(C_RGB(25,25,25)); + // dclear(C_RGB(25,25,25)); + dimage(0,0,&img_battle_env_1); drect(323, 120, DWIDTH, 125, getTypeFromName(player->stats.type).color); dimage(0,0,&img_battle); int posHP = (float)player->stats.pv / player->stats.max_pv * WIDTH_HP; - drect(290,138,290+WIDTH_HP,142,C_WHITE); + drect(290,143,290+WIDTH_HP,147,C_WHITE); int pcolor = (player->stats.pv <= player->stats.max_pv/2 ? (player->stats.pv <= player->stats.max_pv/4 ? @@ -196,10 +197,10 @@ void draw_battle(struct Player *player, struct Monster *monster) { C_RGB(31,17,0)) : C_GREEN); - drect(290,138,290+posHP,142,pcolor); + drect(290,143,290+posHP,147,pcolor); - dprint(333,124,C_BLACK,"%d",player->stats.level); - dprint(256,122,C_BLACK,"%d/%d", player->stats.pv, player->stats.max_pv); + dprint(333,129,C_BLACK,"%d",player->stats.level); + dprint(256,127,C_BLACK,"%d/%d", player->stats.pv, player->stats.max_pv); int posHPmonster = (float)monster->stats->pv / monster->stats->max_pv * WIDTH_HP; dprint(2,8,C_BLACK,"%s",monster->name); @@ -215,8 +216,8 @@ void draw_battle(struct Player *player, struct Monster *monster) { dprint(90,9,C_BLACK,"%d",monster->stats->level); dprint(127,11,C_BLACK,"%d/%d", monster->stats->pv, monster->stats->max_pv); drect(0,0,84,4,getTypeFromName(monster->stats->type).color); - - dimage(265,10,monster->sprite); + + dimage((int)(253+((133-monster->sprite_x)/2)),6+(116-monster->sprite_y), monster->sprite); } void draw_executed_move(struct Move *move, struct Monster *monster, int is_monster) { diff --git a/src/camera.c b/src/camera.c index 892f75b..af56a4c 100644 --- a/src/camera.c +++ b/src/camera.c @@ -13,6 +13,6 @@ struct Camera camera_new(struct Vec2f *target) { } void camera_update(struct Camera *c) { - c->pos = vec2f_lerp(c->pos, *c->target, 0.08); + c->pos = vec2f_lerp(c->pos, *c->target, 0.1); c->offset = vec2f_vec2(c->pos); } \ No newline at end of file diff --git a/src/capacite.c b/src/capacite.c index 529e1d3..dcf3eff 100644 --- a/src/capacite.c +++ b/src/capacite.c @@ -52,10 +52,11 @@ struct Move *copy_move(struct Move move) { void draw_move(int x, int y, int x2, int y2, struct Move *move, int selected) { extern bopti_image_t img_capacite; extern bopti_image_t img_categories; + extern bopti_image_t img_contours; const int font_size = 8; - if(!selected) draw_change_one_color(x, y, &img_capacite, 0xE6D6, getTypeFromName(move->type).color); - else draw_change_one_color(x, y, &img_capacite, 0xE6D6, 0x0FE0); + draw_change_one_color(x, y, &img_capacite, 0xE6D6, getTypeFromName(move->type).color); + if(selected) dimage(x, y, &img_contours); dsubimage(x+96, y+7, &img_categories, 20*move->categorie, 0, 20, 10, DIMAGE_NONE); int color = move->pp > 0 ? C_BLACK : C_RED; diff --git a/src/engine.c b/src/engine.c index 3f0bbbe..cae64cd 100644 --- a/src/engine.c +++ b/src/engine.c @@ -26,10 +26,10 @@ void engine_draw(struct Game const *game) { dclear(game->background); engine_draw_map(game); engine_draw_player(game); - drect(0,0,DWIDTH,20,C_BLACK); + /*drect(0,0,DWIDTH,20,C_BLACK); drect(0,DHEIGHT-20,DWIDTH,DHEIGHT,C_BLACK); drect(0,0,20,DHEIGHT,C_BLACK); - drect(DWIDTH-20,0,DWIDTH,DHEIGHT,C_BLACK); + drect(DWIDTH-20,0,DWIDTH,DHEIGHT,C_BLACK);*/ dprint(1,1,C_WHITE,"%d:%d",game->player->pos.x, game->player->pos.y); dprint(1,20,C_WHITE,"%d",game->player->sprint); @@ -43,7 +43,7 @@ void engine_draw_map(struct Game const *game) { const int tileset_size = game->map->tileset_size; for (int y = 0 ; y <= DHEIGHT / TILE_SIZE; y++) { - for (int x = 0 ; x <= DWIDTH / TILE_SIZE; x++) { + for (int x = 0 ; x <= DWIDTH / TILE_SIZE+1; x++) { for (int layer = 0 ; layer < game->map->nb_layers; layer++) { unsigned int tile_id = 0; //detect if the map is oob diff --git a/src/monster.c b/src/monster.c index 647a592..0e58a50 100644 --- a/src/monster.c +++ b/src/monster.c @@ -82,6 +82,9 @@ struct Monster *copyMonster(struct Monster *source) { dest->name = source->name; dest->nbMoves = source->nbMoves; dest->sprite = source->sprite; + dest->sprite_x = source->sprite_x; + dest->sprite_y = source->sprite_y; + dest->id = source->id; dest->moves = malloc(dest->nbMoves * sizeof *source->moves); diff --git a/src/player.c b/src/player.c index 35d1752..eb63095 100644 --- a/src/player.c +++ b/src/player.c @@ -203,7 +203,7 @@ void draw_ui(struct Player *player, int curr_select) { int index = get_nb_moves(player); for(int i = 0; i < index; i++) { - draw_special_move(2+132*i,DHEIGHT-70, player->moves[i], i == curr_select); + draw_special_move(2+132*i,DHEIGHT-65, player->moves[i], i == curr_select); } }