@@ -396,6 +396,20 @@ 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
+ m_LuaLockActor[player] = lock;
404
+ m_LuaLockActorMode[player] = lockToMode;
405
+ if (m_pBuyGUI[player]->IsVisible () || m_InventoryMenuGUI[player]->IsVisible ()) {
406
+ m_LuaLockActor[player] = false ;
407
+ return false ;
408
+ }
409
+ return true ;
410
+ }
411
+ }
412
+
399
413
// ////////////////////////////////////////////////////////////////////////////////////////
400
414
// Virtual method: SwitchToActor
401
415
// ////////////////////////////////////////////////////////////////////////////////////////
@@ -1424,7 +1438,7 @@ void GameActivity::Update()
1424
1438
m_ViewState[player] = ViewState::Normal;
1425
1439
}
1426
1440
// 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 ())
1441
+ else if (m_PlayerController[player].IsState (ACTOR_NEXT) && m_ViewState[player] != ViewState::ActorSelect && !m_pBuyGUI[player]->IsVisible () && !m_LuaLockActor[player] )
1428
1442
{
1429
1443
if (m_ControlledActor[player] && m_ControlledActor[player]->GetPieMenu ()) {
1430
1444
m_ControlledActor[player]->GetPieMenu ()->SetEnabled (false );
@@ -1444,7 +1458,7 @@ void GameActivity::Update()
1444
1458
g_FrameMan.ClearScreenText (ScreenOfPlayer (player));
1445
1459
}
1446
1460
// 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)))
1461
+ 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
1462
{
1449
1463
if (m_ActorSelectTimer[player].IsPastRealMS (250 ))
1450
1464
{
@@ -2015,6 +2029,8 @@ void GameActivity::Update()
2015
2029
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_AI);
2016
2030
} else if (m_InventoryMenuGUI[player]->IsEnabledAndNotCarousel ()) {
2017
2031
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_DISABLED);
2032
+ } else if (m_LuaLockActor[player]) {
2033
+ m_ControlledActor[player]->GetController ()->SetInputMode (m_LuaLockActorMode[player]);
2018
2034
} else {
2019
2035
m_ControlledActor[player]->GetController ()->SetInputMode (Controller::CIM_PLAYER);
2020
2036
}
0 commit comments