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

summaryrefslogtreecommitdiff
path: root/source/game/StarHumanoid.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-08-18 18:06:00 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-08-18 18:06:00 +1000
commit0c2015118be46e2670171fc64dc02d22d56789b7 (patch)
tree1ce63c9968406a8c9dc16d1ccd04eeaad986be66 /source/game/StarHumanoid.cpp
parentaa0ef06ac64542183a6f66bbfcad7d4cb45e9fd9 (diff)
Armor Item improvements (& other misc)
TODO: Make option to return to previewing with dummy
Diffstat (limited to 'source/game/StarHumanoid.cpp')
-rw-r--r--source/game/StarHumanoid.cpp51
1 files changed, 39 insertions, 12 deletions
diff --git a/source/game/StarHumanoid.cpp b/source/game/StarHumanoid.cpp
index 1f9c4e9..106dd9f 100644
--- a/source/game/StarHumanoid.cpp
+++ b/source/game/StarHumanoid.cpp
@@ -939,28 +939,55 @@ Humanoid Humanoid::makeDummy(Gender gender) {
return humanoid;
}
-List<Drawable> Humanoid::renderDummy(Gender gender, HeadArmor const* head, ChestArmor const* chest, LegsArmor const* legs, BackArmor const* back) {
+List<Drawable> Humanoid::renderDummy(Gender gender, Maybe<HeadArmor const*> head, Maybe<ChestArmor const*> chest, Maybe<LegsArmor const*> legs, Maybe<BackArmor const*> back) {
if (head) {
- setHeadArmorFrameset(head->frameset(gender));
- setHeadArmorDirectives(head->directives());
- setHelmetMaskDirectives(head->maskDirectives());
+ if (auto headPtr = *head) {
+ setHeadArmorFrameset(headPtr->frameset(gender));
+ setHeadArmorDirectives(headPtr->directives());
+ setHelmetMaskDirectives(headPtr->maskDirectives());
+ }
+ else {
+ setHeadArmorFrameset("");
+ setHeadArmorDirectives("");
+ setHelmetMaskDirectives("");
+ }
}
if (chest) {
- setBackSleeveFrameset(chest->backSleeveFrameset(gender));
- setFrontSleeveFrameset(chest->frontSleeveFrameset(gender));
- setChestArmorFrameset(chest->bodyFrameset(gender));
- setChestArmorDirectives(chest->directives());
+ if (auto chestPtr = *chest) {
+ setBackSleeveFrameset(chestPtr->backSleeveFrameset(gender));
+ setFrontSleeveFrameset(chestPtr->frontSleeveFrameset(gender));
+ setChestArmorFrameset(chestPtr->bodyFrameset(gender));
+ setChestArmorDirectives(chestPtr->directives());
+ }
+ else {
+ setBackSleeveFrameset("");
+ setFrontSleeveFrameset("");
+ setChestArmorFrameset("");
+ setChestArmorDirectives("");
+ }
}
if (legs) {
- setLegsArmorFrameset(legs->frameset(gender));
- setLegsArmorDirectives(legs->directives());
+ if (auto legsPtr = *legs) {
+ setLegsArmorFrameset(legsPtr->frameset(gender));
+ setLegsArmorDirectives(legsPtr->directives());
+ }
+ else {
+ setLegsArmorFrameset("");
+ setLegsArmorDirectives("");
+ }
}
if (back) {
- setBackArmorFrameset(back->frameset(gender));
- setBackArmorDirectives(back->directives());
+ if (auto backPtr = *back) {
+ setBackArmorFrameset(backPtr->frameset(gender));
+ setBackArmorDirectives(backPtr->directives());
+ }
+ else {
+ setBackArmorFrameset("");
+ setBackArmorDirectives("");
+ }
}
auto drawables = render();