fix Pop message doesn't get sent if more than 1 prompt screen on the stack
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
#include "ScreenMiniMenu.h"
|
#include "ScreenMiniMenu.h"
|
||||||
#include "ScreenManager.h"
|
#include "ScreenManager.h"
|
||||||
#include "PlayerState.h"
|
#include "PlayerState.h"
|
||||||
|
#include "ScreenPlayerOptions.h" // for SM_BackFromPlayerOptions
|
||||||
|
#include "ScreenSongOptions.h" // for SM_BackFromSongOptions
|
||||||
|
|
||||||
//
|
//
|
||||||
// Defines specific to EditCoursesMenu
|
// Defines specific to EditCoursesMenu
|
||||||
@@ -33,8 +35,6 @@
|
|||||||
#define ROW_Y( i ) THEME->GetMetricF("EditCoursesMenu",ssprintf("Row%dY",i+1))
|
#define ROW_Y( i ) THEME->GetMetricF("EditCoursesMenu",ssprintf("Row%dY",i+1))
|
||||||
|
|
||||||
const ScreenMessage SM_BackFromCourseOptionsMenu = (ScreenMessage)(SM_User+1);
|
const ScreenMessage SM_BackFromCourseOptionsMenu = (ScreenMessage)(SM_User+1);
|
||||||
const ScreenMessage SM_BackFromPlayerOptions = (ScreenMessage)(SM_User+3);
|
|
||||||
const ScreenMessage SM_BackFromSongOptions = (ScreenMessage)(SM_User+4);
|
|
||||||
|
|
||||||
enum CourseEntryMenuRow
|
enum CourseEntryMenuRow
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -160,14 +160,14 @@ void Screen::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
break;
|
break;
|
||||||
case SM_GoToNextScreen:
|
case SM_GoToNextScreen:
|
||||||
if( SCREENMAN->IsStackedScreen(this) )
|
if( SCREENMAN->IsStackedScreen(this) )
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_None );
|
||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
break;
|
break;
|
||||||
case SM_GoToPrevScreen:
|
case SM_GoToPrevScreen:
|
||||||
SCREENMAN->DeletePreparedScreens();
|
SCREENMAN->DeletePreparedScreens();
|
||||||
if( SCREENMAN->IsStackedScreen(this) )
|
if( SCREENMAN->IsStackedScreen(this) )
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_None );
|
||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( PREV_SCREEN );
|
SCREENMAN->SetNewScreen( PREV_SCREEN );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
#include "ScreenPrompt.h"
|
#include "ScreenPrompt.h"
|
||||||
#include "CommonMetrics.h"
|
#include "CommonMetrics.h"
|
||||||
|
#include "ScreenPlayerOptions.h" // for SM_BackFromPlayerOptions
|
||||||
|
#include "ScreenSongOptions.h" // for SM_BackFromSongOptions
|
||||||
|
|
||||||
//
|
//
|
||||||
// Defines specific to ScreenEdit
|
// Defines specific to ScreenEdit
|
||||||
@@ -51,8 +53,6 @@ const ScreenMessage SM_BackFromStepsInformation = (ScreenMessage)(SM_User+3);
|
|||||||
const ScreenMessage SM_BackFromEditOptions = (ScreenMessage)(SM_User+4);
|
const ScreenMessage SM_BackFromEditOptions = (ScreenMessage)(SM_User+4);
|
||||||
const ScreenMessage SM_BackFromSongInformation = (ScreenMessage)(SM_User+5);
|
const ScreenMessage SM_BackFromSongInformation = (ScreenMessage)(SM_User+5);
|
||||||
const ScreenMessage SM_BackFromBGChange = (ScreenMessage)(SM_User+6);
|
const ScreenMessage SM_BackFromBGChange = (ScreenMessage)(SM_User+6);
|
||||||
const ScreenMessage SM_BackFromPlayerOptions = (ScreenMessage)(SM_User+7);
|
|
||||||
const ScreenMessage SM_BackFromSongOptions = (ScreenMessage)(SM_User+8);
|
|
||||||
const ScreenMessage SM_BackFromInsertAttack = (ScreenMessage)(SM_User+9);
|
const ScreenMessage SM_BackFromInsertAttack = (ScreenMessage)(SM_User+9);
|
||||||
const ScreenMessage SM_BackFromInsertAttackModifiers= (ScreenMessage)(SM_User+10);
|
const ScreenMessage SM_BackFromInsertAttackModifiers= (ScreenMessage)(SM_User+10);
|
||||||
const ScreenMessage SM_BackFromPrefs = (ScreenMessage)(SM_User+11);
|
const ScreenMessage SM_BackFromPrefs = (ScreenMessage)(SM_User+11);
|
||||||
@@ -1520,7 +1520,9 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
int iDurationChoice = ScreenMiniMenu::s_viLastAnswers[0];
|
int iDurationChoice = ScreenMiniMenu::s_viLastAnswers[0];
|
||||||
g_fLastInsertAttackDurationSeconds = strtof( g_InsertAttack.rows[0].choices[iDurationChoice], NULL );
|
g_fLastInsertAttackDurationSeconds = strtof( g_InsertAttack.rows[0].choices[iDurationChoice], NULL );
|
||||||
GAMESTATE->StoreSelectedOptions(); // save so that we don't lose the options chosen for edit and playback
|
GAMESTATE->StoreSelectedOptions(); // save so that we don't lose the options chosen for edit and playback
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromInsertAttackModifiers );
|
|
||||||
|
// XXX: Fix me
|
||||||
|
//SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromInsertAttackModifiers );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_BackFromInsertAttackModifiers:
|
case SM_BackFromInsertAttackModifiers:
|
||||||
@@ -1755,7 +1757,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
|||||||
case save_on_exit: s = "ScreenMemcardSaveEditsAfterExit"; break;
|
case save_on_exit: s = "ScreenMemcardSaveEditsAfterExit"; break;
|
||||||
default: ASSERT(0);
|
default: ASSERT(0);
|
||||||
}
|
}
|
||||||
SCREENMAN->AddNewScreenToTop( s, SM_None );
|
SCREENMAN->AddNewScreenToTop( s );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1785,10 +1787,10 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
|||||||
PROMPT_YES_NO, ANSWER_NO );
|
PROMPT_YES_NO, ANSWER_NO );
|
||||||
break;
|
break;
|
||||||
case player_options:
|
case player_options:
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromPlayerOptions );
|
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions" );
|
||||||
break;
|
break;
|
||||||
case song_options:
|
case song_options:
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenSongOptions", SM_BackFromSongOptions );
|
SCREENMAN->AddNewScreenToTop( "ScreenSongOptions" );
|
||||||
break;
|
break;
|
||||||
case edit_song_info:
|
case edit_song_info:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ void ScreenEditMenu::MenuStart( PlayerNumber pn )
|
|||||||
ASSERT( pSteps );
|
ASSERT( pSteps );
|
||||||
if( HOME_EDIT_MODE )
|
if( HOME_EDIT_MODE )
|
||||||
{
|
{
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenEditMenuDeleteSteps", SM_None );
|
SCREENMAN->AddNewScreenToTop( "ScreenEditMenuDeleteSteps" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ ScreenManager::ScreenManager()
|
|||||||
{
|
{
|
||||||
m_pSharedBGA = new Actor;
|
m_pSharedBGA = new Actor;
|
||||||
|
|
||||||
m_MessageSendOnPop = SM_None;
|
|
||||||
|
|
||||||
m_bZeroNextUpdate = false;
|
m_bZeroNextUpdate = false;
|
||||||
|
|
||||||
/* By the time this is constructed, THEME has already been set up and set to
|
/* By the time this is constructed, THEME has already been set up and set to
|
||||||
@@ -463,7 +461,7 @@ retry:
|
|||||||
SetFromNewScreen( pNewScreen, false );
|
SetFromNewScreen( pNewScreen, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenManager::AddNewScreenToTop( const CString &sScreenName, ScreenMessage messageSendOnPop )
|
void ScreenManager::AddNewScreenToTop( const CString &sScreenName )
|
||||||
{
|
{
|
||||||
m_bZeroNextUpdate = true;
|
m_bZeroNextUpdate = true;
|
||||||
|
|
||||||
@@ -474,29 +472,26 @@ void ScreenManager::AddNewScreenToTop( const CString &sScreenName, ScreenMessage
|
|||||||
|
|
||||||
Screen* pNewScreen = MakeNewScreen(sScreenName);
|
Screen* pNewScreen = MakeNewScreen(sScreenName);
|
||||||
SetFromNewScreen( pNewScreen, true );
|
SetFromNewScreen( pNewScreen, true );
|
||||||
m_MessageSendOnPop = messageSendOnPop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "ScreenPrompt.h"
|
#include "ScreenPrompt.h"
|
||||||
#include "ScreenTextEntry.h"
|
#include "ScreenTextEntry.h"
|
||||||
#include "ScreenMiniMenu.h"
|
#include "ScreenMiniMenu.h"
|
||||||
|
|
||||||
void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
|
void ScreenManager::Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
|
||||||
{
|
{
|
||||||
if( m_ScreenStack.size() )
|
if( m_ScreenStack.size() )
|
||||||
m_ScreenStack.back()->HandleScreenMessage( SM_LoseFocus );
|
m_ScreenStack.back()->HandleScreenMessage( SM_LoseFocus );
|
||||||
|
|
||||||
// add the new state onto the back of the array
|
// add the new state onto the back of the array
|
||||||
Screen *pNewScreen = new ScreenPrompt( sText, type, defaultAnswer, OnYes, OnNo, pCallbackData);
|
Screen *pNewScreen = new ScreenPrompt( smSendOnPop, sText, type, defaultAnswer, OnYes, OnNo, pCallbackData);
|
||||||
pNewScreen->Init();
|
pNewScreen->Init();
|
||||||
this->ZeroNextUpdate();
|
this->ZeroNextUpdate();
|
||||||
SetFromNewScreen( pNewScreen, true );
|
SetFromNewScreen( pNewScreen, true );
|
||||||
|
|
||||||
m_MessageSendOnPop = SM_SendWhenDone;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenManager::TextEntry(
|
void ScreenManager::TextEntry(
|
||||||
ScreenMessage SM_SendWhenDone,
|
ScreenMessage smSendOnPop,
|
||||||
CString sQuestion,
|
CString sQuestion,
|
||||||
CString sInitialAnswer,
|
CString sInitialAnswer,
|
||||||
int iMaxInputLength,
|
int iMaxInputLength,
|
||||||
@@ -512,6 +507,7 @@ void ScreenManager::TextEntry(
|
|||||||
// add the new state onto the back of the array
|
// add the new state onto the back of the array
|
||||||
Screen *pNewScreen = new ScreenTextEntry(
|
Screen *pNewScreen = new ScreenTextEntry(
|
||||||
"ScreenTextEntry",
|
"ScreenTextEntry",
|
||||||
|
smSendOnPop,
|
||||||
sQuestion,
|
sQuestion,
|
||||||
sInitialAnswer,
|
sInitialAnswer,
|
||||||
iMaxInputLength,
|
iMaxInputLength,
|
||||||
@@ -522,8 +518,6 @@ void ScreenManager::TextEntry(
|
|||||||
pNewScreen->Init();
|
pNewScreen->Init();
|
||||||
this->ZeroNextUpdate();
|
this->ZeroNextUpdate();
|
||||||
SetFromNewScreen( pNewScreen, true );
|
SetFromNewScreen( pNewScreen, true );
|
||||||
|
|
||||||
m_MessageSendOnPop = SM_SendWhenDone;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenManager::MiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel )
|
void ScreenManager::MiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel )
|
||||||
@@ -549,14 +543,9 @@ void ScreenManager::PopTopScreen( ScreenMessage SM )
|
|||||||
|
|
||||||
/* Post to the new top. This must be done now; otherwise, we'll have a single
|
/* Post to the new top. This must be done now; otherwise, we'll have a single
|
||||||
* frame between popping and these messages, which can result in a frame where eg.
|
* frame between popping and these messages, which can result in a frame where eg.
|
||||||
* input is accepted where it shouldn't be. Watch out; sending m_MessageSendOnPop
|
* input is accepted where it shouldn't be. */
|
||||||
* might push another screen (eg. editor menu -> PlayerOptions), which will set
|
|
||||||
* a new m_MessageSendOnPop. */
|
|
||||||
ScreenMessage MessageToSend = m_MessageSendOnPop;
|
|
||||||
m_MessageSendOnPop = SM_None;
|
|
||||||
SendMessageToTopScreen( SM );
|
SendMessageToTopScreen( SM );
|
||||||
SendMessageToTopScreen( SM_GainFocus );
|
SendMessageToTopScreen( SM_GainFocus );
|
||||||
SendMessageToTopScreen( MessageToSend );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenManager::PostMessageToTopScreen( ScreenMessage SM, float fDelay )
|
void ScreenManager::PostMessageToTopScreen( ScreenMessage SM, float fDelay )
|
||||||
|
|||||||
@@ -55,10 +55,10 @@ public:
|
|||||||
void DeletePreparedScreens();
|
void DeletePreparedScreens();
|
||||||
|
|
||||||
void SetNewScreen( const CString &sName );
|
void SetNewScreen( const CString &sName );
|
||||||
void AddNewScreenToTop( const CString &sName, ScreenMessage messageSendOnPop );
|
void AddNewScreenToTop( const CString &sName );
|
||||||
void Prompt( ScreenMessage SM_SendWhenDone, const CString &sText, PromptType type = PROMPT_OK, PromptAnswer defaultAnswer = ANSWER_NO, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
|
void Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type = PROMPT_OK, PromptAnswer defaultAnswer = ANSWER_NO, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
|
||||||
void TextEntry(
|
void TextEntry(
|
||||||
ScreenMessage SM_SendWhenDone,
|
ScreenMessage smSendOnPop,
|
||||||
CString sQuestion,
|
CString sQuestion,
|
||||||
CString sInitialAnswer,
|
CString sInitialAnswer,
|
||||||
int iMaxInputLength,
|
int iMaxInputLength,
|
||||||
@@ -67,12 +67,12 @@ public:
|
|||||||
void(*OnCanel)() = NULL,
|
void(*OnCanel)() = NULL,
|
||||||
bool bPassword = false
|
bool bPassword = false
|
||||||
);
|
);
|
||||||
void Password( ScreenMessage SM_SendWhenDone, const CString &sQuestion, void(*OnOK)(CString sPassword) = NULL, void(*OnCanel)() = NULL )
|
void Password( ScreenMessage smSendOnPop, const CString &sQuestion, void(*OnOK)(CString sPassword) = NULL, void(*OnCanel)() = NULL )
|
||||||
{
|
{
|
||||||
TextEntry( SM_SendWhenDone, sQuestion, "", 255, NULL, OnOK, OnCanel, true );
|
TextEntry( smSendOnPop, sQuestion, "", 255, NULL, OnOK, OnCanel, true );
|
||||||
}
|
}
|
||||||
void MiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel = SM_None );
|
void MiniMenu( Menu* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None );
|
||||||
void PopTopScreen( ScreenMessage SM = SM_None );
|
void PopTopScreen( ScreenMessage SM );
|
||||||
void SystemMessage( const CString &sMessage );
|
void SystemMessage( const CString &sMessage );
|
||||||
void SystemMessageNoAnimate( const CString &sMessage );
|
void SystemMessageNoAnimate( const CString &sMessage );
|
||||||
|
|
||||||
@@ -108,7 +108,6 @@ private:
|
|||||||
CString m_sLastLoadedBackgroundPath;
|
CString m_sLastLoadedBackgroundPath;
|
||||||
CString m_sDelayedScreen;
|
CString m_sDelayedScreen;
|
||||||
CString m_sSystemMessage;
|
CString m_sSystemMessage;
|
||||||
ScreenMessage m_MessageSendOnPop;
|
|
||||||
vector<Screen*> m_vPreparedScreens;
|
vector<Screen*> m_vPreparedScreens;
|
||||||
vector<Screen*> m_vScreensToDelete;
|
vector<Screen*> m_vScreensToDelete;
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
#include "MusicWheel.h"
|
#include "MusicWheel.h"
|
||||||
#include "InputMapper.h"
|
#include "InputMapper.h"
|
||||||
#include "RageLog.h"
|
#include "RageLog.h"
|
||||||
|
#include "ScreenPlayerOptions.h" // for SM_BackFromPlayerOptions
|
||||||
|
|
||||||
const ScreenMessage SM_NoSongs = ScreenMessage(SM_User+3);
|
const ScreenMessage SM_NoSongs = ScreenMessage(SM_User+3);
|
||||||
const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5);
|
const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5);
|
||||||
const ScreenMessage SM_BackFromOpts = ScreenMessage(SM_User+6);
|
|
||||||
const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known
|
const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known
|
||||||
const ScreenMessage SM_SetWheelSong = ScreenMessage(SM_User+19);
|
const ScreenMessage SM_SetWheelSong = ScreenMessage(SM_User+19);
|
||||||
const ScreenMessage SM_RefreshWheelLocation = ScreenMessage(SM_User+20);
|
const ScreenMessage SM_RefreshWheelLocation = ScreenMessage(SM_User+20);
|
||||||
@@ -257,7 +257,7 @@ void ScreenNetSelectMusic::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
m_MusicWheel.Select();
|
m_MusicWheel.Select();
|
||||||
m_bAllowInput = true;
|
m_bAllowInput = true;
|
||||||
break;
|
break;
|
||||||
case SM_BackFromOpts:
|
case SM_BackFromPlayerOptions:
|
||||||
//XXX: HACK: This will causes ScreenSelectOptions to go back here.
|
//XXX: HACK: This will causes ScreenSelectOptions to go back here.
|
||||||
NSMAN->ReportNSSOnOff(1);
|
NSMAN->ReportNSSOnOff(1);
|
||||||
GAMESTATE->m_bEditing = false;
|
GAMESTATE->m_bEditing = false;
|
||||||
@@ -328,7 +328,7 @@ void ScreenNetSelectMusic::MenuUp( PlayerNumber pn, const InputEventType type )
|
|||||||
{
|
{
|
||||||
NSMAN->ReportNSSOnOff(3);
|
NSMAN->ReportNSSOnOff(3);
|
||||||
GAMESTATE->m_bEditing = true;
|
GAMESTATE->m_bEditing = true;
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromOpts );
|
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenNetSelectMusic::MenuDown( PlayerNumber pn, const InputEventType type )
|
void ScreenNetSelectMusic::MenuDown( PlayerNumber pn, const InputEventType type )
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ void ScreenOptionsMaster::BeginFadingOut()
|
|||||||
void ScreenOptionsMaster::GoToNextScreen()
|
void ScreenOptionsMaster::GoToNextScreen()
|
||||||
{
|
{
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_None );
|
||||||
else if( m_sExportedNextScreen != "" )
|
else if( m_sExportedNextScreen != "" )
|
||||||
SCREENMAN->SetNewScreen( m_sExportedNextScreen );
|
SCREENMAN->SetNewScreen( m_sExportedNextScreen );
|
||||||
else if( NEXT_SCREEN != "" )
|
else if( NEXT_SCREEN != "" )
|
||||||
@@ -157,7 +157,7 @@ void ScreenOptionsMaster::GoToPrevScreen()
|
|||||||
/* XXX: A better way to handle this would be to check if we're a pushed screen. */
|
/* XXX: A better way to handle this would be to check if we're a pushed screen. */
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
{
|
{
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_None );
|
||||||
// XXX: handle different destinations based on play mode?
|
// XXX: handle different destinations based on play mode?
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ void ScreenPlayerOptions::GoToPrevScreen()
|
|||||||
{
|
{
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
{
|
{
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_BackFromPlayerOptions );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -91,7 +91,9 @@ void ScreenPlayerOptions::GoToPrevScreen()
|
|||||||
void ScreenPlayerOptions::GoToNextScreen()
|
void ScreenPlayerOptions::GoToNextScreen()
|
||||||
{
|
{
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
SCREENMAN->PopTopScreen();
|
{
|
||||||
|
SCREENMAN->PopTopScreen( SM_BackFromPlayerOptions );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GAMESTATE->AdjustFailType();
|
GAMESTATE->AdjustFailType();
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include "ScreenOptionsMaster.h"
|
#include "ScreenOptionsMaster.h"
|
||||||
|
|
||||||
|
const ScreenMessage SM_BackFromPlayerOptions = (ScreenMessage)(SM_User+3);
|
||||||
|
|
||||||
class ScreenPlayerOptions : public ScreenOptionsMaster
|
class ScreenPlayerOptions : public ScreenOptionsMaster
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ bool ScreenPrompt::s_bCancelledLast = false;
|
|||||||
|
|
||||||
//REGISTER_SCREEN_CLASS( ScreenPrompt );
|
//REGISTER_SCREEN_CLASS( ScreenPrompt );
|
||||||
ScreenPrompt::ScreenPrompt(
|
ScreenPrompt::ScreenPrompt(
|
||||||
|
ScreenMessage smSendOnPop,
|
||||||
CString sText,
|
CString sText,
|
||||||
PromptType type,
|
PromptType type,
|
||||||
PromptAnswer defaultAnswer,
|
PromptAnswer defaultAnswer,
|
||||||
@@ -28,13 +29,14 @@ ScreenPrompt::ScreenPrompt(
|
|||||||
{
|
{
|
||||||
m_bIsTransparent = true; // draw screens below us
|
m_bIsTransparent = true; // draw screens below us
|
||||||
|
|
||||||
|
m_smSendOnPop = smSendOnPop;
|
||||||
|
m_sText = sText;
|
||||||
m_PromptType = type;
|
m_PromptType = type;
|
||||||
m_Answer = defaultAnswer;
|
m_Answer = defaultAnswer;
|
||||||
CLAMP( (int&)m_Answer, 0, m_PromptType );
|
CLAMP( (int&)m_Answer, 0, m_PromptType );
|
||||||
m_pOnYes = OnYes;
|
m_pOnYes = OnYes;
|
||||||
m_pOnNo = OnNo;
|
m_pOnNo = OnNo;
|
||||||
m_pCallbackData = pCallbackData;
|
m_pCallbackData = pCallbackData;
|
||||||
m_sText = sText;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenPrompt::Init()
|
void ScreenPrompt::Init()
|
||||||
@@ -128,7 +130,7 @@ void ScreenPrompt::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
case SM_DoneOpeningWipingLeft:
|
case SM_DoneOpeningWipingLeft:
|
||||||
break;
|
break;
|
||||||
case SM_DoneOpeningWipingRight:
|
case SM_DoneOpeningWipingRight:
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( m_smSendOnPop );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public:
|
|||||||
ScreenPrompt( CString sName );
|
ScreenPrompt( CString sName );
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
ScreenPrompt(
|
ScreenPrompt(
|
||||||
|
ScreenMessage smSendOnPop,
|
||||||
CString sText,
|
CString sText,
|
||||||
PromptType type = PROMPT_OK,
|
PromptType type = PROMPT_OK,
|
||||||
PromptAnswer defaultAnswer = ANSWER_NO,
|
PromptAnswer defaultAnswer = ANSWER_NO,
|
||||||
@@ -67,7 +68,7 @@ protected:
|
|||||||
BitmapText m_textAnswer[NUM_PROMPT_ANSWERS];
|
BitmapText m_textAnswer[NUM_PROMPT_ANSWERS];
|
||||||
PromptType m_PromptType;
|
PromptType m_PromptType;
|
||||||
PromptAnswer m_Answer;
|
PromptAnswer m_Answer;
|
||||||
ScreenMessage m_SMSendWhenDone; // don't send on ANSWER_CANCEL
|
ScreenMessage m_smSendOnPop; // don't send on ANSWER_CANCEL
|
||||||
void(*m_pOnYes)(void*);
|
void(*m_pOnYes)(void*);
|
||||||
void(*m_pOnNo)(void*);
|
void(*m_pOnNo)(void*);
|
||||||
void* m_pCallbackData;
|
void* m_pCallbackData;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ void ScreenSongOptions::GoToPrevScreen()
|
|||||||
{
|
{
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
{
|
{
|
||||||
SCREENMAN->PopTopScreen( SM_None );
|
SCREENMAN->PopTopScreen( SM_BackFromSongOptions );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -52,7 +52,7 @@ void ScreenSongOptions::GoToPrevScreen()
|
|||||||
void ScreenSongOptions::GoToNextScreen()
|
void ScreenSongOptions::GoToNextScreen()
|
||||||
{
|
{
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_BackFromSongOptions );
|
||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include "ScreenOptionsMaster.h"
|
#include "ScreenOptionsMaster.h"
|
||||||
|
|
||||||
|
const ScreenMessage SM_BackFromSongOptions = (ScreenMessage)(SM_User+4);
|
||||||
|
|
||||||
class ScreenSongOptions : public ScreenOptionsMaster
|
class ScreenSongOptions : public ScreenOptionsMaster
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ void ScreenSplash::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
break;
|
break;
|
||||||
case SM_GoToNextScreen:
|
case SM_GoToNextScreen:
|
||||||
if( SCREENMAN->IsStackedScreen(SCREENMAN->GetTopScreen()) )
|
if( SCREENMAN->IsStackedScreen(SCREENMAN->GetTopScreen()) )
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( SM_None );
|
||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ bool ScreenTextEntry::s_bCancelledLast = false;
|
|||||||
|
|
||||||
ScreenTextEntry::ScreenTextEntry(
|
ScreenTextEntry::ScreenTextEntry(
|
||||||
CString sClassName,
|
CString sClassName,
|
||||||
|
ScreenMessage smSendOnPop,
|
||||||
CString sQuestion,
|
CString sQuestion,
|
||||||
CString sInitialAnswer,
|
CString sInitialAnswer,
|
||||||
int iMaxInputLength,
|
int iMaxInputLength,
|
||||||
@@ -59,6 +60,7 @@ ScreenTextEntry::ScreenTextEntry(
|
|||||||
{
|
{
|
||||||
m_bIsTransparent = true; // draw screens below us
|
m_bIsTransparent = true; // draw screens below us
|
||||||
|
|
||||||
|
m_smSendOnPop = smSendOnPop;
|
||||||
m_sQuestion = sQuestion;
|
m_sQuestion = sQuestion;
|
||||||
m_sAnswer = CStringToWstring( sInitialAnswer );
|
m_sAnswer = CStringToWstring( sInitialAnswer );
|
||||||
m_iMaxInputLength = iMaxInputLength;
|
m_iMaxInputLength = iMaxInputLength;
|
||||||
@@ -200,7 +202,7 @@ void ScreenTextEntry::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
case SM_DoneOpeningWipingLeft:
|
case SM_DoneOpeningWipingLeft:
|
||||||
break;
|
break;
|
||||||
case SM_DoneOpeningWipingRight:
|
case SM_DoneOpeningWipingRight:
|
||||||
SCREENMAN->PopTopScreen();
|
SCREENMAN->PopTopScreen( m_smSendOnPop );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ class ScreenTextEntry : public Screen
|
|||||||
public:
|
public:
|
||||||
ScreenTextEntry(
|
ScreenTextEntry(
|
||||||
CString sName,
|
CString sName,
|
||||||
|
ScreenMessage smSendOnPop,
|
||||||
CString sQuestion,
|
CString sQuestion,
|
||||||
CString sInitialAnswer,
|
CString sInitialAnswer,
|
||||||
int iMaxInputLength,
|
int iMaxInputLength,
|
||||||
@@ -66,6 +67,7 @@ protected:
|
|||||||
void UpdateKeyboardText();
|
void UpdateKeyboardText();
|
||||||
void UpdateAnswerText();
|
void UpdateAnswerText();
|
||||||
|
|
||||||
|
ScreenMessage m_smSendOnPop;
|
||||||
CString m_sQuestion;
|
CString m_sQuestion;
|
||||||
int m_iMaxInputLength;
|
int m_iMaxInputLength;
|
||||||
bool m_bPassword;
|
bool m_bPassword;
|
||||||
|
|||||||
Reference in New Issue
Block a user