diff --git a/client.cs b/client.cs index 7f21d8d..3f3906a 100644 --- a/client.cs +++ b/client.cs @@ -10,7 +10,8 @@ $RPGClient::TopDownPitch = 0.95; $RPGClient::PanX = 0; $RPGClient::PanY = 0; $RPGClient::PanMax = 48; -$RPGClient::PanSpeed = 0.9; +$RPGClient::YawSpeed = 0.045; +$RPGClient::ZoomSpeed = 0.12; $RPGClient::CamTickSched = 0; $RPGClient::LastCamSync = 0; $RPGClient::MvF = 0; @@ -179,34 +180,24 @@ function RPGClient_CameraTick() { return; } - %speed = $RPGClient::PanSpeed; - %yaw = $RPGClient::Yaw; - %fwdX = -mCos(%yaw); - %fwdY = -mSin(%yaw); - %rightX = mSin(%yaw); - %rightY = -mCos(%yaw); - if ($RPGClient::MvF) - { - $RPGClient::PanX = $RPGClient::PanX + %fwdX * %speed * $RPGClient::MvF; - $RPGClient::PanY = $RPGClient::PanY + %fwdY * %speed * $RPGClient::MvF; - } - if ($RPGClient::MvB) - { - $RPGClient::PanX = $RPGClient::PanX - %fwdX * %speed * $RPGClient::MvB; - $RPGClient::PanY = $RPGClient::PanY - %fwdY * %speed * $RPGClient::MvB; - } + %spin = $RPGClient::YawSpeed; + %zoom = $RPGClient::ZoomSpeed; if ($RPGClient::MvL) { - $RPGClient::PanX = $RPGClient::PanX - %rightX * %speed * $RPGClient::MvL; - $RPGClient::PanY = $RPGClient::PanY - %rightY * %speed * $RPGClient::MvL; + $RPGClient::Yaw = $RPGClient::Yaw - %spin * $RPGClient::MvL; } if ($RPGClient::MvR) { - $RPGClient::PanX = $RPGClient::PanX + %rightX * %speed * $RPGClient::MvR; - $RPGClient::PanY = $RPGClient::PanY + %rightY * %speed * $RPGClient::MvR; + $RPGClient::Yaw = $RPGClient::Yaw + %spin * $RPGClient::MvR; + } + if ($RPGClient::MvF) + { + $RPGClient::Dist = getMax(6, $RPGClient::Dist - %zoom * $RPGClient::MvF); + } + if ($RPGClient::MvB) + { + $RPGClient::Dist = getMin(32, $RPGClient::Dist + %zoom * $RPGClient::MvB); } - RPGClient_ClampPan(); - RPGClient_BumpKeyMap(); RPGClient_ApplyCamera(0); $RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick); } @@ -233,7 +224,7 @@ function RPGClient_KeyMvForward(%val) { return; } - $RPGClient::MvF = %val * $RunMultiplier; + $RPGClient::MvF = %val; } function RPGClient_KeyMvBackward(%val) @@ -242,7 +233,7 @@ function RPGClient_KeyMvBackward(%val) { return; } - $RPGClient::MvB = %val * $RunMultiplier; + $RPGClient::MvB = %val; } function RPGClient_KeyMvLeft(%val) @@ -251,7 +242,7 @@ function RPGClient_KeyMvLeft(%val) { return; } - $RPGClient::MvL = %val * $RunMultiplier; + $RPGClient::MvL = %val; } function RPGClient_KeyMvRight(%val) @@ -260,7 +251,7 @@ function RPGClient_KeyMvRight(%val) { return; } - $RPGClient::MvR = %val * $RunMultiplier; + $RPGClient::MvR = %val; } function RPGClient_SendClickFromCursor(%button) @@ -316,7 +307,6 @@ function RPGClient_EnableOverlay() RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor); RPGClient_KeyMap.push(); RPGClient_BumpKeyMap(); - $RPGClient::CamModeReady = 0; $mvFreeLook = 0; $firstPerson = 0; if (isObject(Canvas) && !Canvas.isCursorOn()) @@ -357,16 +347,6 @@ function RPGClient_DisableOverlay() RPGClient_Mouse.delete(); } $RPGClient::Active = 0; - $RPGClient::CamModeReady = 0; -} - -function RPGClient_InitCameraMode(%cam, %body) -{ - %cam.unmountImage(0); - %cam.setMode("Corpse", %body); - %cam.mode = "Corpse"; - %cam.thirdPersonOnly = 1; - $RPGClient::CamModeReady = 1; } function RPGClient_ApplyCamera(%forceSync) @@ -405,17 +385,20 @@ function RPGClient_ApplyCamera(%forceSync) $mvBackwardAction = 0; $mvLeftAction = 0; $mvRightAction = 0; - if (!$RPGClient::CamModeReady) - { - RPGClient_InitCameraMode(%cam, %body); - } - %xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY); + $RPGClient::PanX = 0; + $RPGClient::PanY = 0; + %xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, 0, 0); + %cam.unmountImage(0); %cam.setTransform(%xfm); + %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) { $RPGClient::LastCamSync = %now; - commandToServer('RPG_CamSync', $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY); + commandToServer('RPG_CamSync', $RPGClient::Yaw, $RPGClient::Dist, 0, 0); } } @@ -575,7 +558,6 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist) RPGClient_ScheduleCamera(); RPGClient_EnsureCursor(); RPGClient_Hud_Ensure(); - RPGClient_Hud_SyncLayout(); } else { @@ -631,32 +613,16 @@ function RPGClient_Hud_Ensure() } new GuiTextCtrl(RPGClient_Hud) { - horizSizing = "width"; + horizSizing = "center"; vertSizing = "bottom"; - position = "8 72"; - extent = "640 22"; + position = "0 88"; + extent = "520 20"; profile = "ChatHudMessageProfile"; text = ""; }; PlayGui.add(RPGClient_Hud); } -function RPGClient_Hud_SyncLayout() -{ - if (!isObject(RPGClient_Hud) || !isObject(Canvas)) - { - return; - } - %ext = Canvas.getExtent(); - %w = getWord(%ext, 0); - %h = getWord(%ext, 1); - if (%w > 0) - { - RPGClient_Hud.setExtent(%w - 16, 22); - RPGClient_Hud.setPosition(8, %h - 94); - } -} - function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %tHp, %tMax) { if (!$RPGClient::Active) @@ -664,8 +630,6 @@ function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skil return; } RPGClient_Hud_Ensure(); - RPGClient_Hud_SyncLayout(); - PlayGui.bringToFront(RPGClient_Hud); %t = ""; if (%tMax > 0) {