fix input: overlay ensure, moveMap hooks, hijack
This commit is contained in:
1 parent
6671b71ffb
commit
a118214588
1 file changed
+165
-37
@@ -9,6 +9,8 @@ $RPGClient::Dist = 14;
|
|||||||
$RPGClient::TopDownPitch = 1.22;
|
$RPGClient::TopDownPitch = 1.22;
|
||||||
$RPGClient::OrbitInit = 0;
|
$RPGClient::OrbitInit = 0;
|
||||||
$RPGClient::HudPlaced = 0;
|
$RPGClient::HudPlaced = 0;
|
||||||
|
$RPGClient::KeyMapPushed = 0;
|
||||||
|
$RPGClient::MoveHijacked = 0;
|
||||||
$RPGClient::PanX = 0;
|
$RPGClient::PanX = 0;
|
||||||
$RPGClient::PanY = 0;
|
$RPGClient::PanY = 0;
|
||||||
$RPGClient::PanMax = 48;
|
$RPGClient::PanMax = 48;
|
||||||
@@ -290,30 +292,10 @@ function RPGClient_SendClickFromCursor(%button)
|
|||||||
RPGClient_SendClick(%button, Canvas.getCursorPos());
|
RPGClient_SendClick(%button, Canvas.getCursorPos());
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_EnableOverlay()
|
function RPGClient_EnsureKeyMap()
|
||||||
{
|
{
|
||||||
if (!isObject(PlayGui) || isObject(RPGClient_Mouse))
|
if (!isObject(RPGClient_KeyMap))
|
||||||
{
|
{
|
||||||
return;
|
|
||||||
}
|
|
||||||
new GuiMouseEventCtrl(RPGClient_Mouse)
|
|
||||||
{
|
|
||||||
className = "RPGClient_Mouse";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
position = "0 0";
|
|
||||||
extent = "640 480";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
enabled = "1";
|
|
||||||
modal = "0";
|
|
||||||
};
|
|
||||||
PlayGui.add(RPGClient_Mouse);
|
|
||||||
PlayGui.pushToBack(RPGClient_Mouse);
|
|
||||||
if (isObject(RPGClient_KeyMap))
|
|
||||||
{
|
|
||||||
RPGClient_KeyMap.delete();
|
|
||||||
}
|
|
||||||
new ActionMap(RPGClient_KeyMap);
|
new ActionMap(RPGClient_KeyMap);
|
||||||
RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward);
|
RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward);
|
||||||
RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward);
|
RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward);
|
||||||
@@ -329,12 +311,67 @@ function RPGClient_EnableOverlay()
|
|||||||
RPGClient_KeyMap.bind(keyboard0, right, RPGClient_YawRight);
|
RPGClient_KeyMap.bind(keyboard0, right, RPGClient_YawRight);
|
||||||
RPGClient_KeyMap.bind(keyboard, equals, RPGClient_ZoomIn);
|
RPGClient_KeyMap.bind(keyboard, equals, RPGClient_ZoomIn);
|
||||||
RPGClient_KeyMap.bind(keyboard, minus, RPGClient_ZoomOut);
|
RPGClient_KeyMap.bind(keyboard, minus, RPGClient_ZoomOut);
|
||||||
|
RPGClient_KeyMap.bind(keyboard, "[", RPGClient_ZoomIn);
|
||||||
|
RPGClient_KeyMap.bind(keyboard, "]", RPGClient_ZoomOut);
|
||||||
RPGClient_KeyMap.bind(keyboard0, equals, RPGClient_ZoomIn);
|
RPGClient_KeyMap.bind(keyboard0, equals, RPGClient_ZoomIn);
|
||||||
RPGClient_KeyMap.bind(keyboard0, minus, RPGClient_ZoomOut);
|
RPGClient_KeyMap.bind(keyboard0, minus, RPGClient_ZoomOut);
|
||||||
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);
|
||||||
|
}
|
||||||
|
if ($RPGClient::KeyMapPushed)
|
||||||
|
{
|
||||||
|
RPGClient_KeyMap.pop();
|
||||||
|
}
|
||||||
RPGClient_KeyMap.push();
|
RPGClient_KeyMap.push();
|
||||||
RPGClient_BumpKeyMap();
|
$RPGClient::KeyMapPushed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function RPGClient_HijackMoveMap()
|
||||||
|
{
|
||||||
|
if ($RPGClient::MoveHijacked || !isObject(moveMap))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
moveMap.bind(keyboard, w, RPGClient_KeyMvForward);
|
||||||
|
moveMap.bind(keyboard, s, RPGClient_KeyMvBackward);
|
||||||
|
moveMap.bind(keyboard, a, RPGClient_KeyMvLeft);
|
||||||
|
moveMap.bind(keyboard, d, RPGClient_KeyMvRight);
|
||||||
|
moveMap.bind(keyboard, left, RPGClient_YawLeft);
|
||||||
|
moveMap.bind(keyboard, right, RPGClient_YawRight);
|
||||||
|
moveMap.bind(keyboard, equals, RPGClient_ZoomIn);
|
||||||
|
moveMap.bind(keyboard, minus, RPGClient_ZoomOut);
|
||||||
|
moveMap.bind(keyboard, "[", RPGClient_ZoomIn);
|
||||||
|
moveMap.bind(keyboard, "]", RPGClient_ZoomOut);
|
||||||
|
$RPGClient::MoveHijacked = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function RPGClient_EnsureOverlay()
|
||||||
|
{
|
||||||
|
if (!isObject(PlayGui))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!isObject(RPGClient_Mouse))
|
||||||
|
{
|
||||||
|
new GuiMouseEventCtrl(RPGClient_Mouse)
|
||||||
|
{
|
||||||
|
className = "RPGClient_Mouse";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
position = "0 0";
|
||||||
|
extent = "640 480";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "1";
|
||||||
|
enabled = "1";
|
||||||
|
modal = "0";
|
||||||
|
};
|
||||||
|
PlayGui.add(RPGClient_Mouse);
|
||||||
|
PlayGui.pushToBack(RPGClient_Mouse);
|
||||||
|
}
|
||||||
|
RPGClient_EnsureKeyMap();
|
||||||
|
RPGClient_HijackMoveMap();
|
||||||
|
$enableDirectInput = 1;
|
||||||
|
activateDirectInput();
|
||||||
$mvFreeLook = 0;
|
$mvFreeLook = 0;
|
||||||
$firstPerson = 0;
|
$firstPerson = 0;
|
||||||
if (isObject(Canvas) && !Canvas.isCursorOn())
|
if (isObject(Canvas) && !Canvas.isCursorOn())
|
||||||
@@ -347,6 +384,11 @@ function RPGClient_EnableOverlay()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function RPGClient_EnableOverlay()
|
||||||
|
{
|
||||||
|
RPGClient_EnsureOverlay();
|
||||||
|
}
|
||||||
|
|
||||||
function RPGClient_ToggleCursor(%val)
|
function RPGClient_ToggleCursor(%val)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active || !%val)
|
if (!$RPGClient::Active || !%val)
|
||||||
@@ -366,9 +408,10 @@ function RPGClient_DisableOverlay()
|
|||||||
$RPGClient::MvB = 0;
|
$RPGClient::MvB = 0;
|
||||||
$RPGClient::MvL = 0;
|
$RPGClient::MvL = 0;
|
||||||
$RPGClient::MvR = 0;
|
$RPGClient::MvR = 0;
|
||||||
if (isObject(RPGClient_KeyMap))
|
if ($RPGClient::KeyMapPushed && isObject(RPGClient_KeyMap))
|
||||||
{
|
{
|
||||||
RPGClient_KeyMap.pop();
|
RPGClient_KeyMap.pop();
|
||||||
|
$RPGClient::KeyMapPushed = 0;
|
||||||
}
|
}
|
||||||
if (isObject(RPGClient_Mouse))
|
if (isObject(RPGClient_Mouse))
|
||||||
{
|
{
|
||||||
@@ -377,6 +420,7 @@ function RPGClient_DisableOverlay()
|
|||||||
$RPGClient::Active = 0;
|
$RPGClient::Active = 0;
|
||||||
$RPGClient::OrbitInit = 0;
|
$RPGClient::OrbitInit = 0;
|
||||||
$RPGClient::HudPlaced = 0;
|
$RPGClient::HudPlaced = 0;
|
||||||
|
$RPGClient::MoveHijacked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_Hud_Place()
|
function RPGClient_Hud_Place()
|
||||||
@@ -467,42 +511,60 @@ function RPGClient_ScheduleCamera()
|
|||||||
|
|
||||||
function RPGClient_YawLeft(%val)
|
function RPGClient_YawLeft(%val)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active || %val == 0)
|
if (!$RPGClient::Active)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$RPGClient::Yaw = $RPGClient::Yaw - 0.06;
|
if (%val)
|
||||||
RPGClient_ApplyCamera(1);
|
{
|
||||||
|
$RPGClient::MvL = %val;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$RPGClient::MvL = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_YawRight(%val)
|
function RPGClient_YawRight(%val)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active || %val == 0)
|
if (!$RPGClient::Active)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$RPGClient::Yaw = $RPGClient::Yaw + 0.06;
|
if (%val)
|
||||||
RPGClient_ApplyCamera(1);
|
{
|
||||||
|
$RPGClient::MvR = %val;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$RPGClient::MvR = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_ZoomIn(%val)
|
function RPGClient_ZoomIn(%val)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active || %val == 0)
|
if (!$RPGClient::Active)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$RPGClient::Dist = getMax(6, $RPGClient::Dist - 0.6);
|
if (%val)
|
||||||
|
{
|
||||||
|
$RPGClient::Dist = getMax(6, $RPGClient::Dist - 0.8);
|
||||||
RPGClient_ApplyCamera(1);
|
RPGClient_ApplyCamera(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_ZoomOut(%val)
|
function RPGClient_ZoomOut(%val)
|
||||||
{
|
{
|
||||||
if (!$RPGClient::Active || %val == 0)
|
if (!$RPGClient::Active)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$RPGClient::Dist = getMin(32, $RPGClient::Dist + 0.6);
|
if (%val)
|
||||||
|
{
|
||||||
|
$RPGClient::Dist = getMin(32, $RPGClient::Dist + 0.8);
|
||||||
RPGClient_ApplyCamera(1);
|
RPGClient_ApplyCamera(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RPGClient_CanSendCmd()
|
function RPGClient_CanSendCmd()
|
||||||
@@ -605,9 +667,11 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist)
|
|||||||
$RPGClient::Dist = %dist > 0 ? %dist : 14;
|
$RPGClient::Dist = %dist > 0 ? %dist : 14;
|
||||||
$RPGClient::OrbitInit = 0;
|
$RPGClient::OrbitInit = 0;
|
||||||
$RPGClient::HudPlaced = 0;
|
$RPGClient::HudPlaced = 0;
|
||||||
RPGClient_EnableOverlay();
|
RPGClient_EnsureOverlay();
|
||||||
RPGClient_BindKeys();
|
RPGClient_BindKeys();
|
||||||
RPGClient_StartCameraTick();
|
RPGClient_StartCameraTick();
|
||||||
|
schedule(500, 0, RPGClient_EnsureOverlay);
|
||||||
|
schedule(1500, 0, RPGClient_EnsureOverlay);
|
||||||
RPGClient_ScheduleCamera();
|
RPGClient_ScheduleCamera();
|
||||||
RPGClient_EnsureCursor();
|
RPGClient_EnsureCursor();
|
||||||
RPGClient_Hud_Ensure();
|
RPGClient_Hud_Ensure();
|
||||||
@@ -792,6 +856,70 @@ package RPGClient_PageKeys
|
|||||||
};
|
};
|
||||||
activatePackage(RPGClient_PageKeys);
|
activatePackage(RPGClient_PageKeys);
|
||||||
|
|
||||||
|
package RPGClient_Input
|
||||||
|
{
|
||||||
|
function moveforward(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_KeyMvForward(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::moveforward(%val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function movebackward(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_KeyMvBackward(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::movebackward(%val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function moveleft(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_KeyMvLeft(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::moveleft(%val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function moveright(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_KeyMvRight(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::moveright(%val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function invLeft(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_YawLeft(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::invLeft(%val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function invRight(%val)
|
||||||
|
{
|
||||||
|
if ($RPGClient::Active)
|
||||||
|
{
|
||||||
|
RPGClient_YawRight(%val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Parent::invRight(%val);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
activatePackage(RPGClient_Input);
|
||||||
|
|
||||||
package RPGClient_MapStack
|
package RPGClient_MapStack
|
||||||
{
|
{
|
||||||
function noHudGui::onWake(%this)
|
function noHudGui::onWake(%this)
|
||||||
@@ -799,7 +927,7 @@ package RPGClient_MapStack
|
|||||||
Parent::onWake(%this);
|
Parent::onWake(%this);
|
||||||
if ($RPGClient::Active)
|
if ($RPGClient::Active)
|
||||||
{
|
{
|
||||||
schedule(0, 0, RPGClient_BumpKeyMap);
|
schedule(0, 0, RPGClient_EnsureOverlay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -825,7 +953,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);
|
schedule(0, 0, RPGClient_EnsureOverlay);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user