fix WASD pan: no orbit reset; HUD bottom; ESC cursor
This commit is contained in:
1 parent
cac917989f
commit
93bf6c9cff
1 file changed
+79
-9
@@ -10,13 +10,14 @@ $RPGClient::TopDownPitch = 0.95;
|
|||||||
$RPGClient::PanX = 0;
|
$RPGClient::PanX = 0;
|
||||||
$RPGClient::PanY = 0;
|
$RPGClient::PanY = 0;
|
||||||
$RPGClient::PanMax = 48;
|
$RPGClient::PanMax = 48;
|
||||||
$RPGClient::PanSpeed = 0.42;
|
$RPGClient::PanSpeed = 0.9;
|
||||||
$RPGClient::CamTickSched = 0;
|
$RPGClient::CamTickSched = 0;
|
||||||
$RPGClient::LastCamSync = 0;
|
$RPGClient::LastCamSync = 0;
|
||||||
$RPGClient::MvF = 0;
|
$RPGClient::MvF = 0;
|
||||||
$RPGClient::MvB = 0;
|
$RPGClient::MvB = 0;
|
||||||
$RPGClient::MvL = 0;
|
$RPGClient::MvL = 0;
|
||||||
$RPGClient::MvR = 0;
|
$RPGClient::MvR = 0;
|
||||||
|
$RPGClient::CamModeReady = 0;
|
||||||
$RPGClient::HelloPending = 0;
|
$RPGClient::HelloPending = 0;
|
||||||
$RPGClient::HelloLast = "";
|
$RPGClient::HelloLast = "";
|
||||||
$RPGClient::TopDownWatchSched = 0;
|
$RPGClient::TopDownWatchSched = 0;
|
||||||
@@ -205,10 +206,21 @@ function RPGClient_CameraTick()
|
|||||||
$RPGClient::PanY = $RPGClient::PanY + %rightY * %speed * $RPGClient::MvR;
|
$RPGClient::PanY = $RPGClient::PanY + %rightY * %speed * $RPGClient::MvR;
|
||||||
}
|
}
|
||||||
RPGClient_ClampPan();
|
RPGClient_ClampPan();
|
||||||
|
RPGClient_BumpKeyMap();
|
||||||
RPGClient_ApplyCamera(0);
|
RPGClient_ApplyCamera(0);
|
||||||
$RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick);
|
$RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function RPGClient_BumpKeyMap()
|
||||||
|
{
|
||||||
|
if (!$RPGClient::Active || !isObject(RPGClient_KeyMap))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RPGClient_KeyMap.pop();
|
||||||
|
RPGClient_KeyMap.push();
|
||||||
|
}
|
||||||
|
|
||||||
function RPGClient_StartCameraTick()
|
function RPGClient_StartCameraTick()
|
||||||
{
|
{
|
||||||
cancel($RPGClient::CamTickSched);
|
cancel($RPGClient::CamTickSched);
|
||||||
@@ -303,6 +315,8 @@ function RPGClient_EnableOverlay()
|
|||||||
RPGClient_KeyMap.bind(keyboard, m, RPGClient_ToggleCursor);
|
RPGClient_KeyMap.bind(keyboard, m, RPGClient_ToggleCursor);
|
||||||
RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor);
|
RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor);
|
||||||
RPGClient_KeyMap.push();
|
RPGClient_KeyMap.push();
|
||||||
|
RPGClient_BumpKeyMap();
|
||||||
|
$RPGClient::CamModeReady = 0;
|
||||||
$mvFreeLook = 0;
|
$mvFreeLook = 0;
|
||||||
$firstPerson = 0;
|
$firstPerson = 0;
|
||||||
if (isObject(Canvas) && !Canvas.isCursorOn())
|
if (isObject(Canvas) && !Canvas.isCursorOn())
|
||||||
@@ -343,6 +357,16 @@ function RPGClient_DisableOverlay()
|
|||||||
RPGClient_Mouse.delete();
|
RPGClient_Mouse.delete();
|
||||||
}
|
}
|
||||||
$RPGClient::Active = 0;
|
$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)
|
function RPGClient_ApplyCamera(%forceSync)
|
||||||
@@ -381,13 +405,12 @@ function RPGClient_ApplyCamera(%forceSync)
|
|||||||
$mvBackwardAction = 0;
|
$mvBackwardAction = 0;
|
||||||
$mvLeftAction = 0;
|
$mvLeftAction = 0;
|
||||||
$mvRightAction = 0;
|
$mvRightAction = 0;
|
||||||
%cam.unmountImage(0);
|
if (!$RPGClient::CamModeReady)
|
||||||
|
{
|
||||||
|
RPGClient_InitCameraMode(%cam, %body);
|
||||||
|
}
|
||||||
%xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY);
|
%xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY);
|
||||||
%cam.setTransform(%xfm);
|
%cam.setTransform(%xfm);
|
||||||
%cam.setMode("Corpse", %body);
|
|
||||||
%cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist);
|
|
||||||
%cam.mode = "Corpse";
|
|
||||||
%cam.thirdPersonOnly = 1;
|
|
||||||
%now = getSimTime();
|
%now = getSimTime();
|
||||||
if (%forceSync || %now - $RPGClient::LastCamSync > 120)
|
if (%forceSync || %now - $RPGClient::LastCamSync > 120)
|
||||||
{
|
{
|
||||||
@@ -551,6 +574,8 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist)
|
|||||||
RPGClient_StartCameraTick();
|
RPGClient_StartCameraTick();
|
||||||
RPGClient_ScheduleCamera();
|
RPGClient_ScheduleCamera();
|
||||||
RPGClient_EnsureCursor();
|
RPGClient_EnsureCursor();
|
||||||
|
RPGClient_Hud_Ensure();
|
||||||
|
RPGClient_Hud_SyncLayout();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -607,15 +632,31 @@ function RPGClient_Hud_Ensure()
|
|||||||
new GuiTextCtrl(RPGClient_Hud)
|
new GuiTextCtrl(RPGClient_Hud)
|
||||||
{
|
{
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "top";
|
vertSizing = "bottom";
|
||||||
position = "8 8";
|
position = "8 72";
|
||||||
extent = "600 24";
|
extent = "640 22";
|
||||||
profile = "ChatHudMessageProfile";
|
profile = "ChatHudMessageProfile";
|
||||||
text = "";
|
text = "";
|
||||||
};
|
};
|
||||||
PlayGui.add(RPGClient_Hud);
|
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)
|
function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %tHp, %tMax)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active)
|
if (!$RPGClient::Active)
|
||||||
@@ -623,6 +664,8 @@ function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skil
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RPGClient_Hud_Ensure();
|
RPGClient_Hud_Ensure();
|
||||||
|
RPGClient_Hud_SyncLayout();
|
||||||
|
PlayGui.bringToFront(RPGClient_Hud);
|
||||||
%t = "";
|
%t = "";
|
||||||
if (%tMax > 0)
|
if (%tMax > 0)
|
||||||
{
|
{
|
||||||
@@ -708,8 +751,12 @@ package RPGClient_MoveMap
|
|||||||
function moveforward(%val)
|
function moveforward(%val)
|
||||||
{
|
{
|
||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
$RPGClient::MvF = %val;
|
||||||
|
if (%val && $RunMultiplier > 1)
|
||||||
{
|
{
|
||||||
$RPGClient::MvF = %val * $RunMultiplier;
|
$RPGClient::MvF = %val * $RunMultiplier;
|
||||||
|
}
|
||||||
$mvForwardAction = 0;
|
$mvForwardAction = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -719,8 +766,12 @@ package RPGClient_MoveMap
|
|||||||
function movebackward(%val)
|
function movebackward(%val)
|
||||||
{
|
{
|
||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
$RPGClient::MvB = %val;
|
||||||
|
if (%val && $RunMultiplier > 1)
|
||||||
{
|
{
|
||||||
$RPGClient::MvB = %val * $RunMultiplier;
|
$RPGClient::MvB = %val * $RunMultiplier;
|
||||||
|
}
|
||||||
$mvBackwardAction = 0;
|
$mvBackwardAction = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -730,8 +781,12 @@ package RPGClient_MoveMap
|
|||||||
function moveleft(%val)
|
function moveleft(%val)
|
||||||
{
|
{
|
||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
$RPGClient::MvL = %val;
|
||||||
|
if (%val && $RunMultiplier > 1)
|
||||||
{
|
{
|
||||||
$RPGClient::MvL = %val * $RunMultiplier;
|
$RPGClient::MvL = %val * $RunMultiplier;
|
||||||
|
}
|
||||||
$mvLeftAction = 0;
|
$mvLeftAction = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -741,8 +796,12 @@ package RPGClient_MoveMap
|
|||||||
function moveright(%val)
|
function moveright(%val)
|
||||||
{
|
{
|
||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
$RPGClient::MvR = %val;
|
||||||
|
if (%val && $RunMultiplier > 1)
|
||||||
{
|
{
|
||||||
$RPGClient::MvR = %val * $RunMultiplier;
|
$RPGClient::MvR = %val * $RunMultiplier;
|
||||||
|
}
|
||||||
$mvRightAction = 0;
|
$mvRightAction = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -773,6 +832,16 @@ activatePackage(RPGClient_MoveMap);
|
|||||||
|
|
||||||
package RPGClient_Cursor
|
package RPGClient_Cursor
|
||||||
{
|
{
|
||||||
|
function GuiCanvas::checkCursor(%this)
|
||||||
|
{
|
||||||
|
Parent::checkCursor(%this);
|
||||||
|
if ($RPGClient::Active && !%this.isCursorOn())
|
||||||
|
{
|
||||||
|
lockMouse(0);
|
||||||
|
%this.cursorOn();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function escapeMenu::toggle(%this)
|
function escapeMenu::toggle(%this)
|
||||||
{
|
{
|
||||||
if (%this.isAwake())
|
if (%this.isAwake())
|
||||||
@@ -781,6 +850,7 @@ package RPGClient_Cursor
|
|||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
{
|
{
|
||||||
schedule(0, 0, RPGClient_EnsureCursor);
|
schedule(0, 0, RPGClient_EnsureCursor);
|
||||||
|
schedule(0, 0, RPGClient_BumpKeyMap);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user