diff options
author | ErodeesFleurs <862959461@qq.com> | 2025-02-11 00:46:30 +0800 |
---|---|---|
committer | ErodeesFleurs <862959461@qq.com> | 2025-02-11 00:46:30 +0800 |
commit | ff5cb26a92a7ee4c6ec407ca6279f397736eaa93 (patch) | |
tree | cda120aaa1d8fd3a445503d3ed8924a4c09e5914 | |
parent | bf73de0ee3c028c6c215c209891cc3c39d606d6a (diff) |
Fix bug.
-rw-r--r-- | source/game/StarItemDatabase.cpp | 7 | ||||
-rw-r--r-- | source/game/StarItemDatabase.hpp | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/source/game/StarItemDatabase.cpp b/source/game/StarItemDatabase.cpp index 30e8c5e..dc0238f 100644 --- a/source/game/StarItemDatabase.cpp +++ b/source/game/StarItemDatabase.cpp @@ -214,8 +214,11 @@ ItemDatabase::ItemConfig ItemDatabase::itemConfig(String const& itemName, Json p } Maybe<String> ItemDatabase::itemFile(String const& itemName) const { + if (!hasItem(itemName)) { + return {} + } auto const& data = itemData(itemName); - return itemData(itemName).assetsConfig; + return data->directory + "/" + data->filename; } ItemPtr ItemDatabase::itemShared(ItemDescriptor descriptor, Maybe<float> level, Maybe<uint64_t> seed) const { @@ -568,6 +571,7 @@ void ItemDatabase::addItemSet(ItemType type, String const& extension) { data.itemTags = config.opt("itemTags").apply(jsonToStringSet).value(); data.agingScripts = config.opt("itemAgingScripts").apply(jsonToStringList).value(); data.directory = AssetPath::directory(file); + data.filename = AssetPath::filename(file); data.agingScripts = data.agingScripts.transformed(bind(&AssetPath::relativeTo, data.directory, _1)); } catch (std::exception const& e) { @@ -591,6 +595,7 @@ void ItemDatabase::addObjectDropItem(String const& objectPath, Json const& objec data.itemTags = objectConfig.opt("itemTags").apply(jsonToStringSet).value(); data.agingScripts = objectConfig.opt("itemAgingScripts").apply(jsonToStringList).value(); data.directory = AssetPath::directory(objectPath); + data.filename = AssetPath::filename(objectPath); JsonObject customConfig = objectConfig.toObject(); if (!customConfig.contains("inventoryIcon")) { customConfig["inventoryIcon"] = assets->json("/objects/defaultParameters.config:missingIcon"); diff --git a/source/game/StarItemDatabase.hpp b/source/game/StarItemDatabase.hpp index 714eee7..8268ace 100644 --- a/source/game/StarItemDatabase.hpp +++ b/source/game/StarItemDatabase.hpp @@ -159,6 +159,7 @@ private: Maybe<String> assetsConfig; JsonObject customConfig; String directory; + String filename; }; static ItemPtr createItem(ItemType type, ItemConfig const& config); |