MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / itemShared

Method itemShared

source/game/StarItemDatabase.cpp:224–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

222}
223
224ItemPtr ItemDatabase::itemShared(ItemDescriptor descriptor, Maybe<float> level, Maybe<uint64_t> seed) const {
225 if (!descriptor)
226 return {};
227
228 ItemCacheEntry entry{ descriptor, level, seed };
229 MutexLocker locker(m_cacheMutex);
230 if (ItemPtr* cached = m_itemCache.ptr(entry))
231 return *cached;
232 else {
233 locker.unlock();
234
235 ItemPtr item = tryCreateItem(descriptor, level, seed);
236 get<2>(entry) = item->parameters().optUInt("seed"); // Seed could've been changed by the buildscript
237
238 locker.lock();
239 return m_itemCache.get(entry, [&](ItemCacheEntry const&) -> ItemPtr { return std::move(item); });
240 }
241}
242
243ItemPtr ItemDatabase::item(ItemDescriptor descriptor, Maybe<float> level, Maybe<uint64_t> seed, bool ignoreInvalid) const {
244 if (!descriptor)

Callers 12

questParamTextFunction · 0.80
pickupItemsMethod · 0.80
parseItemCollectableMethod · 0.80
CraftingPaneMethod · 0.80
updateMethod · 0.80
setupWidgetMethod · 0.80
setupTooltipMethod · 0.80
determineRecipesMethod · 0.80
createTooltipMethod · 0.80
setupWidgetMethod · 0.80
updateSelectionMethod · 0.80
ContainerPaneMethod · 0.80

Calls 6

optUIntMethod · 0.80
ptrMethod · 0.45
unlockMethod · 0.45
parametersMethod · 0.45
lockMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected