diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-12-26 20:12:15 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-12-26 20:12:15 +1100 |
commit | 5de1e6cbc9129551c0292ae513a3962cb319e45c (patch) | |
tree | afa238eddbeea84f4b829902f6719121af40666c | |
parent | 6a1ea4aa30bd429037d430f9fd2eb89a0f7905bb (diff) |
items can now override inventory filters
-rw-r--r-- | source/game/StarPlayerInventory.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/game/StarPlayerInventory.cpp b/source/game/StarPlayerInventory.cpp index f64794d..0fed167 100644 --- a/source/game/StarPlayerInventory.cpp +++ b/source/game/StarPlayerInventory.cpp @@ -943,11 +943,24 @@ void PlayerInventory::cleanup() { } bool PlayerInventory::checkInventoryFilter(ItemPtr const& items, String const& filterName) { - auto config = Root::singleton().assets()->json("/player.config:inventoryFilters"); + Json filterConfig; + + auto itemFilters = items->instanceValue("inventoryFilters"); + if (itemFilters.isType(Json::Type::Object)) { + filterConfig = itemFilters.get(filterName); + if (!filterConfig.isType(Json::Type::Object)) + filterConfig = itemFilters.get("default"); + } + + if (!filterConfig.isType(Json::Type::Object)) { + auto config = Root::singleton().assets()->json("/player.config:inventoryFilters"); + filterConfig = config.get(filterName); + if (!filterConfig.isType(Json::Type::Object)) + filterConfig = config.get("default"); + } // filter by item type if an itemTypes filter is set auto itemDatabase = Root::singleton().itemDatabase(); - auto filterConfig = config.get(filterName); auto itemTypeName = ItemTypeNames.getRight(itemDatabase->itemType(items->name())); if (filterConfig.contains("typeWhitelist") && !filterConfig.getArray("typeWhitelist").contains(itemTypeName)) return false; |