ScreenType is being overloaded in incompatible ways:

- the editor sets "system_menu" to trick StepMania.cpp into not
   allowing the operator menu button, to prevent losing data;
 - the editor also sets "gameplay" in "playback" mode to influence
   ScreenSyncOverlay and ScreenDebugOverlay; this breaks the above,
   allowing scroll lock in play mode.

A similar problem happens when we push screens: scroll lock works
in the MiniMenus in the editor.

It's semantically unintuitive to call the editor a "system_menu", anyway.

Split out AllowOperatorMenuButton, and use it directly.  Check all
screens, and don't allow it if any screen on the stack disallows it.
This commit is contained in:
Glenn Maynard
2006-02-01 06:54:15 +00:00
parent d9c81c92cf
commit 7df95cd0d4
5 changed files with 15 additions and 2 deletions
+11
View File
@@ -283,6 +283,17 @@ Screen *ScreenManager::GetTopScreen()
return g_ScreenStack[g_ScreenStack.size()-1].m_pScreen;
}
bool ScreenManager::AllowOperatorMenuButton() const
{
FOREACH( LoadedScreen, g_ScreenStack, s )
{
if( !s->m_pScreen->AllowOperatorMenuButton() )
return false;
}
return true;
}
bool ScreenManager::IsStackedScreen( const Screen *pScreen ) const
{
/* True if the screen is in the screen stack, but not the first. */