Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-12-26 20:12:15 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-12-26 20:12:15 +1100
commit5de1e6cbc9129551c0292ae513a3962cb319e45c (patch)
treeafa238eddbeea84f4b829902f6719121af40666c
parent6a1ea4aa30bd429037d430f9fd2eb89a0f7905bb (diff)
items can now override inventory filters
-rw-r--r--source/game/StarPlayerInventory.cpp17
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;