From cac917989fa5fcaaedb816b7ab69c57aac319532 Mon Sep 17 00:00:00 2001 From: RallyBlock Date: Mon, 9 Nov 2026 20:12:57 -0500 Subject: [PATCH] fix top-down orbit; WASD on keyboard; softer cursor --- client.cs | 99 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 88 insertions(+), 11 deletions(-) diff --git a/client.cs b/client.cs index 502ba29..ba0bcc4 100644 --- a/client.cs +++ b/client.cs @@ -163,6 +163,10 @@ function RPGClient_EnsureCursor() { return; } + if (Canvas.isCursorOn()) + { + return; + } lockMouse(0); cursorOn(); } @@ -211,6 +215,42 @@ function RPGClient_StartCameraTick() $RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick); } +function RPGClient_KeyMvForward(%val) +{ + if (!$RPGClient::Active) + { + return; + } + $RPGClient::MvF = %val * $RunMultiplier; +} + +function RPGClient_KeyMvBackward(%val) +{ + if (!$RPGClient::Active) + { + return; + } + $RPGClient::MvB = %val * $RunMultiplier; +} + +function RPGClient_KeyMvLeft(%val) +{ + if (!$RPGClient::Active) + { + return; + } + $RPGClient::MvL = %val * $RunMultiplier; +} + +function RPGClient_KeyMvRight(%val) +{ + if (!$RPGClient::Active) + { + return; + } + $RPGClient::MvR = %val * $RunMultiplier; +} + function RPGClient_SendClickFromCursor(%button) { if (!$RPGClient::Active || !isObject(Canvas)) @@ -244,10 +284,23 @@ function RPGClient_EnableOverlay() RPGClient_KeyMap.delete(); } new ActionMap(RPGClient_KeyMap); + RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward); + RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward); + RPGClient_KeyMap.bind(keyboard, a, RPGClient_KeyMvLeft); + RPGClient_KeyMap.bind(keyboard, d, RPGClient_KeyMvRight); + RPGClient_KeyMap.bind(keyboard0, w, RPGClient_KeyMvForward); + RPGClient_KeyMap.bind(keyboard0, s, RPGClient_KeyMvBackward); + RPGClient_KeyMap.bind(keyboard0, a, RPGClient_KeyMvLeft); + RPGClient_KeyMap.bind(keyboard0, d, RPGClient_KeyMvRight); + RPGClient_KeyMap.bind(keyboard, left, RPGClient_YawLeft); + RPGClient_KeyMap.bind(keyboard, right, RPGClient_YawRight); RPGClient_KeyMap.bind(keyboard0, left, RPGClient_YawLeft); RPGClient_KeyMap.bind(keyboard0, right, RPGClient_YawRight); + RPGClient_KeyMap.bind(keyboard, equals, RPGClient_ZoomIn); + RPGClient_KeyMap.bind(keyboard, minus, RPGClient_ZoomOut); RPGClient_KeyMap.bind(keyboard0, equals, RPGClient_ZoomIn); RPGClient_KeyMap.bind(keyboard0, minus, RPGClient_ZoomOut); + RPGClient_KeyMap.bind(keyboard, m, RPGClient_ToggleCursor); RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor); RPGClient_KeyMap.push(); $mvFreeLook = 0; @@ -330,9 +383,11 @@ function RPGClient_ApplyCamera(%forceSync) $mvRightAction = 0; %cam.unmountImage(0); %xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY); - %cam.setFlyMode(); %cam.setTransform(%xfm); - %cam.mode = "Fly"; + %cam.setMode("Corpse", %body); + %cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist); + %cam.mode = "Corpse"; + %cam.thirdPersonOnly = 1; %now = getSimTime(); if (%forceSync || %now - $RPGClient::LastCamSync > 120) { @@ -718,15 +773,6 @@ activatePackage(RPGClient_MoveMap); package RPGClient_Cursor { - function GuiCanvas::checkCursor(%this) - { - Parent::checkCursor(%this); - if ($RPGClient::Active) - { - RPGClient_EnsureCursor(); - } - } - function escapeMenu::toggle(%this) { if (%this.isAwake()) @@ -748,6 +794,37 @@ package RPGClient_Cursor }; activatePackage(RPGClient_Cursor); +package RPGClient_ViewLock +{ + function toggleFirstPerson(%val) + { + if ($RPGClient::Active) + { + return; + } + Parent::toggleFirstPerson(%val); + } + + function toggleFreeLook(%val) + { + if ($RPGClient::Active) + { + return; + } + Parent::toggleFreeLook(%val); + } + + function dropCameraAtPlayer(%val) + { + if ($RPGClient::Active) + { + return; + } + Parent::dropCameraAtPlayer(%val); + } +}; +activatePackage(RPGClient_ViewLock); + package RPGClient_Cleanup { function disconnectedCleanup(%doReconnect)