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

summaryrefslogtreecommitdiff
path: root/source/windowing
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-28 02:21:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-28 02:21:09 +1000
commit1fc295b97975d20ed0f8011c1ece6fcd687c97cd (patch)
treefa924eef7d5e4a1687a84f27446e375c53884d99 /source/windowing
parent69b8eed8f76c85695bafd9d0f179e53a2ba43e15 (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')
-rw-r--r--source/windowing/StarPortraitWidget.cpp15
-rw-r--r--source/windowing/StarPortraitWidget.hpp2
-rw-r--r--source/windowing/StarWidgetParsing.cpp2
3 files changed, 17 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;
}
diff --git a/source/windowing/StarPortraitWidget.hpp b/source/windowing/StarPortraitWidget.hpp
index c56f003..37b77dc 100644
--- a/source/windowing/StarPortraitWidget.hpp
+++ b/source/windowing/StarPortraitWidget.hpp
@@ -19,6 +19,7 @@ public:
void setMode(PortraitMode mode);
void setScale(float scale);
void setIconMode();
+ void setRenderHumanoid(bool);
bool sendEvent(InputEvent const& event);
protected:
@@ -35,6 +36,7 @@ private:
AssetPath m_noEntityImagePart;
float m_scale;
+ bool m_renderHumanoid;
bool m_iconMode;
AssetPath m_iconImage;
Vec2I m_iconOffset;
diff --git a/source/windowing/StarWidgetParsing.cpp b/source/windowing/StarWidgetParsing.cpp
index a8a08df..8e27ecd 100644
--- a/source/windowing/StarWidgetParsing.cpp
+++ b/source/windowing/StarWidgetParsing.cpp
@@ -378,6 +378,8 @@ WidgetConstructResult WidgetParser::portraitHandler(String const& name, Json con
if (config.contains("portraitMode"))
portrait->setMode(PortraitModeNames.getLeft(config.getString("portraitMode")));
+ if (config.contains("renderHumanoid"))
+ portrait->setRenderHumanoid(config.getBool("renderHumanoid"));
portrait->setScale(config.getFloat("scale", 1));