diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-18 18:06:00 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-18 18:06:00 +1000 |
commit | 0c2015118be46e2670171fc64dc02d22d56789b7 (patch) | |
tree | 1ce63c9968406a8c9dc16d1ccd04eeaad986be66 /source/game/StarHumanoid.cpp | |
parent | aa0ef06ac64542183a6f66bbfcad7d4cb45e9fd9 (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.cpp | 51 |
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(); |