@@ -1684,8 +1684,7 @@ void GameActivity::Update()
1684
1684
1685
1685
else if (m_ViewState[player] == ViewState::LandingZoneSelect)
1686
1686
{
1687
- // Continuously display LZ message
1688
- g_FrameMan.SetScreenText (" Choose your landing zone..." , ScreenOfPlayer (player));
1687
+ g_FrameMan.SetScreenText (" Choose your landing zone... Hold UP or DOWN to place multiple orders" , ScreenOfPlayer (player));
1689
1688
1690
1689
// Save the x pos so we can see which direction the user is moving it
1691
1690
float prevLZX = m_LandingZone[player].m_X ;
@@ -1731,24 +1730,15 @@ void GameActivity::Update()
1731
1730
}
1732
1731
1733
1732
// Interface for the craft AI post-delivery mode
1734
- if (m_PlayerController[player].IsState (PRESS_DOWN))// || m_PlayerController[player].IsState(PRESS_SECONDARY))
1735
- {
1736
- if (m_AIReturnCraft[player])
1737
- g_GUISound.SelectionChangeSound ()->Play (player);
1738
- else
1739
- g_GUISound.UserErrorSound ()->Play (player);
1733
+ if (m_PlayerController[player].IsState (PRESS_DOWN)) {
1734
+ if (m_AIReturnCraft[player]) { g_GUISound.SelectionChangeSound ()->Play (player); }
1740
1735
1741
- m_AIReturnCraft[player] = false ;
1742
- }
1743
- else if (m_PlayerController[player].IsState (PRESS_UP))// || m_PlayerController[player].IsState(PRESS_SECONDARY))
1744
- {
1745
- if (!m_AIReturnCraft[player])
1746
- g_GUISound.SelectionChangeSound ()->Play (player);
1747
- else
1748
- g_GUISound.UserErrorSound ()->Play (player);
1736
+ m_AIReturnCraft[player] = false ;
1737
+ } else if (m_PlayerController[player].IsState (PRESS_UP)) {
1738
+ if (!m_AIReturnCraft[player]) { g_GUISound.SelectionChangeSound ()->Play (player); }
1749
1739
1750
- m_AIReturnCraft[player] = true ;
1751
- }
1740
+ m_AIReturnCraft[player] = true ;
1741
+ }
1752
1742
1753
1743
// Player canceled the order while selecting LZ - can't be done in pregame
1754
1744
if (m_PlayerController[player].IsState (PRESS_SECONDARY) && m_ActivityState != ActivityState::PreGame)
@@ -1761,29 +1751,29 @@ void GameActivity::Update()
1761
1751
g_GUISound.UserErrorSound ()->Play (player);
1762
1752
// Flash the same actor, jsut to show the control went back to him
1763
1753
m_pPieMenu[player]->DoDisableAnimation ();
1764
- }
1765
- // Player is done selecting LZ,
1766
- else if (m_PlayerController[player]. IsState (PRESS_FACEBUTTON) || m_PlayerController[player]. IsState (PRESS_PRIMARY))
1767
- {
1768
- // Set the LZ cursor to be just over terran, to avoid getting stuck at halfway interpolating there
1769
- m_LandingZone[player].m_Y = 0 ;
1770
- m_LandingZone[player]. m_Y = g_SceneMan. FindAltitude (m_LandingZone[player], g_SceneMan. GetSceneHeight (), 10 );
1771
- // Complete the purchase by getting the order from the BuyGUI, build it, and stuff it into a delivery
1772
- CreateDelivery (player) ;
1773
- // If there are no other Actors on this team, just view the LZ we have selected
1774
- if (!g_MovableMan. GetNextTeamActor (team))
1775
- {
1776
- m_ObservationTarget[ player] = m_LandingZone[player] ;
1777
- m_ViewState [player] = ViewState::Observe ;
1778
- }
1779
- // If there are other guys around, switch back to normal view
1780
- else
1781
- m_ViewState[player] = ViewState::Normal;
1782
- // Stop displaying the LZ message
1783
- g_FrameMan. ClearScreenText ( ScreenOfPlayer ( player) );
1784
- // Flash the same actor, jsut to show the control went back to him
1785
- m_pPieMenu [player]-> DoDisableAnimation () ;
1786
- }
1754
+ } else if (m_PlayerController[player]. IsState (PRESS_FACEBUTTON) || m_PlayerController[player]. IsState (PRESS_PRIMARY)) {
1755
+ m_LandingZone[player]. m_Y = 0 ;
1756
+ float lzOffsetY = 0 ;
1757
+ // Holding up or down will allow the player to make multiple orders without exiting the delivery phase. TODO: this should probably have a cooldown?
1758
+ if (!m_PlayerController[player]. IsState (MOVE_UP) && !m_PlayerController[player]. IsState (MOVE_DOWN)) {
1759
+ m_LandingZone[player].m_Y = g_SceneMan. FindAltitude (m_LandingZone[player], g_SceneMan. GetSceneHeight (), 10 ) ;
1760
+ if (!g_MovableMan. GetNextTeamActor (team)) {
1761
+ m_ObservationTarget[player] = m_LandingZone[player];
1762
+ m_ViewState[player] = ViewState::Observe ;
1763
+ } else {
1764
+ m_ViewState[player] = ViewState::Normal;
1765
+ }
1766
+ g_FrameMan. ClearScreenText ( ScreenOfPlayer ( player)) ;
1767
+ m_pPieMenu [player]-> DoDisableAnimation () ;
1768
+ } else {
1769
+ // Place the new marker above the cursor so that they don't intersect with each other.
1770
+ lzOffsetY += m_AIReturnCraft[player] ? - 32 . 0F : 32 . 0F ;
1771
+ }
1772
+ m_LandingZone[player]. m_Y = g_SceneMan. FindAltitude (m_LandingZone[player], g_SceneMan. GetSceneHeight (), 10 ) + lzOffsetY;
1773
+ CreateDelivery ( player);
1774
+ // Revert the Y offset so that the cursor doesn't flinch.
1775
+ m_LandingZone [player]. m_Y -= lzOffsetY ;
1776
+ }
1787
1777
1788
1778
bool wrapped = g_SceneMan.ForceBounds (m_LandingZone[player]);
1789
1779
0 commit comments