diff --git a/include/billy_objects.hpp b/include/billy_objects.hpp index 2dd3371..2bf1584 100644 --- a/include/billy_objects.hpp +++ b/include/billy_objects.hpp @@ -45,8 +45,6 @@ namespace character { static constexpr std::string_view json_key{ "billy_objects" }; - static constexpr std::uint32_t max_obj{ 3 }; - static std::string_view billy_object_to_string(const billyObjects &object) noexcept; static void to_json(json &j, const container &billy); @@ -55,7 +53,7 @@ namespace character { [[nodiscard]] bool insert_object(CharacterSheet &sheet, const billyEnums objType) noexcept; - [[nodiscard]] bool erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept; + bool erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept; [[nodiscard]] const std::plus &get_plus_operation() const { return plus; } diff --git a/src/billy_objects.cpp b/src/billy_objects.cpp index 7592c17..d8cba8b 100644 --- a/src/billy_objects.cpp +++ b/src/billy_objects.cpp @@ -17,7 +17,7 @@ namespace character { bool BillyObjects::insert_object(CharacterSheet &sheet, const billyEnums objType) noexcept { - if (sheet.objects.size() < max_obj) { + if (sheet.objects.size() < 3) { sheet.objects.emplace(objType, std::visit(overloaded{ [](const weapons &arg) { @@ -99,7 +99,13 @@ namespace character { void BillyObjects::check_dagger_conditions(CharacterSheet &sheet) { if (const auto it_dagger = sheet.get_objects().find(tools::Dagger); it_dagger != sheet.get_objects().cend()) { - if (sheet.get_nb_weapons() > 1 || sheet.get_objects().contains(weapons::Bow)) { + const std::size_t count_weapons = std::ranges::count_if(sheet.get_objects(), + [](container::const_reference node) { + return std::get_if(&node.first) != + nullptr; + } + ); + if (count_weapons > 1 || sheet.get_objects().contains(weapons::Bow)) { sheet.habilete.materiel -= it_dagger->second->add_materiel(sheet.get_habilete().type); } }