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

Method npcPortrait

source/game/StarNpcDatabase.cpp:334–366  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

332}
333
334List<Drawable> NpcDatabase::npcPortrait(NpcVariant const& npcVariant, PortraitMode mode) const {
335 Humanoid humanoid(npcVariant.humanoidConfig);
336 humanoid.setIdentity(npcVariant.humanoidIdentity);
337
338 auto itemDatabase = Root::singleton().itemDatabase();
339 auto items = StringMap<ItemDescriptor, CaseInsensitiveStringHash, CaseInsensitiveStringCompare>::from(npcVariant.items);
340
341 auto makeItem = [&npcVariant, &itemDatabase](ItemDescriptor itemDescriptor) -> ItemPtr {
342 return itemDatabase->item(itemDescriptor, npcVariant.level, npcVariant.seed);
343 };
344
345 ArmorWearer armor;
346 if (items.contains("head"))
347 armor.setHeadItem(as<HeadArmor>(makeItem(items["head"])));
348 if (items.contains("headCosmetic"))
349 armor.setHeadItem(as<HeadArmor>(makeItem(items["headCosmetic"])));
350 if (items.contains("chest"))
351 armor.setChestItem(as<ChestArmor>(makeItem(items["chest"])));
352 if (items.contains("chestCosmetic"))
353 armor.setChestCosmeticItem(as<ChestArmor>(makeItem(items["chestCosmetic"])));
354 if (items.contains("legs"))
355 armor.setLegsItem(as<LegsArmor>(makeItem(items["legs"])));
356 if (items.contains("legsCosmetic"))
357 armor.setLegsCosmeticItem(as<LegsArmor>(makeItem(items["legsCosmetic"])));
358 if (items.contains("back"))
359 armor.setBackItem(as<BackArmor>(makeItem(items["back"])));
360 if (items.contains("backCosmetic"))
361 armor.setBackCosmeticItem(as<BackArmor>(makeItem(items["backCosmetic"])));
362
363 armor.setupHumanoid(humanoid, false);
364
365 return humanoid.renderPortrait(mode);
366}
367
368Json NpcDatabase::buildConfig(String const& typeName, Json const& overrides) const {
369 auto const& baseConfig = m_npcTypes.get(typeName);

Callers

nothing calls this directly

Calls 14

singletonClass · 0.85
itemDatabaseMethod · 0.80
setHeadItemMethod · 0.80
setChestItemMethod · 0.80
setChestCosmeticItemMethod · 0.80
setLegsItemMethod · 0.80
setLegsCosmeticItemMethod · 0.80
setBackItemMethod · 0.80
setBackCosmeticItemMethod · 0.80
setupHumanoidMethod · 0.80
renderPortraitMethod · 0.80
setIdentityMethod · 0.45

Tested by

no test coverage detected