From 32e6eab0699c0c802435e6fb1a3ad47d2748acee Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Wed, 2 Aug 2023 21:59:07 +1000 Subject: Player: Make interaction radius scriptable --- source/game/StarPlayer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'source/game/StarPlayer.cpp') diff --git a/source/game/StarPlayer.cpp b/source/game/StarPlayer.cpp index 70e733e..c9816c1 100644 --- a/source/game/StarPlayer.cpp +++ b/source/game/StarPlayer.cpp @@ -1334,7 +1334,7 @@ InteractiveEntityPtr Player::bestInteractionEntity(bool includeNearby) { return {}; InteractiveEntityPtr interactiveEntity; - if (auto entity = world()->getInteractiveInRange(m_aimPosition, position(), m_interactRadius)) { + if (auto entity = world()->getInteractiveInRange(m_aimPosition, isAdmin() ? m_aimPosition : position(), m_interactRadius)) { interactiveEntity = entity; } else if (includeNearby) { Vec2F interactBias = m_walkIntoInteractBias; @@ -1346,7 +1346,7 @@ InteractiveEntityPtr Player::bestInteractionEntity(bool includeNearby) { interactiveEntity = entity; } - if (interactiveEntity && world()->canReachEntity(position(), interactRadius(), interactiveEntity->entityId())) + if (interactiveEntity && (isAdmin() || world()->canReachEntity(position(), interactRadius(), interactiveEntity->entityId()))) return interactiveEntity; return {}; } @@ -1480,6 +1480,10 @@ float Player::interactRadius() const { return m_interactRadius; } +void Player::setInteractRadius(float interactRadius) { + m_interactRadius = interactRadius; +} + List Player::pullInteractActions() { List results; eraseWhere(m_pendingInteractActions, [&results](auto& promise) { @@ -1822,7 +1826,7 @@ bool Player::inInteractionRange() const { } bool Player::inInteractionRange(Vec2F aimPos) const { - return world()->geometry().diff(aimPos, position()).magnitude() < interactRadius(); + return isAdmin() || world()->geometry().diff(aimPos, position()).magnitude() < interactRadius(); } bool Player::inToolRange() const { @@ -1830,7 +1834,7 @@ bool Player::inToolRange() const { } bool Player::inToolRange(Vec2F const& aimPos) const { - return world()->geometry().diff(aimPos, position()).magnitude() < toolRadius(); + return isAdmin() || world()->geometry().diff(aimPos, position()).magnitude() < toolRadius(); } void Player::getNetStates(bool initial) { -- cgit v1.2.3