diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ddbfb4..f35fb0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/assets-cg/maps/ DEPENDS assets-cg/maps/testCarte.tmx assets-cg/maps/1.tmx + assets-cg/maps/2.tmx assets-cg/tileset.png assets-cg/maps/tileset.tsx assets-cg/maps/inside/tileset_in.tsx @@ -53,6 +54,7 @@ set(SOURCES set(ASSETS_cg assets-cg/tileset.png + assets-cg/inventory.png assets-cg/categories.png assets-cg/dialogue.png assets-cg/capacite.png @@ -60,6 +62,7 @@ set(ASSETS_cg assets-cg/maps/inside/tileset_in.png assets-cg/maps/testCarte.json assets-cg/maps/1.json + assets-cg/maps/2.json assets-cg/maps/inside/1.json assets-cg/maps/inside/2.json assets-cg/spritesheet.png diff --git a/assets-cg/battle_ui.png b/assets-cg/battle_ui.png index 205a2c4..7eb538e 100644 Binary files a/assets-cg/battle_ui.png and b/assets-cg/battle_ui.png differ diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt index 09a0baa..0c5105e 100644 --- a/assets-cg/fxconv-metadata.txt +++ b/assets-cg/fxconv-metadata.txt @@ -34,6 +34,11 @@ battle_ui.png: type: bopti-image name: img_battle profile: p8 + +inventory.png: + type: bopti-image + name: img_inventory + profile: p8 player_moves.txt: custom-type: player_moves diff --git a/assets-cg/inventory.png b/assets-cg/inventory.png new file mode 100644 index 0000000..0e8eca2 Binary files /dev/null and b/assets-cg/inventory.png differ diff --git a/assets-cg/items/item.png b/assets-cg/items/item.png index 1f6affc..dddee94 100644 Binary files a/assets-cg/items/item.png and b/assets-cg/items/item.png differ diff --git a/assets-cg/items/item2.png b/assets-cg/items/item2.png index e1dc766..cdf65a7 100644 Binary files a/assets-cg/items/item2.png and b/assets-cg/items/item2.png differ diff --git a/include/inventory.h b/include/inventory.h index 3d30244..4a20c27 100644 --- a/include/inventory.h +++ b/include/inventory.h @@ -12,4 +12,5 @@ struct Inventory { bool add_item_to_inventory(struct Game *game, struct Inventory *inventory, struct Item *item); int get_first_free_space(struct Inventory *inventory); void display_inventory(struct Inventory *inventory); -int open_inventory(struct Game *game, struct Inventory *inventory, char* context, bool keep_open); \ No newline at end of file +int open_inventory(struct Game *game, struct Inventory *inventory, char* context, bool keep_open); +int get_nb_items(struct Inventory *inventory); \ No newline at end of file diff --git a/src/battle.c b/src/battle.c index d0a241c..6dfc6a7 100644 --- a/src/battle.c +++ b/src/battle.c @@ -185,6 +185,7 @@ void draw_battle(struct Player *player, struct Monster *monster) { if(monster->stats->pv < 0) monster->stats->pv = 0; dclear(C_RGB(25,25,25)); + 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); @@ -198,8 +199,7 @@ void draw_battle(struct Player *player, struct Monster *monster) { drect(290,138,290+posHP,142,pcolor); dprint(333,124,C_BLACK,"%d",player->stats.level); - dprint(246,124,C_BLACK,"%d/%d", player->stats.pv, player->stats.max_pv); - dtext(340,115,C_BLUE, player->stats.type); + dprint(256,122,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); @@ -214,7 +214,7 @@ void draw_battle(struct Player *player, struct Monster *monster) { drect(48,23,48+posHPmonster,27,mcolor); dprint(90,9,C_BLACK,"%d",monster->stats->level); dprint(127,11,C_BLACK,"%d/%d", monster->stats->pv, monster->stats->max_pv); - dtext(92,0,C_BLUE, monster->stats->type); + drect(0,0,84,4,getTypeFromName(monster->stats->type).color); dimage(265,10,monster->sprite); } diff --git a/src/inventory.c b/src/inventory.c index 1b36fd9..094f7ed 100644 --- a/src/inventory.c +++ b/src/inventory.c @@ -22,6 +22,16 @@ int get_first_free_space(struct Inventory *inventory) { return NB_PLAYER_ITEMS; } +int get_nb_items(struct Inventory *inventory) { + int ret = 0; + for(int i = 0; i < NB_PLAYER_ITEMS; i++) { + if(inventory->items[i] != NULL) { + ret++; + } + } + return ret; +} + bool add_item_to_inventory(struct Game *game, struct Inventory *inventory, struct Item *item) { int index = get_first_free_space(inventory); @@ -47,23 +57,29 @@ bool add_item_to_inventory(struct Game *game, struct Inventory *inventory, struc } void display_inventory(struct Inventory *inventory) { + const int x_inventory = 30; + const int y_inventory = 56; for(int i = 0 ; i < NB_PLAYER_ITEMS ; i++) { int x = i%10; int y = i/10; if(inventory->items[i] != NULL) { - dimage(18*x+50,25*y+50,inventory->items[i]->sprite); + dimage(34*x+x_inventory, 41*y+y_inventory, inventory->items[i]->sprite); } else { - drect(18*x+50,25*y+50,18*x+65,25*y+65,C_BLACK); + drect(34*x+x_inventory, 41*y+y_inventory, 34*x+x_inventory+31, 41*y+y_inventory+31, C_BLACK); } } } int open_inventory(struct Game *game, struct Inventory *inventory, char* context, bool keep_open) { + extern bopti_image_t img_inventory; int buffer = keydown(KEY_SHIFT); struct Vec2 cursor = VEC2(0,0); int pos = 0; int suppression = 0; + const int x_inventory = 30; + const int y_inventory = 56; + while(1) { clearevents(); @@ -77,15 +93,17 @@ int open_inventory(struct Game *game, struct Inventory *inventory, char* context pos = cursor.x + cursor.y*10; - dclear(C_WHITE); - dtext(130,15,C_BLACK,context); - drect(18*cursor.x+48, 25*cursor.y+48, 18*cursor.x+67, 25*cursor.y+67,suppression ? C_RED : C_GREEN); - if(suppression) dtext(130,35,C_RED,"Suppression"); + dclear(C_RGB(25,25,25)); + dimage(0, 0, &img_inventory); + dtext(5,2,C_BLACK,context); + drect(34*cursor.x+x_inventory-2, 41*cursor.y+y_inventory-2, 34*cursor.x+x_inventory+33, 41*cursor.y+y_inventory+33, suppression ? C_RED : C_GREEN); + if(suppression) dtext(5,16,C_RED,"Suppression"); + dprint(5, 185, C_BLACK, "%d/%d", get_nb_items(inventory), NB_PLAYER_ITEMS); display_inventory(inventory); if(inventory->items[pos] != NULL) { - dprint(10, DHEIGHT-30, C_BLACK, "nom : %s", inventory->items[pos]->name); - dprint(10, DHEIGHT-15, C_BLACK, "desc : %s", inventory->items[pos]->description); + dtext(5, 30, C_BLACK, inventory->items[pos]->name); + dtext(104, 30, C_BLACK, inventory->items[pos]->description); } dupdate();