#include #include #include #include "rand.hpp" #include #include #include "components.hpp" #include "dinkyecs.hpp" #include "save.hpp" #include "systems.hpp" using namespace nlohmann; using namespace fmt; using std::string; using namespace components; DinkyECS::Entity add_items(DinkyECS::World &world, GameConfig &config) { auto sword = world.entity(); json& item_data = config.items["SWORD_RUSTY"]; world.set(sword, {item_data["inventory_count"], item_data}); components::configure(world, sword, item_data); return sword; } TEST_CASE("basic inventory test", "[inventory]") { DinkyECS::World world; save::load_configs(world); auto& config = world.get_the(); auto sword = add_items(world, config); auto player = world.entity(); world.set(player, {}); auto &inventory = world.get(player); System::pickup(world, player, sword); REQUIRE(inventory.count() == 1); // get the item and confirm there is 1 auto &item1 = inventory.get(0); REQUIRE(item1.count == 1); int item_at = inventory.item_index("SWORD_RUSTY"); REQUIRE(item_at == 0); REQUIRE(inventory.item_index("SADFASFSADF") == -1); System::pickup(world, player, sword); REQUIRE(item1.count == 2); System::pickup(world, player, sword); REQUIRE(item1.count == 3); System::pickup(world, player, sword); REQUIRE(inventory.count() == 1); REQUIRE(item1.count == 4); inventory.decrease(0, 1); REQUIRE(item1.count == 3); inventory.decrease(0, 2); REQUIRE(item1.count == 1); bool active = inventory.decrease(0, 1); REQUIRE(item1.count == 0); REQUIRE(active == false); inventory.erase_item(0); REQUIRE(inventory.count() == 0); }