diff --git a/sc2/src/sc2code/controls.h b/sc2/src/sc2code/controls.h index 33568c715..81f8ec97c 100644 --- a/sc2/src/sc2code/controls.h +++ b/sc2/src/sc2code/controls.h @@ -64,6 +64,7 @@ void ResetKeyRepeat (void); BOOLEAN PauseGame (void); BOOLEAN DoConfirmExit (void); void TFB_Abort (void); +BOOLEAN WaitAnyButtonOrQuit (BOOLEAN CheckSpecial); BATTLE_INPUT_STATE p1_combat_summary (void); BATTLE_INPUT_STATE p2_combat_summary (void); diff --git a/sc2/src/sc2code/utils.c b/sc2/src/sc2code/utils.c index f0f1705c6..72a32af65 100644 --- a/sc2/src/sc2code/utils.c +++ b/sc2/src/sc2code/utils.c @@ -214,3 +214,18 @@ PauseGame (void) GLOBAL (CurrentActivity) &= ~CHECK_PAUSE; return (TRUE); } + +// Waits for a new button to be pressed +// and returns TRUE if Quit was selected +BOOLEAN +WaitAnyButtonOrQuit (BOOLEAN CheckSpecial) +{ + while (AnyButtonPress (TRUE)) + TaskSwitch (); + + while (!AnyButtonPress (TRUE) && + !(GLOBAL (CurrentActivity) & CHECK_ABORT)) + TaskSwitch (); + + return (GLOBAL (CurrentActivity) & CHECK_ABORT) != 0; +}