more work on editor

This commit is contained in:
Chris Danford
2003-02-19 05:46:09 +00:00
parent 0c36bcdbbf
commit e6273f1db3
10 changed files with 224 additions and 204 deletions
+153 -168
View File
@@ -86,17 +86,31 @@ const ScreenMessage SM_BackFromEditSongInfo = (ScreenMessage)(SM_User+5);
const CString HELP_TEXT =
"Up/Down:\n change beat\n"
"Left/Right:\n change snap\n"
"PgUp/PgDn:\n jump measure\n"
"Home/End:\n jump to first/\n last beat\n"
"Number keys:\n add/remove\n tap note\n"
"Create hold note:\n Hold a number\n while moving\n Up or Down\n"
"F7/F8:\n Dec/inc BPM\n at cur beat\n"
"F9/F10:\n Dec/inc stop\n at cur beat\n"
"F11/F12:\n Dec/inc music\n offset\n"
"[ and ]:\n Dec/inc sample\n music start\n"
"{ and }:\n Dec/inc sample\n music length\n";
"Space bar:\n Set area\n marker\n"
"Enter:\n Area Menu\n"
"Escape:\n Main Menu\n"
"F1:\n Show\n keyboard\n shortcuts\n";
MiniMenuDefinition g_KeyboardShortcuts =
{
"Keyboard Shortcuts",
9,
{
{ "PgUp/PgDn: jump measure", false, 1, 0, {""} },
{ "Home/End: jump to first/last beat", false, 1, 0, {""} },
{ "Ctrl + Up/Down: Change zoom", false, 1, 0, {""} },
{ "Shift + Up/Down: Drag area marker", false, 1, 0, {""} },
{ "F7/F8: Decrease/increase BPM at cur beat", false, 1, 0, {""} },
{ "F9/F10: Decrease/increase stop at cur beat", false, 1, 0, {""} },
{ "F11/F12: Decrease/increase music offset", false, 1, 0, {""} },
{ "[ and ]: Decrease/increase sample music start", false, 1, 0, {""} },
{ "{ and }: Decrease/increase sample music length", false, 1, 0, {""} },
}
};
MiniMenuDefinition g_MainMenu =
{
"Main Menu",
@@ -105,7 +119,6 @@ MiniMenuDefinition g_MainMenu =
{ "Edit Notes Statistics", true, 1, 0, {""} },
{ "Play Whole Song", true, 1, 0, {""} },
{ "Save", true, 1, 0, {""} },
{ "Editor Options", true, 1, 0, {""} },
{ "Player Options", true, 1, 0, {""} },
{ "Song Options", true, 1, 0, {""} },
{ "Edit Song Info", true, 1, 0, {""} },
@@ -155,17 +168,6 @@ MiniMenuDefinition g_EditNotesStatistics =
};
MiniMenuDefinition g_EditOptions =
{
"Edit Options",
ScreenEdit::NUM_EDIT_OPTIONS_CHOICES,
{
{ "Zoom", true, 3, 0, {"1X","2X","4X"} },
{ "Max Notes Per Row", true, 4, 0, {"NO LIMIT","2","3","4"} },
{ "After Note Add", true, 2, 0, {"STAY","NEXT LINE"} },
}
};
MiniMenuDefinition g_EditSongInfo =
{
"Edit Song Info",
@@ -490,12 +492,11 @@ void ScreenEdit::Update( float fDeltaTime )
CString sText;
sText += ssprintf( "Current Beat:\n %.2f\n", GAMESTATE->m_fSongBeat );
sText += ssprintf( "Snap to:\n %s\n", sNoteType.GetString() );
sText += ssprintf( "Selection begin:\n %.2f\n", m_NoteFieldEdit.m_fBeginMarker );
sText += ssprintf( "Selection end:\n %.2f\n", m_NoteFieldEdit.m_fEndMarker );
sText += ssprintf( "Selection begin:\n %s\n", m_NoteFieldEdit.m_fBeginMarker==-1 ? "not set" : ssprintf("%.2f",m_NoteFieldEdit.m_fBeginMarker).GetString() );
sText += ssprintf( "Selection end:\n %s\n", m_NoteFieldEdit.m_fEndMarker==-1 ? "not set" : ssprintf("%.2f",m_NoteFieldEdit.m_fEndMarker).GetString() );
sText += ssprintf( "Difficulty:\n %s\n", DifficultyToString( m_pNotes->GetDifficulty() ).GetString() );
sText += ssprintf( "Description:\n %s\n", GAMESTATE->m_pCurNotes[PLAYER_1] ? GAMESTATE->m_pCurNotes[PLAYER_1]->GetDescription().GetString() : "no description" );
sText += ssprintf( "Main title:\n %s\n", m_pSong->m_sMainTitle.GetString() );
sText += ssprintf( "Sub title:\n %s\n", m_pSong->m_sSubTitle.GetString() );
sText += ssprintf( "Tap Notes:\n %d\n", iNumTapNotes );
sText += ssprintf( "Hold Notes:\n %d\n", iNumHoldNotes );
sText += ssprintf( "Beat 0 Offset:\n %.2f secs\n", m_pSong->m_fBeat0OffsetInSeconds );
@@ -554,71 +555,6 @@ void ScreenEdit::Input( const DeviceInput& DeviceI, const InputEventType type, c
}
}
// Begin helper functions for InputEdit
void AddBGChange( CString sBGName )
{
Song* pSong = GAMESTATE->m_pCurSong;
unsigned i;
for( i=0; i<pSong->m_BackgroundChanges.size(); i++ )
{
if( pSong->m_BackgroundChanges[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
break;
}
if( i != pSong->m_BackgroundChanges.size() ) // there is already a BGChange here
pSong->m_BackgroundChanges.erase( pSong->m_BackgroundChanges.begin()+i,
pSong->m_BackgroundChanges.begin()+i+1);
// create a new BGChange
if( sBGName != "" )
pSong->AddBackgroundChange( BackgroundChange(GAMESTATE->m_fSongBeat, sBGName) );
}
void ChangeDescription( CString sNew )
{
Notes* pNotes = GAMESTATE->m_pCurNotes[PLAYER_1];
pNotes->SetDescription(sNew);
}
void ChangeMainTitle( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sMainTitle = sNew;
}
void ChangeSubTitle( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sSubTitle = sNew;
}
void ChangeArtist( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sArtist = sNew;
}
void ChangeMainTitleTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sMainTitleTranslit = sNew;
}
void ChangeSubTitleTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sSubTitleTranslit = sNew;
}
void ChangeArtistTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sArtistTranslit = sNew;
}
// End helper functions for InputEdit
void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
{
if( DeviceI.device != DEVICE_KEYBOARD )
@@ -799,11 +735,11 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
GAMESTATE->m_fSongBeat = m_NoteFieldEdit.GetLastBeat();
m_soundChangeLine.Play();
break;
case SDLK_RIGHT:
case SDLK_LEFT:
m_SnapDisplay.PrevSnapMode();
OnSnapModeChange();
break;
case SDLK_LEFT:
case SDLK_RIGHT:
m_SnapDisplay.NextSnapMode();
OnSnapModeChange();
break;
@@ -855,9 +791,8 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
g_AreaMenu.lines[clear].bEnabled = bAreaSelected;
g_AreaMenu.lines[quantize].bEnabled = bAreaSelected;
g_AreaMenu.lines[transform].bEnabled = bAreaSelected;
g_AreaMenu.lines[play].bEnabled = bAreaSelected;
g_AreaMenu.lines[record].bEnabled = bAreaSelected;
g_AreaMenu.lines[insert_and_shift].bEnabled = !bAreaSelected;
g_AreaMenu.lines[delete_and_shift].bEnabled = !bAreaSelected;
SCREENMAN->MiniMenu( &g_AreaMenu, SM_BackFromAreaMenu );
}
break;
@@ -865,38 +800,8 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
SCREENMAN->MiniMenu( &g_MainMenu, SM_BackFromMainMenu );
break;
case SDLK_d:
{
Difficulty dc = Difficulty( (m_pNotes->GetDifficulty()+1)%NUM_DIFFICULTIES );
m_pNotes->SetDifficulty(dc);
}
break;
case SDLK_e:
SCREENMAN->TextEntry( SM_None, "Edit notes description.\nPress Enter to confirm,\nEscape to cancel.", m_pNotes->GetDescription(), ChangeDescription, NULL );
break;
case SDLK_b:
{
CString sOldBackground;
unsigned i;
for( i=0; i<m_pSong->m_BackgroundChanges.size(); i++ )
{
if( m_pSong->m_BackgroundChanges[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
break;
}
if( i != m_pSong->m_BackgroundChanges.size() ) // there is already a BGChange here
sOldBackground = m_pSong->m_BackgroundChanges[i].m_sBGName;
SCREENMAN->TextEntry( SM_None, "Type a background name.\nPress Enter to keep,\nEscape to cancel.\nEnter an empty string to remove\nthe Background Change.", sOldBackground, AddBGChange, NULL );
}
break;
case SDLK_i:
if( GAMESTATE->m_SongOptions.m_AssistType==SongOptions::ASSIST_TICK )
GAMESTATE->m_SongOptions.m_AssistType = SongOptions::ASSIST_NONE;
else
GAMESTATE->m_SongOptions.m_AssistType = SongOptions::ASSIST_TICK;
case SDLK_F1:
SCREENMAN->MiniMenu( &g_KeyboardShortcuts, SM_None );
break;
case SDLK_F7:
@@ -1156,12 +1061,14 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
case SM_BackFromEditNotesStatistics:
HandleEditNotesStatisticsChoice( (EditNotesStatisticsChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
break;
case SM_BackFromEditOptions:
HandleEditOptionsChoice( (EditOptionsChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
break;
case SM_BackFromEditSongInfo:
HandleEditSongInfoChoice( (EditSongInfoChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
break;
case SM_RegainingFocus:
// coming back from PlayerOptions or SongOptions
m_fDestinationScrollSpeed = GAMESTATE->m_PlayerOptions[PLAYER_1].m_fScrollSpeed;
m_soundMusic.SetPlaybackRate( GAMESTATE->m_SongOptions.m_fMusicRate );
break;
}
}
@@ -1176,6 +1083,78 @@ void ScreenEdit::OnSnapModeChange()
GAMESTATE->m_fSongBeat -= NoteRowToBeat( iStepIndexHangover );
}
// Helper function for below
// Begin helper functions for InputEdit
void AddBGChange( CString sBGName )
{
Song* pSong = GAMESTATE->m_pCurSong;
unsigned i;
for( i=0; i<pSong->m_BackgroundChanges.size(); i++ )
{
if( pSong->m_BackgroundChanges[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
break;
}
if( i != pSong->m_BackgroundChanges.size() ) // there is already a BGChange here
pSong->m_BackgroundChanges.erase( pSong->m_BackgroundChanges.begin()+i,
pSong->m_BackgroundChanges.begin()+i+1);
// create a new BGChange
if( sBGName != "" )
pSong->AddBackgroundChange( BackgroundChange(GAMESTATE->m_fSongBeat, sBGName) );
}
void ChangeDescription( CString sNew )
{
Notes* pNotes = GAMESTATE->m_pCurNotes[PLAYER_1];
pNotes->SetDescription(sNew);
}
void ChangeMainTitle( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sMainTitle = sNew;
}
void ChangeSubTitle( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sSubTitle = sNew;
}
void ChangeArtist( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sArtist = sNew;
}
void ChangeMainTitleTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sMainTitleTranslit = sNew;
}
void ChangeSubTitleTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sSubTitleTranslit = sNew;
}
void ChangeArtistTranslit( CString sNew )
{
Song* pSong = GAMESTATE->m_pCurSong;
pSong->m_sArtistTranslit = sNew;
}
// End helper functions
void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
{
switch( c )
@@ -1186,7 +1165,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
float fMusicSeconds = m_soundMusic.GetLengthSeconds();
g_EditNotesStatistics.lines[difficulty].iDefaultOption = pNotes->GetDifficulty();
g_EditNotesStatistics.lines[meter].iDefaultOption = pNotes->GetMeter()+1;
g_EditNotesStatistics.lines[meter].iDefaultOption = pNotes->GetMeter()-1;
strcpy( g_EditNotesStatistics.lines[description].szOptionsText[0], pNotes->GetDescription() );
strcpy( g_EditNotesStatistics.lines[tap_notes].szOptionsText[0], ssprintf("%d", m_NoteFieldEdit.GetNumTapNotes()) );
strcpy( g_EditNotesStatistics.lines[hold_notes].szOptionsText[0], ssprintf("%d", m_NoteFieldEdit.GetNumHoldNotes()) );
@@ -1199,6 +1178,11 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
}
break;
case play_whole_song:
{
m_NoteFieldEdit.m_fBeginMarker = 0;
m_NoteFieldEdit.m_fEndMarker = m_NoteFieldEdit.GetLastBeat();
HandleAreaMenuChoice( play, NULL );
}
break;
case save:
{
@@ -1213,21 +1197,43 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","edit save") );
}
break;
case editor_options:
SCREENMAN->MiniMenu( &g_EditOptions, SM_BackFromEditOptions );
break;
case player_options:
SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions" );
break;
case song_options:
SCREENMAN->AddNewScreenToTop( "ScreenSongOptions" );
break;
case edit_song_info:
SCREENMAN->MiniMenu( &g_EditSongInfo, SM_BackFromEditSongInfo );
{
Song* pSong = GAMESTATE->m_pCurSong;
strcpy( g_EditSongInfo.lines[main_title].szOptionsText[0], pSong->m_sMainTitle );
strcpy( g_EditSongInfo.lines[sub_title].szOptionsText[0], pSong->m_sSubTitle );
strcpy( g_EditSongInfo.lines[artist].szOptionsText[0], pSong->m_sArtist );
strcpy( g_EditSongInfo.lines[main_title_transliteration].szOptionsText[0], pSong->m_sMainTitleTranslit );
strcpy( g_EditSongInfo.lines[sub_title_transliteration].szOptionsText[0], pSong->m_sSubTitleTranslit );
strcpy( g_EditSongInfo.lines[artist_transliteration].szOptionsText[0], pSong->m_sArtistTranslit );
SCREENMAN->MiniMenu( &g_EditSongInfo, SM_BackFromEditSongInfo );
}
break;
case edit_bpm:
break;
case edit_stop:
break;
case edit_bg_change:
{
CString sOldBackground;
unsigned i;
for( i=0; i<m_pSong->m_BackgroundChanges.size(); i++ )
{
if( m_pSong->m_BackgroundChanges[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
break;
}
if( i != m_pSong->m_BackgroundChanges.size() ) // there is already a BGChange here
sOldBackground = m_pSong->m_BackgroundChanges[i].m_sBGName;
SCREENMAN->TextEntry( SM_None, "Type a background name.\nPress Enter to keep,\nEscape to cancel.\nEnter an empty string to remove\nthe Background Change.", sOldBackground, AddBGChange, NULL );
}
break;
case play_preview_music:
SOUNDMAN->PlayMusic("");
@@ -1386,64 +1392,43 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
void ScreenEdit::HandleEditNotesStatisticsChoice( EditNotesStatisticsChoice c, int* iAnswers )
{
Notes* pNotes = GAMESTATE->m_pCurNotes[PLAYER_1];
Difficulty dc = (Difficulty)iAnswers[difficulty];
pNotes->SetDifficulty( dc );
int iMeter = iAnswers[meter]+1;
pNotes->SetMeter( iMeter );
switch( c )
{
case difficulty:
break;
case meter:
break;
case description:
SCREENMAN->TextEntry( SM_None, "Edit notes description.\nPress Enter to confirm,\nEscape to cancel.", m_pNotes->GetDescription(), ChangeDescription, NULL );
break;
case tap_notes:
break;
case hold_notes:
break;
case stream:
break;
case voltage:
break;
case air:
break;
case freeze:
break;
case chaos:
break;
default:
ASSERT(0);
};
}
void ScreenEdit::HandleEditOptionsChoice( EditOptionsChoice c, int* iAnswers )
{
switch( c )
{
case zoom:
break;
case max_notes_per_row:
break;
case after_note_add:
break;
default:
ASSERT(0);
};
}
}
void ScreenEdit::HandleEditSongInfoChoice( EditSongInfoChoice c, int* iAnswers )
{
Song* pSong = GAMESTATE->m_pCurSong;
switch( c )
{
case main_title:
SCREENMAN->TextEntry( SM_None, "Edit main title.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sMainTitle, ChangeMainTitle, NULL );
break;
case sub_title:
SCREENMAN->TextEntry( SM_None, "Edit sub title.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sSubTitle, ChangeSubTitle, NULL );
break;
case artist:
SCREENMAN->TextEntry( SM_None, "Edit artist.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sArtist, ChangeArtist, NULL );
break;
case main_title_transliteration:
SCREENMAN->TextEntry( SM_None, "Edit main title transliteration.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sMainTitleTranslit, ChangeMainTitleTranslit, NULL );
break;
case sub_title_transliteration:
SCREENMAN->TextEntry( SM_None, "Edit sub title transliteration.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sSubTitleTranslit, ChangeSubTitleTranslit, NULL );
break;
case artist_transliteration:
SCREENMAN->TextEntry( SM_None, "Edit artist transliteration.\nPress Enter to confirm,\nEscape to cancel.", pSong->m_sArtistTranslit, ChangeArtistTranslit, NULL );
break;
default:
ASSERT(0);
-9
View File
@@ -108,7 +108,6 @@ public:
edit_notes_statistics,
play_whole_song,
save,
editor_options,
player_options,
song_options,
edit_song_info,
@@ -152,14 +151,6 @@ public:
};
void HandleEditNotesStatisticsChoice( EditNotesStatisticsChoice c, int* iAnswers );
enum EditOptionsChoice {
zoom,
max_notes_per_row,
after_note_add,
NUM_EDIT_OPTIONS_CHOICES
};
void HandleEditOptionsChoice( EditOptionsChoice c, int* iAnswers );
enum EditSongInfoChoice {
main_title,
sub_title,
+6 -7
View File
@@ -340,6 +340,12 @@ void ScreenManager::SetNewScreen( CString sClassName )
else GAMESTATE->m_bIsOnSystemMenu = false;
}
void ScreenManager::AddNewScreenToTop( CString sClassName )
{
Screen* pNewScreen = MakeNewScreen(sClassName);
m_ScreenStack.push_back( pNewScreen );
}
void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() )
{
// add the new state onto the back of the array
@@ -389,13 +395,6 @@ void ScreenManager::SystemMessage( CString sMessage )
LOG->Trace( "WARNING: Didn't find an empty system messages slot." );
}
/*
void ScreenManager::OverrideCreditsMessage( PlayerNumber pn, CString sNewString )
{
m_textCreditInfo[p].SetText( sNewString );
}
*/
void ScreenManager::RefreshCreditsMessages()
{
// update joined
+2 -1
View File
@@ -38,10 +38,11 @@ public:
void PrepNewScreen( CString sClassName );
void LoadPreppedScreen();
void SetNewScreen( CString sClassName );
void AddNewScreenToTop( CString sClassName );
void Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo = false, bool bDefaultAnswer = false, void(*OnYes)() = NULL, void(*OnNo)() = NULL );
void TextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL );
void MiniMenu( MiniMenuDefinition* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel = SM_None );
void PopTopScreen( ScreenMessage SM );
void PopTopScreen( ScreenMessage SM = SM_RegainingFocus );
void SystemMessage( CString sMessage );
void SendMessageToTopScreen( ScreenMessage SM, float fDelay );
+1
View File
@@ -23,6 +23,7 @@ enum ScreenMessage {
SM_BeginFadingOut,
SM_GoToNextScreen,
SM_GoToPrevScreen,
SM_RegainingFocus,
SM_User = 100
};
+44 -13
View File
@@ -24,6 +24,12 @@ const float LABEL_X = 200;
const float ANSWER_X = 440;
const float SPACING_Y = 26;
const float ZOOM_SELECTED = 0.7f;
const float ZOOM_NOT_SELECTED = 0.5f;
const RageColor COLOR_ENABLED = RageColor(1,1,1,1);
const RageColor COLOR_DISABLED = RageColor(0.5f,0.5f,0.5f,1);
const ScreenMessage SM_GoToOK = (ScreenMessage)(SM_User+1);
const ScreenMessage SM_GoToCancel = (ScreenMessage)(SM_User+2);
@@ -56,7 +62,10 @@ ScreenMiniMenu::ScreenMiniMenu( MiniMenuDefinition* pDef, ScreenMessage SM_SendO
this->AddChild( &m_textTitle );
bool bMarkedFirstEnabledLine = false;
m_iCurLine = 0;
float fLongestLabelPlusAnswer = 0;
for( int i=0; i<m_Def.iNumLines; i++ )
{
MiniMenuDefinition::MiniMenuLine& line = m_Def.lines[i];
@@ -66,20 +75,25 @@ ScreenMiniMenu::ScreenMiniMenu( MiniMenuDefinition* pDef, ScreenMessage SM_SendO
m_textLabel[i].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
m_textLabel[i].SetText( line.szLabel );
m_textLabel[i].SetXY( LABEL_X, fY );
m_textLabel[i].SetZoom( 0.5f );
m_textLabel[i].SetY( fY );
m_textLabel[i].SetZoom( ZOOM_NOT_SELECTED );
m_textLabel[i].SetHorizAlign( Actor::align_left );
m_textLabel[i].SetDiffuse( line.bEnabled ? RageColor(1,1,1,1) : RageColor(0.5f,0.5f,0.5f,1) );
m_textLabel[i].SetDiffuse( line.bEnabled ? COLOR_ENABLED : COLOR_DISABLED );
this->AddChild( &m_textLabel[i] );
m_textAnswer[i].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
m_textAnswer[i].SetText( line.szOptionsText[0] );
m_textAnswer[i].SetXY( ANSWER_X, fY );
m_textAnswer[i].SetZoom( 0.5f );
m_textAnswer[i].SetText( line.szOptionsText[line.iDefaultOption] );
m_textAnswer[i].SetY( fY );
m_textAnswer[i].SetZoom( ZOOM_NOT_SELECTED );
m_textAnswer[i].SetHorizAlign( Actor::align_right );
m_textAnswer[i].SetDiffuse( line.bEnabled ? RageColor(1,1,1,1) : RageColor(0.5f,0.5f,0.5f,1) );
m_textAnswer[i].SetDiffuse( line.bEnabled ? COLOR_ENABLED : COLOR_DISABLED );
this->AddChild( &m_textAnswer[i] );
fLongestLabelPlusAnswer = max(
fLongestLabelPlusAnswer,
m_textLabel[i].GetWidestLineWidthInSourcePixels() * ZOOM_SELECTED +
m_textAnswer[i].GetWidestLineWidthInSourcePixels() * ZOOM_SELECTED );
if( !bMarkedFirstEnabledLine && line.bEnabled )
{
m_iCurLine = i;
@@ -90,6 +104,23 @@ ScreenMiniMenu::ScreenMiniMenu( MiniMenuDefinition* pDef, ScreenMessage SM_SendO
m_iCurAnswers[i] = line.iDefaultOption;
}
// adjust text spacing based on widest line
float fLabelX = LABEL_X;
float fAnswerX = ANSWER_X;
float fDefaultWidth = ANSWER_X - LABEL_X;
if( fLongestLabelPlusAnswer+20 > fDefaultWidth )
{
float fIncreaseBy = fLongestLabelPlusAnswer - fDefaultWidth + 20;
fLabelX -= fIncreaseBy/2;
fAnswerX += fIncreaseBy/2;
}
for( int i=0; i<m_Def.iNumLines; i++ )
{
m_textLabel[i].SetX( fLabelX );
m_textAnswer[i].SetX( fAnswerX );
}
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu prompt") );
}
@@ -194,17 +225,17 @@ void ScreenMiniMenu::BeforeLineChanged()
{
m_textLabel[m_iCurLine].SetEffectNone();
m_textAnswer[m_iCurLine].SetEffectNone();
m_textLabel[m_iCurLine].SetZoom( 0.5f );
m_textAnswer[m_iCurLine].SetZoom( 0.5f );
m_textLabel[m_iCurLine].SetZoom( ZOOM_NOT_SELECTED );
m_textAnswer[m_iCurLine].SetZoom( ZOOM_NOT_SELECTED );
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","mini menu row") );
}
void ScreenMiniMenu::AfterLineChanged()
{
m_textLabel[m_iCurLine].SetEffectGlowShift( 1.0f, RageColor(0,0.5f,0,1), RageColor(0,1,0,1) );
m_textAnswer[m_iCurLine].SetEffectGlowShift( 1.0f, RageColor(0,0.5f,0,1), RageColor(0,1,0,1) );
m_textLabel[m_iCurLine].SetZoom( 0.7f );
m_textAnswer[m_iCurLine].SetZoom( 0.7f );
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","mini menu row") );
m_textLabel[m_iCurLine].SetZoom( ZOOM_SELECTED );
m_textAnswer[m_iCurLine].SetZoom( ZOOM_SELECTED );
}
void ScreenMiniMenu::AfterAnswerChanged()
+1 -1
View File
@@ -25,7 +25,7 @@ struct MiniMenuDefinition
int iNumLines;
struct MiniMenuLine
{
char szLabel[40];
char szLabel[256];
bool bEnabled;
int iNumOptions;
int iDefaultOption;
+6 -2
View File
@@ -179,7 +179,9 @@ void ScreenPlayerOptions::ExportOptions()
void ScreenPlayerOptions::GoToPrevState()
{
if( GAMESTATE->m_PlayMode == PLAY_MODE_NONSTOP ||
if( GAMESTATE->m_bEditing )
SCREENMAN->PopTopScreen();
else if( GAMESTATE->m_PlayMode == PLAY_MODE_NONSTOP ||
GAMESTATE->m_PlayMode == PLAY_MODE_ONI ||
GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS)
SCREENMAN->SetNewScreen( "ScreenSelectCourse" );
@@ -189,7 +191,9 @@ void ScreenPlayerOptions::GoToPrevState()
void ScreenPlayerOptions::GoToNextState()
{
if( PREFSMAN->m_bShowSongOptions == true )
if( GAMESTATE->m_bEditing )
SCREENMAN->PopTopScreen();
else if( PREFSMAN->m_bShowSongOptions == true )
SCREENMAN->SetNewScreen( "ScreenSongOptions" );
else
SCREENMAN->SetNewScreen( "ScreenStage" );
+9 -3
View File
@@ -107,14 +107,20 @@ void ScreenSongOptions::ExportOptions()
void ScreenSongOptions::GoToPrevState()
{
SCREENMAN->SetNewScreen( "ScreenPlayerOptions" );
SOUNDMAN->StopMusic();
if( GAMESTATE->m_bEditing )
SCREENMAN->PopTopScreen( SM_None );
else
SCREENMAN->SetNewScreen( "ScreenPlayerOptions" );
}
void ScreenSongOptions::GoToNextState()
{
SOUNDMAN->StopMusic();
SCREENMAN->SetNewScreen( "ScreenStage" );
if( GAMESTATE->m_bEditing )
SCREENMAN->PopTopScreen();
else
SCREENMAN->SetNewScreen( "ScreenStage" );
}
+2
View File
@@ -406,6 +406,8 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
case MENU_BUTTON_COIN:
/* Handle a coin insertion. */
if( GAMESTATE->m_bEditing )
break;
if( type == IET_FIRST_PRESS ) return true;
switch( PREFSMAN->m_CoinMode )