fix camera tick: CamTickOn on HUD; wheel zoom

This commit is contained in:
RallyBlock committed 2026-11-09 20:45:56 -05:00
1 parent dcdbdf8780
commit e42b2ed66b
1 file changed
+82 -19
+82 -19
View File
@@ -13,6 +13,7 @@ $RPGClient::KeyMapPushed = 0;
$RPGClient::MoveHijacked = 0; $RPGClient::MoveHijacked = 0;
$RPGClient::GlobalKeys = 0; $RPGClient::GlobalKeys = 0;
$RPGClient::PlayBooted = 0; $RPGClient::PlayBooted = 0;
$RPGClient::CamTickOn = 0;
$RPGClient::PanX = 0; $RPGClient::PanX = 0;
$RPGClient::PanY = 0; $RPGClient::PanY = 0;
$RPGClient::PanMax = 48; $RPGClient::PanMax = 48;
@@ -182,7 +183,7 @@ function RPGClient_EnsureCursor()
function RPGClient_CameraTick() function RPGClient_CameraTick()
{ {
$RPGClient::CamTickSched = 0; $RPGClient::CamTickSched = 0;
if (!$RPGClient::Active) if (!isObject(ServerConnection) || !$RPGClient::CamTickOn)
{ {
return; return;
} }
@@ -260,13 +261,9 @@ function RPGClient_BootPlay()
{ {
return; return;
} }
if ($RPGClient::PlayBooted)
{
RPGClient_EnsureOverlay();
return;
}
$RPGClient::Server = 1; $RPGClient::Server = 1;
$RPGClient::Active = 1; $RPGClient::Active = 1;
$RPGClient::CamTickOn = 1;
$RPGClient::PlayBooted = 1; $RPGClient::PlayBooted = 1;
if ($RPGClient::Dist < 6) if ($RPGClient::Dist < 6)
{ {
@@ -281,40 +278,74 @@ function RPGClient_BootPlay()
function RPGClient_KeyMvForward(%val) function RPGClient_KeyMvForward(%val)
{ {
if (!RPGClient_InPlay()) if (!isObject(ServerConnection))
{ {
return; return;
} }
if (!$RPGClient::CamTickOn)
{
moveforward(%val);
return;
}
$RPGClient::MvF = %val; $RPGClient::MvF = %val;
} }
function RPGClient_KeyMvBackward(%val) function RPGClient_KeyMvBackward(%val)
{ {
if (!RPGClient_InPlay()) if (!isObject(ServerConnection))
{ {
return; return;
} }
if (!$RPGClient::CamTickOn)
{
movebackward(%val);
return;
}
$RPGClient::MvB = %val; $RPGClient::MvB = %val;
} }
function RPGClient_KeyMvLeft(%val) function RPGClient_KeyMvLeft(%val)
{ {
if (!RPGClient_InPlay()) if (!isObject(ServerConnection))
{ {
return; return;
} }
if (!$RPGClient::CamTickOn)
{
moveleft(%val);
return;
}
$RPGClient::MvL = %val; $RPGClient::MvL = %val;
} }
function RPGClient_KeyMvRight(%val) function RPGClient_KeyMvRight(%val)
{ {
if (!RPGClient_InPlay()) if (!isObject(ServerConnection))
{ {
return; return;
} }
if (!$RPGClient::CamTickOn)
{
moveright(%val);
return;
}
$RPGClient::MvR = %val; $RPGClient::MvR = %val;
} }
function RPGClient_RestoreMoveMap()
{
if (!isObject(moveMap))
{
return;
}
moveMap.bind(keyboard, w, moveforward);
moveMap.bind(keyboard, s, movebackward);
moveMap.bind(keyboard, a, moveleft);
moveMap.bind(keyboard, d, moveright);
moveMap.bind(keyboard, left, invLeft);
moveMap.bind(keyboard, right, invRight);
}
function RPGClient_EnsureGlobalKeys() function RPGClient_EnsureGlobalKeys()
{ {
if ($RPGClient::GlobalKeys || !isObject(GlobalActionMap)) if ($RPGClient::GlobalKeys || !isObject(GlobalActionMap))
@@ -455,7 +486,6 @@ function RPGClient_EnsureOverlay()
PlayGui.pushToBack(RPGClient_Mouse); PlayGui.pushToBack(RPGClient_Mouse);
} }
RPGClient_EnsureKeyMap(); RPGClient_EnsureKeyMap();
RPGClient_HijackMoveMap();
RPGClient_EnsureGlobalKeys(); RPGClient_EnsureGlobalKeys();
$enableDirectInput = 1; $enableDirectInput = 1;
activateDirectInput(); activateDirectInput();
@@ -509,7 +539,9 @@ function RPGClient_DisableOverlay()
$RPGClient::HudPlaced = 0; $RPGClient::HudPlaced = 0;
$RPGClient::MoveHijacked = 0; $RPGClient::MoveHijacked = 0;
$RPGClient::PlayBooted = 0; $RPGClient::PlayBooted = 0;
$RPGClient::CamTickOn = 0;
RPGClient_ClearGlobalKeys(); RPGClient_ClearGlobalKeys();
RPGClient_RestoreMoveMap();
} }
function RPGClient_Hud_Place() function RPGClient_Hud_Place()
@@ -600,8 +632,9 @@ function RPGClient_ScheduleCamera()
function RPGClient_YawLeft(%val) function RPGClient_YawLeft(%val)
{ {
if (!RPGClient_InPlay()) if (!$RPGClient::CamTickOn)
{ {
invLeft(%val);
return; return;
} }
if (%val) if (%val)
@@ -616,8 +649,9 @@ function RPGClient_YawLeft(%val)
function RPGClient_YawRight(%val) function RPGClient_YawRight(%val)
{ {
if (!RPGClient_InPlay()) if (!$RPGClient::CamTickOn)
{ {
invRight(%val);
return; return;
} }
if (%val) if (%val)
@@ -632,7 +666,7 @@ function RPGClient_YawRight(%val)
function RPGClient_ZoomIn(%val) function RPGClient_ZoomIn(%val)
{ {
if (!RPGClient_InPlay()) if (!$RPGClient::CamTickOn)
{ {
return; return;
} }
@@ -645,7 +679,7 @@ function RPGClient_ZoomIn(%val)
function RPGClient_ZoomOut(%val) function RPGClient_ZoomOut(%val)
{ {
if (!RPGClient_InPlay()) if (!$RPGClient::CamTickOn)
{ {
return; return;
} }
@@ -772,6 +806,7 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist)
$RPGClient::Yaw = %yaw; $RPGClient::Yaw = %yaw;
$RPGClient::OrbitInit = 0; $RPGClient::OrbitInit = 0;
$RPGClient::HudPlaced = 0; $RPGClient::HudPlaced = 0;
$RPGClient::CamTickOn = 1;
RPGClient_EnsureOverlay(); RPGClient_EnsureOverlay();
RPGClient_BindKeys(); RPGClient_BindKeys();
RPGClient_StartCameraTick(); RPGClient_StartCameraTick();
@@ -792,10 +827,7 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist)
function clientCmdRPG_Hud(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %blocking, %tHp, %tMax) function clientCmdRPG_Hud(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %blocking, %tHp, %tMax)
{ {
if (!RPGClient_InPlay()) RPGClient_BootPlay();
{
RPGClient_BootPlay();
}
RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %tHp, %tMax); RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %tHp, %tMax);
} }
@@ -1028,6 +1060,35 @@ package RPGClient_Input
} }
Parent::invRight(%val); Parent::invRight(%val);
} }
function scrollInventory(%val)
{
if ($RPGClient::CamTickOn && %val != 0)
{
if (%val > 0)
{
$RPGClient::Dist = getMax(6, $RPGClient::Dist - 0.35 * %val);
}
else
{
$RPGClient::Dist = getMin(32, $RPGClient::Dist - 0.35 * %val);
}
RPGClient_ApplyCamera(1);
return;
}
Parent::scrollInventory(%val);
}
function yaw(%val)
{
if ($RPGClient::CamTickOn && %val != 0)
{
$sens = $pref::Input::MouseSensitivity;
$RPGClient::Yaw += %val * %sens * 0.004;
return;
}
Parent::yaw(%val);
}
}; };
activatePackage(RPGClient_Input); activatePackage(RPGClient_Input);
@@ -1122,7 +1183,9 @@ package RPGClient_Cleanup
$RPGClient::TopDownWatchSched = 0; $RPGClient::TopDownWatchSched = 0;
$RPGClient::Server = 0; $RPGClient::Server = 0;
$RPGClient::PlayBooted = 0; $RPGClient::PlayBooted = 0;
$RPGClient::CamTickOn = 0;
RPGClient_ClearGlobalKeys(); RPGClient_ClearGlobalKeys();
RPGClient_RestoreMoveMap();
Parent::disconnectedCleanup(%doReconnect); Parent::disconnectedCleanup(%doReconnect);
} }
}; };