diff --git a/CMakeLists.txt b/CMakeLists.txt index 4110eeb..955f4ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,7 +298,7 @@ add_executable(my_rpg include/components/attack_component.h src/systems/combat_methods.c src/combat/attacks.c - src/player_utilities.c include/player_utilities.h src/systems/inventory.c include/systems/inventory.h src/systems/game_over.c include/systems/game_over.h src/npc/mia.c lib/gamacon/src/scene/scene_constructor.c src/npc/fisherman.c src/npc/lumberjack.c) + src/player_utilities.c include/player_utilities.h src/systems/inventory.c include/systems/inventory.h src/systems/game_over.c include/systems/game_over.h src/npc/mia.c lib/gamacon/src/scene/scene_constructor.c src/npc/fisherman.c src/npc/lumberjack.c src/npc/smith.c) add_compile_options(-W -Wall -Wextra -Wshadow) diff --git a/Makefile b/Makefile index dd5e272..13f6036 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,8 @@ SRC = src/main.c \ src/systems/game_over.c \ src/npc/mia.c \ src/npc/fisherman.c \ - src/npc/lumberjack.c + src/npc/lumberjack.c \ + src/npc/smith.c OBJ = $(SRC:%.c=%.o) diff --git a/include/setup.h b/include/setup.h index 2dd336e..63be7e1 100644 --- a/include/setup.h +++ b/include/setup.h @@ -79,5 +79,8 @@ gc_vector2 pos, enum gc_mousekeys key); bool lumberjack_yes(gc_engine *engine, gc_entity *entity, \ gc_vector2 pos, enum gc_mousekeys key); +bool smith_chest(gc_engine *engine, gc_entity *entity, \ +gc_vector2 pos, enum gc_mousekeys key); + void load_data(gc_scene *scene, const gc_data *datas); extern const struct gc_data game_data[]; \ No newline at end of file diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab index 23c4556..9c6f6b4 100644 --- a/prefabs/game.gcprefab +++ b/prefabs/game.gcprefab @@ -119,6 +119,7 @@ + @@ -317,6 +318,18 @@ + + + + + + + + + + + + diff --git a/src/game_loader.c b/src/game_loader.c index a71807f..8c9fb6d 100644 --- a/src/game_loader.c +++ b/src/game_loader.c @@ -61,6 +61,7 @@ const struct gc_data game_data[] = { {"input", "fisherman_next", &fisherman_next, NULL}, {"dialog_callback", "fisherman_setup", &fisherman_setup, NULL}, {"input", "lumberjack_yes", &lumberjack_yes, NULL}, + {"dialog_callback", "smith_chest", &smith_chest, NULL}, {NULL, NULL, NULL, NULL} }; diff --git a/src/npc/smith.c b/src/npc/smith.c new file mode 100644 index 0000000..6cc5fca --- /dev/null +++ b/src/npc/smith.c @@ -0,0 +1,31 @@ +/* +** EPITECH PROJECT, 2020 +** my_rpg +** File description: +** smith.c +*/ + +#include +#include +#include "engine.h" + +bool smith_chest(gc_engine *engine, gc_entity *entity, \ +gc_vector2 pos, enum gc_mousekeys key) +{ + struct dialog_holder *dialog = dialog_get_current(engine); + gc_entity *player = engine->scene->get_entity(engine->scene, 50); + struct player_component *inv; + + if (!player) + return (false); + inv = GETCMP(player, player_component); + if (!inv) + return (false); + dialog->text[1] = NULL; + if (inv->inventory_upgrades[3]) + dialog_add_line(dialog, NULL, "This chest is empty.", NULL); + else + dialog_add_line(dialog, NULL, "You found the shield upgrade!", NULL); + inv->inventory_upgrades[3] = true; + return (true); +} \ No newline at end of file