diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-28 02:21:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-28 02:21:09 +1000 |
commit | 1fc295b97975d20ed0f8011c1ece6fcd687c97cd (patch) | |
tree | fa924eef7d5e4a1687a84f27446e375c53884d99 /source/windowing/StarPortraitWidget.cpp | |
parent | 69b8eed8f76c85695bafd9d0f179e53a2ba43e15 (diff) |
Fun: Draw the actual Humanoid in the inventory pane
undecided. might need to set a scissor rect on the portrait
Diffstat (limited to 'source/windowing/StarPortraitWidget.cpp')
-rw-r--r-- | source/windowing/StarPortraitWidget.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source/windowing/StarPortraitWidget.cpp b/source/windowing/StarPortraitWidget.cpp index 9341d55..6af27ba 100644 --- a/source/windowing/StarPortraitWidget.cpp +++ b/source/windowing/StarPortraitWidget.cpp @@ -17,6 +17,7 @@ PortraitWidget::PortraitWidget() { m_entity = {}; m_portraitMode = PortraitMode::Full; m_scale = 1; + m_renderHumanoid = false; m_iconMode = false; init(); @@ -37,9 +38,15 @@ void PortraitWidget::renderImpl() { context()->drawInterfaceQuad(m_iconImage, Vec2F(screenPosition()), m_scale); } if (m_entity) { - List<Drawable> portrait = m_entity->portrait(m_portraitMode); + HumanoidPtr humanoid = nullptr; + if (m_renderHumanoid) { + if (auto player = as<Player>(m_entity)) + humanoid = player->humanoid(); + } + + List<Drawable> portrait = humanoid ? humanoid->render() : m_entity->portrait(m_portraitMode); for (auto& i : portrait) { - i.scale(m_scale); + i.scale(humanoid ? m_scale * 8.0f : m_scale); context()->drawInterfaceDrawable(i, Vec2F(screenPosition() + offset)); } } else { @@ -88,6 +95,10 @@ void PortraitWidget::setIconMode() { updateSize(); } +void PortraitWidget::setRenderHumanoid(bool renderHumanoid) { + m_renderHumanoid = renderHumanoid; +} + bool PortraitWidget::sendEvent(InputEvent const&) { return false; } |