restore orbit top-down; WASD yaw+zoom; stable HUD
This commit is contained in:
1 parent
93bf6c9cff
commit
5990114083
1 file changed
+30
-66
@@ -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)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user