@@ -396,6 +396,18 @@ bool GameActivity::IsBuyGUIVisible(int which) const {
396
396
397
397
}
398
398
399
+ // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
400
+
401
+ bool GameActivity::LockControlledActor (Players player, bool lock, Controller::InputMode lockToMode) {
402
+ if (player >= Players::PlayerOne && player < Players::MaxPlayerCount) {
403
+ bool prevLock = m_LuaLockActor[player];
404
+ m_LuaLockActor[player] = lock;
405
+ m_LuaLockActorMode[player] = lockToMode;
406
+ return true ;
407
+ }
408
+ return false ;
409
+ }
410
+
399
411
// ////////////////////////////////////////////////////////////////////////////////////////
400
412
// Virtual method: SwitchToActor
401
413
// ////////////////////////////////////////////////////////////////////////////////////////
@@ -1424,7 +1436,7 @@ void GameActivity::Update()
1424
1436
m_ViewState[player] = ViewState::Normal;
1425
1437
}
1426
1438
// Switch to next actor if the player wants to. Don't do it while the buy menu is open
1427
- else if (m_PlayerController[player].IsState (ACTOR_NEXT) && m_ViewState[player] != ViewState::ActorSelect && !m_pBuyGUI[player]->IsVisible ())
1439
+ else if (m_PlayerController[player].IsState (ACTOR_NEXT) && m_ViewState[player] != ViewState::ActorSelect && !m_pBuyGUI[player]->IsVisible () && !m_LuaLockActor[player] )
1428
1440
{
1429
1441
if (m_ControlledActor[player] && m_ControlledActor[player]->GetPieMenu ()) {
1430
1442
m_ControlledActor[player]->GetPieMenu ()->SetEnabled (false );
@@ -1444,7 +1456,7 @@ void GameActivity::Update()
1444
1456
g_FrameMan.ClearScreenText (ScreenOfPlayer (player));
1445
1457
}
1446
1458
// Go into manual actor select mode if either actor switch buttons are held for a duration
1447
- else if (m_ViewState[player] != ViewState::ActorSelect && !m_pBuyGUI[player]->IsVisible () && (m_PlayerController[player].IsState (ACTOR_NEXT_PREP) || m_PlayerController[player].IsState (ACTOR_PREV_PREP)))
1459
+ else if (m_ViewState[player] != ViewState::ActorSelect && !m_pBuyGUI[player]->IsVisible () && !m_LuaLockActor[player] && (m_PlayerController[player].IsState (ACTOR_NEXT_PREP) || m_PlayerController[player].IsState (ACTOR_PREV_PREP)))
1448
1460
{
1449
1461
if (m_ActorSelectTimer[player].IsPastRealMS (250 ))
1450
1462
{
@@ -1967,7 +1979,7 @@ void GameActivity::Update()
1967
1979
}
1968
1980
1969
1981
// Trap the mouse if we're in gameplay and not in menus
1970
- g_UInputMan.TrapMousePos (!m_pBuyGUI[player]->IsEnabled () && !m_InventoryMenuGUI[player]->IsEnabledAndNotCarousel (), player);
1982
+ g_UInputMan.TrapMousePos (!m_pBuyGUI[player]->IsEnabled () && !m_InventoryMenuGUI[player]->IsEnabledAndNotCarousel () && !m_LuaLockActor[player] , player);
1971
1983
1972
1984
// Start LZ picking mode if a purchase was made
1973
1985
if (m_pBuyGUI[player]->PurchaseMade ())
@@ -2015,6 +2027,8 @@ void GameActivity::Update()
2015
2027
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_AI);
2016
2028
} else if (m_InventoryMenuGUI[player]->IsEnabledAndNotCarousel ()) {
2017
2029
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_DISABLED);
2030
+ } else if (m_LuaLockActor[player]) {
2031
+ m_ControlledActor[player]->GetController ()->SetInputMode (m_LuaLockActorMode[player]);
2018
2032
} else {
2019
2033
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_PLAYER);
2020
2034
}
0 commit comments