ScreenPrompt cleanup
This commit is contained in:
@@ -1 +1 @@
|
|||||||
_option icon 3x2
|
_blank
|
||||||
@@ -4400,7 +4400,7 @@ Fallback=ScreenMiniMenu
|
|||||||
Fallback=Screen
|
Fallback=Screen
|
||||||
QuestionX=SCREEN_CENTER_X
|
QuestionX=SCREEN_CENTER_X
|
||||||
QuestionY=SCREEN_CENTER_Y-150
|
QuestionY=SCREEN_CENTER_Y-150
|
||||||
QuestionOnCommand=
|
QuestionOnCommand=wrapwidthpixels,600
|
||||||
QuestionOffCommand=
|
QuestionOffCommand=
|
||||||
AnswerBoxX=SCREEN_CENTER_X
|
AnswerBoxX=SCREEN_CENTER_X
|
||||||
AnswerBoxY=SCREEN_CENTER_Y-100
|
AnswerBoxY=SCREEN_CENTER_Y-100
|
||||||
@@ -4412,3 +4412,42 @@ AnswerOnCommand=
|
|||||||
AnswerOffCommand=
|
AnswerOffCommand=
|
||||||
CursorOnCommand=
|
CursorOnCommand=
|
||||||
CursorOffCommand=
|
CursorOffCommand=
|
||||||
|
|
||||||
|
[ScreenPrompt]
|
||||||
|
Fallback=Screen
|
||||||
|
QuestionX=SCREEN_CENTER_X
|
||||||
|
QuestionY=SCREEN_CENTER_Y-60
|
||||||
|
QuestionOnCommand=zoom,0.7;wrapwidthpixels,600
|
||||||
|
QuestionOffCommand=
|
||||||
|
CursorOnCommand=
|
||||||
|
CursorOffCommand=
|
||||||
|
Answer1Of1X=SCREEN_CENTER_X
|
||||||
|
Answer1Of1Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer1Of1OnCommand=
|
||||||
|
Answer1Of1OffCommand=
|
||||||
|
Answer1Of1Text=OK
|
||||||
|
Answer1Of2X=SCREEN_CENTER_X-50
|
||||||
|
Answer1Of2Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer1Of2OnCommand=
|
||||||
|
Answer1Of2OffCommand=
|
||||||
|
Answer1Of2Text=YES
|
||||||
|
Answer2Of2X=SCREEN_CENTER_X+50
|
||||||
|
Answer2Of2Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer2Of2OnCommand=
|
||||||
|
Answer2Of2OffCommand=
|
||||||
|
Answer2Of2Text=NO
|
||||||
|
Answer1Of3X=SCREEN_CENTER_X-170
|
||||||
|
Answer1Of3Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer1Of3OnCommand=
|
||||||
|
Answer1Of3OffCommand=
|
||||||
|
Answer1Of3Text=YES
|
||||||
|
Answer2Of3X=SCREEN_CENTER_X-20
|
||||||
|
Answer2Of3Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer2Of3OnCommand=
|
||||||
|
Answer2Of3OffCommand=
|
||||||
|
Answer2Of3Text=NO
|
||||||
|
Answer3Of3X=SCREEN_CENTER_X+150
|
||||||
|
Answer3Of3Y=SCREEN_CENTER_Y+120
|
||||||
|
Answer3Of3OnCommand=
|
||||||
|
Answer3Of3OffCommand=
|
||||||
|
Answer3Of3Text=CANCEL
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ static bool ValidateCurrentStepsDescription( CString s, CString &sErrorOut )
|
|||||||
{
|
{
|
||||||
if( !GAMESTATE->m_pCurSong->IsEditDescriptionUnique(GAMESTATE->m_pCurSteps[0]->m_StepsType, s, GAMESTATE->m_pCurSteps[0]) )
|
if( !GAMESTATE->m_pCurSong->IsEditDescriptionUnique(GAMESTATE->m_pCurSteps[0]->m_StepsType, s, GAMESTATE->m_pCurSteps[0]) )
|
||||||
{
|
{
|
||||||
sErrorOut = "The supplied name supplied conflicts with another edit. Please use a different name.";
|
sErrorOut = "The supplied name supplied conflicts with another edit.\n\nPlease use a different name.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,12 @@
|
|||||||
#include "Style.h"
|
#include "Style.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "ScreenDimensions.h"
|
#include "ScreenDimensions.h"
|
||||||
|
#include "ActorUtil.h"
|
||||||
#define QUESTION_X (SCREEN_CENTER_X)
|
|
||||||
#define QUESTION_Y (SCREEN_CENTER_Y - 60)
|
|
||||||
|
|
||||||
#define PROMPT_X (SCREEN_CENTER_X)
|
|
||||||
#define PROMPT_Y (SCREEN_CENTER_Y + 120)
|
|
||||||
|
|
||||||
PromptAnswer ScreenPrompt::s_LastAnswer = ANSWER_YES;
|
PromptAnswer ScreenPrompt::s_LastAnswer = ANSWER_YES;
|
||||||
|
bool ScreenPrompt::s_bCancelledLast = false;
|
||||||
|
|
||||||
|
#define ANSWER_TEXT( elem ) THEME->GetMetric(m_sName,elem+"Text")
|
||||||
|
|
||||||
//REGISTER_SCREEN_CLASS( ScreenPrompt );
|
//REGISTER_SCREEN_CLASS( ScreenPrompt );
|
||||||
ScreenPrompt::ScreenPrompt(
|
ScreenPrompt::ScreenPrompt(
|
||||||
@@ -32,6 +30,7 @@ ScreenPrompt::ScreenPrompt(
|
|||||||
|
|
||||||
m_PromptType = type;
|
m_PromptType = type;
|
||||||
m_Answer = defaultAnswer;
|
m_Answer = defaultAnswer;
|
||||||
|
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;
|
||||||
@@ -42,61 +41,44 @@ void ScreenPrompt::Init()
|
|||||||
{
|
{
|
||||||
Screen::Init();
|
Screen::Init();
|
||||||
|
|
||||||
m_Background.LoadFromAniDir( THEME->GetPathB("ScreenPrompt","background") );
|
m_Background.LoadFromAniDir( THEME->GetPathB(m_sName,"background") );
|
||||||
m_Background.PlayCommand("On");
|
m_Background.PlayCommand("On");
|
||||||
this->AddChild( &m_Background );
|
this->AddChild( &m_Background );
|
||||||
|
|
||||||
m_textQuestion.LoadFromFont( THEME->GetPathF("ScreenPrompt","question") );
|
m_textQuestion.LoadFromFont( THEME->GetPathF(m_sName,"question") );
|
||||||
|
m_textQuestion.SetName( "Question" );
|
||||||
m_textQuestion.SetText( m_sText );
|
m_textQuestion.SetText( m_sText );
|
||||||
m_textQuestion.SetXY( QUESTION_X, QUESTION_Y );
|
SET_XY_AND_ON_COMMAND( m_textQuestion );
|
||||||
this->AddChild( &m_textQuestion );
|
this->AddChild( &m_textQuestion );
|
||||||
|
|
||||||
m_rectAnswerBox.SetDiffuse( RageColor(0.5f,0.5f,1.0f,0.7f) );
|
m_sprCursor.Load( THEME->GetPathG(m_sName,"cursor") );
|
||||||
this->AddChild( &m_rectAnswerBox );
|
m_sprCursor->SetName( "Cursor" );
|
||||||
|
ON_COMMAND( m_sprCursor );
|
||||||
|
this->AddChild( m_sprCursor );
|
||||||
|
|
||||||
for( int i=0; i<NUM_PROMPT_ANSWERS; i++ )
|
for( int i=0; i<=m_PromptType; i++ )
|
||||||
{
|
{
|
||||||
m_textAnswer[i].LoadFromFont( THEME->GetPathF("ScreenPrompt","answer") );
|
m_textAnswer[i].LoadFromFont( THEME->GetPathF(m_sName,"answer") );
|
||||||
m_textAnswer[i].SetY( PROMPT_Y );
|
CString sElem = ssprintf("Answer%dOf%d", i+1, m_PromptType+1);
|
||||||
|
m_textAnswer[i].SetName( sElem );
|
||||||
|
m_textAnswer[i].SetText( ANSWER_TEXT(sElem) );
|
||||||
this->AddChild( &m_textAnswer[i] );
|
this->AddChild( &m_textAnswer[i] );
|
||||||
|
SET_XY_AND_ON_COMMAND( m_textAnswer[i] );
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( m_PromptType )
|
PositionCursor();
|
||||||
{
|
|
||||||
case PROMPT_OK:
|
|
||||||
m_textAnswer[ANSWER_YES]. SetText( "OK" );
|
|
||||||
m_textAnswer[ANSWER_YES]. SetX( PROMPT_X );
|
|
||||||
break;
|
|
||||||
case PROMPT_YES_NO:
|
|
||||||
m_textAnswer[ANSWER_YES]. SetText( "YES" );
|
|
||||||
m_textAnswer[ANSWER_NO]. SetText( "NO" );
|
|
||||||
m_textAnswer[ANSWER_YES]. SetX( PROMPT_X-50 );
|
|
||||||
m_textAnswer[ANSWER_NO]. SetX( PROMPT_X+50 );
|
|
||||||
break;
|
|
||||||
case PROMPT_YES_NO_CANCEL:
|
|
||||||
m_textAnswer[ANSWER_YES]. SetText( "YES" );
|
|
||||||
m_textAnswer[ANSWER_NO]. SetText( "NO" );
|
|
||||||
m_textAnswer[ANSWER_CANCEL].SetText( "CANCEL" );
|
|
||||||
m_textAnswer[ANSWER_YES]. SetX( PROMPT_X-120 );
|
|
||||||
m_textAnswer[ANSWER_NO]. SetX( PROMPT_X-20 );
|
|
||||||
m_textAnswer[ANSWER_CANCEL].SetX( PROMPT_X+150 );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_rectAnswerBox.SetXY( m_textAnswer[m_Answer].GetX(), m_textAnswer[m_Answer].GetY() );
|
m_In.Load( THEME->GetPathB(m_sName,"in") );
|
||||||
m_rectAnswerBox.SetZoomX( m_textAnswer[m_Answer].GetUnzoomedWidth()+10.0f );
|
|
||||||
m_rectAnswerBox.SetZoomY( 30 );
|
|
||||||
|
|
||||||
m_textAnswer[m_Answer].SetEffectGlowShift();
|
|
||||||
|
|
||||||
m_In.Load( THEME->GetPathB("ScreenPrompt","in") );
|
|
||||||
m_In.StartTransitioning();
|
m_In.StartTransitioning();
|
||||||
this->AddChild( &m_In );
|
this->AddChild( &m_In );
|
||||||
|
|
||||||
m_Out.Load( THEME->GetPathB("ScreenPrompt","out") );
|
m_Out.Load( THEME->GetPathB(m_sName,"out") );
|
||||||
this->AddChild( &m_Out );
|
this->AddChild( &m_Out );
|
||||||
|
|
||||||
m_sndChange.Load( THEME->GetPathS("ScreenPrompt","change"), true );
|
m_Cancel.Load( THEME->GetPathB(m_sName,"cancel") );
|
||||||
|
this->AddChild( &m_Cancel );
|
||||||
|
|
||||||
|
m_sndChange.Load( THEME->GetPathS(m_sName,"change"), true );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenPrompt::Update( float fDeltaTime )
|
void ScreenPrompt::Update( float fDeltaTime )
|
||||||
@@ -156,12 +138,8 @@ void ScreenPrompt::Change( int dir )
|
|||||||
m_textAnswer[m_Answer].SetEffectNone();
|
m_textAnswer[m_Answer].SetEffectNone();
|
||||||
m_Answer = (PromptAnswer)(m_Answer+dir);
|
m_Answer = (PromptAnswer)(m_Answer+dir);
|
||||||
ASSERT( m_Answer >= 0 && m_Answer < NUM_PROMPT_ANSWERS );
|
ASSERT( m_Answer >= 0 && m_Answer < NUM_PROMPT_ANSWERS );
|
||||||
m_textAnswer[m_Answer].SetEffectGlowShift();
|
|
||||||
|
|
||||||
m_rectAnswerBox.StopTweening();
|
PositionCursor();
|
||||||
m_rectAnswerBox.BeginTweening( 0.2f );
|
|
||||||
m_rectAnswerBox.SetXY( m_textAnswer[m_Answer].GetX(), m_textAnswer[m_Answer].GetY() );
|
|
||||||
m_rectAnswerBox.SetZoomX( m_textAnswer[m_Answer].GetUnzoomedWidth()+10.0f );
|
|
||||||
|
|
||||||
m_sndChange.Play();
|
m_sndChange.Play();
|
||||||
}
|
}
|
||||||
@@ -180,23 +158,39 @@ void ScreenPrompt::MenuRight( PlayerNumber pn )
|
|||||||
|
|
||||||
void ScreenPrompt::MenuStart( PlayerNumber pn )
|
void ScreenPrompt::MenuStart( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
m_Out.StartTransitioning( SM_DoneOpeningWipingRight );
|
End( false );
|
||||||
|
|
||||||
m_textQuestion.BeginTweening( 0.2f );
|
|
||||||
m_textQuestion.SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
|
|
||||||
m_rectAnswerBox.BeginTweening( 0.2f );
|
|
||||||
m_rectAnswerBox.SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
|
|
||||||
m_textAnswer[m_Answer].SetEffectNone();
|
|
||||||
|
|
||||||
for( int i=0; i<NUM_PROMPT_ANSWERS; i++ )
|
|
||||||
{
|
|
||||||
m_textAnswer[i].BeginTweening( 0.2f );
|
|
||||||
m_textAnswer[i].SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScreenPrompt::MenuBack( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
switch( m_PromptType )
|
||||||
|
{
|
||||||
|
case PROMPT_OK:
|
||||||
|
case PROMPT_YES_NO:
|
||||||
|
// don't allow cancel
|
||||||
|
break;
|
||||||
|
case PROMPT_YES_NO_CANCEL:
|
||||||
|
End( true );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenPrompt::End( bool bCancelled )
|
||||||
|
{
|
||||||
|
if( bCancelled )
|
||||||
|
{
|
||||||
|
m_Cancel.StartTransitioning( SM_DoneOpeningWipingRight );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
SCREENMAN->PlayStartSound();
|
SCREENMAN->PlayStartSound();
|
||||||
|
m_Out.StartTransitioning( SM_DoneOpeningWipingRight );
|
||||||
|
}
|
||||||
|
|
||||||
|
OFF_COMMAND( m_textQuestion );
|
||||||
|
OFF_COMMAND( m_sprCursor );
|
||||||
|
for( int i=0; i<=m_PromptType; i++ )
|
||||||
|
OFF_COMMAND( m_textAnswer[i] );
|
||||||
|
|
||||||
switch( m_Answer )
|
switch( m_Answer )
|
||||||
{
|
{
|
||||||
@@ -210,14 +204,17 @@ void ScreenPrompt::MenuStart( PlayerNumber pn )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
s_LastAnswer = m_Answer;
|
s_LastAnswer = bCancelled ? ANSWER_CANCEL : m_Answer;
|
||||||
|
s_bCancelledLast = bCancelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenPrompt::MenuBack( PlayerNumber pn )
|
void ScreenPrompt::PositionCursor()
|
||||||
{
|
{
|
||||||
|
BitmapText &bt = m_textAnswer[m_Answer];
|
||||||
|
m_sprCursor->SetXY( bt.GetX(), bt.GetY() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2001-2004 Chris Danford
|
* (c) 2001-2004 Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public:
|
|||||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
static PromptAnswer s_LastAnswer;
|
static PromptAnswer s_LastAnswer;
|
||||||
|
static bool s_bCancelledLast;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool CanGoLeft() { return m_Answer > 0; }
|
bool CanGoLeft() { return m_Answer > 0; }
|
||||||
@@ -56,10 +57,13 @@ protected:
|
|||||||
void MenuBack( PlayerNumber pn );
|
void MenuBack( PlayerNumber pn );
|
||||||
void MenuStart( PlayerNumber pn );
|
void MenuStart( PlayerNumber pn );
|
||||||
|
|
||||||
|
void End( bool bCancelled );
|
||||||
|
void PositionCursor();
|
||||||
|
|
||||||
CString m_sText;
|
CString m_sText;
|
||||||
BGAnimation m_Background;
|
BGAnimation m_Background;
|
||||||
BitmapText m_textQuestion;
|
BitmapText m_textQuestion;
|
||||||
Quad m_rectAnswerBox;
|
AutoActor m_sprCursor;
|
||||||
BitmapText m_textAnswer[NUM_PROMPT_ANSWERS];
|
BitmapText m_textAnswer[NUM_PROMPT_ANSWERS];
|
||||||
PromptType m_PromptType;
|
PromptType m_PromptType;
|
||||||
PromptAnswer m_Answer;
|
PromptAnswer m_Answer;
|
||||||
@@ -67,8 +71,10 @@ protected:
|
|||||||
void(*m_pOnYes)(void*);
|
void(*m_pOnYes)(void*);
|
||||||
void(*m_pOnNo)(void*);
|
void(*m_pOnNo)(void*);
|
||||||
void* m_pCallbackData;
|
void* m_pCallbackData;
|
||||||
|
|
||||||
Transition m_In;
|
Transition m_In;
|
||||||
Transition m_Out;
|
Transition m_Out;
|
||||||
|
Transition m_Cancel;
|
||||||
|
|
||||||
RageSound m_sndChange;
|
RageSound m_sndChange;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user