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

summaryrefslogtreecommitdiff
path: root/source/game/StarToolUser.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2025-05-31 15:31:38 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2025-05-31 15:31:38 +1000
commit8e381cb362f8d40dffc3dca610bb70c9b3e7b94d (patch)
tree96b35cff1631aa2b120b33fb3fa657d26907fd41 /source/game/StarToolUser.cpp
parent50a64f949a12f5e6db94724afa18b08b755eb5e7 (diff)
armor: support for flipDirectives, fix activeItem arm frames with directives breaking on custom armor
Diffstat (limited to 'source/game/StarToolUser.cpp')
-rw-r--r--source/game/StarToolUser.cpp44
1 files changed, 21 insertions, 23 deletions
diff --git a/source/game/StarToolUser.cpp b/source/game/StarToolUser.cpp
index be239c1..8900bc7 100644
--- a/source/game/StarToolUser.cpp
+++ b/source/game/StarToolUser.cpp
@@ -207,8 +207,8 @@ List<Drawable> ToolUser::renderObjectPreviews(Vec2F aimPosition, Direction walki
Maybe<Direction> ToolUser::setupHumanoidHandItems(Humanoid& humanoid, Vec2F position, Vec2F aimPosition) const {
if (m_suppress.get() || !m_user) {
- humanoid.setPrimaryHandParameters(false, 0.0f, 0.0f, false, false, false);
- humanoid.setAltHandParameters(false, 0.0f, 0.0f, false, false);
+ humanoid.setHandParameters(ToolHand::Primary, false, 0.0f, 0.0f, false, false, false);
+ humanoid.setHandParameters(ToolHand::Alt, false, 0.0f, 0.0f, false, false, false);
return {};
}
@@ -216,10 +216,8 @@ Maybe<Direction> ToolUser::setupHumanoidHandItems(Humanoid& humanoid, Vec2F posi
Maybe<Direction> overrideFacingDirection;
auto setRotation = [&](bool holdingItem, float angle, float itemAngle, bool twoHanded, bool recoil, bool outsideOfHand) {
- if (primary || twoHanded)
- humanoid.setPrimaryHandParameters(holdingItem, angle, itemAngle, twoHanded, recoil, outsideOfHand);
- else
- humanoid.setAltHandParameters(holdingItem, angle, itemAngle, recoil, outsideOfHand);
+ ToolHand hand = primary || twoHanded ? ToolHand::Primary : ToolHand::Alt;
+ humanoid.setHandParameters(hand, holdingItem, angle, itemAngle, twoHanded, recoil, outsideOfHand);
};
ItemPtr handItem = primary ? m_primaryHandItem.get() : m_altHandItem.get();
@@ -258,7 +256,7 @@ Maybe<Direction> ToolUser::setupHumanoidHandItems(Humanoid& humanoid, Vec2F posi
Maybe<Direction> overrideFacingDirection;
overrideFacingDirection = overrideFacingDirection.orMaybe(inner(true));
if (itemSafeTwoHanded(m_primaryHandItem.get()))
- humanoid.setAltHandParameters(false, 0.0f, 0.0f, false, false);
+ humanoid.setHandParameters(ToolHand::Alt, false, 0.0f, 0.0f, false, false, false);
else
overrideFacingDirection = overrideFacingDirection.orMaybe(inner(false));
@@ -267,31 +265,31 @@ Maybe<Direction> ToolUser::setupHumanoidHandItems(Humanoid& humanoid, Vec2F posi
void ToolUser::setupHumanoidHandItemDrawables(Humanoid& humanoid) const {
if (m_suppress.get() || !m_user) {
- humanoid.setPrimaryHandFrameOverrides("", "");
- humanoid.setAltHandFrameOverrides("", "");
- humanoid.setPrimaryHandDrawables({});
- humanoid.setAltHandDrawables({});
- humanoid.setPrimaryHandNonRotatedDrawables({});
- humanoid.setAltHandNonRotatedDrawables({});
+ humanoid.setHandFrameOverrides(ToolHand::Primary, "", "");
+ humanoid.setHandFrameOverrides(ToolHand::Alt, "", "");
+ humanoid.setHandDrawables(ToolHand::Primary, {});
+ humanoid.setHandDrawables(ToolHand::Alt, {});
+ humanoid.setHandNonRotatedDrawables(ToolHand::Primary, {});
+ humanoid.setHandNonRotatedDrawables(ToolHand::Alt, {});
return;
}
auto inner = [&](bool primary) {
- auto setRotated = [&](String const& backFrameOverride, String const& frontFrameOverride, List<Drawable> drawables, bool twoHanded) {
+ auto setRotated = [&](String const& backFrame, String const& frontFrame, List<Drawable> drawables, bool twoHanded) {
if (primary || twoHanded) {
- humanoid.setPrimaryHandFrameOverrides(backFrameOverride, frontFrameOverride);
- humanoid.setPrimaryHandDrawables(std::move(drawables));
+ humanoid.setHandFrameOverrides(ToolHand::Primary, backFrame, frontFrame);
+ humanoid.setHandDrawables(ToolHand::Primary, std::move(drawables));
} else {
- humanoid.setAltHandFrameOverrides(backFrameOverride, frontFrameOverride);
- humanoid.setAltHandDrawables(std::move(drawables));
+ humanoid.setHandFrameOverrides(ToolHand::Alt, backFrame, frontFrame);
+ humanoid.setHandDrawables(ToolHand::Alt, std::move(drawables));
}
};
auto setNonRotated = [&](List<Drawable> drawables) {
if (primary)
- humanoid.setPrimaryHandNonRotatedDrawables(std::move(drawables));
+ humanoid.setHandNonRotatedDrawables(ToolHand::Primary, std::move(drawables));
else
- humanoid.setAltHandNonRotatedDrawables(std::move(drawables));
+ humanoid.setHandNonRotatedDrawables(ToolHand::Alt, std::move(drawables));
};
ItemPtr handItem = primary ? m_primaryHandItem.get() : m_altHandItem.get();
@@ -321,9 +319,9 @@ void ToolUser::setupHumanoidHandItemDrawables(Humanoid& humanoid) const {
inner(true);
if (itemSafeTwoHanded(m_primaryHandItem.get())) {
- humanoid.setAltHandFrameOverrides("", "");
- humanoid.setAltHandDrawables({});
- humanoid.setAltHandNonRotatedDrawables({});
+ humanoid.setHandFrameOverrides(ToolHand::Alt, "", "");
+ humanoid.setHandDrawables(ToolHand::Alt, {});
+ humanoid.setHandNonRotatedDrawables(ToolHand::Alt, {});
} else {
inner(false);
}