replace ScreenMenuJukebox with ScreenOptionsMaster

This commit is contained in:
Chris Danford
2005-01-29 21:56:24 +00:00
parent 4cb179e5ec
commit e273da39c6
13 changed files with 136 additions and 584 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

+17 -20
View File
@@ -2231,15 +2231,20 @@ MemoryCardIcons=0
TimerSeconds=0
[ScreenJukeboxMenu]
Fallback=ScreenWithMenuElements
Class=ScreenOptionsMaster
Fallback=ScreenOptions
NextScreen=ScreenJukebox
PrevScreen=ScreenTitleBranch
ExplanationX=SCREEN_CENTER_X+0
ExplanationY=SCREEN_CENTER_Y+170
ExplanationOnCommand=wrapwidthpixels,900;zoom,0.7
StyleIcon=0
MemoryCardIcons=0
MemoryCardIcons=1
TimerSeconds=0
CapitalizeAllOptionNames=1
OptionMenuFlags=
LineNames=1,2,3,4
Line1=Styles
Line2=Groups
Line3=Difficulties
Line4=list,RandomModifiers
[ScreenEditCoursesMenu]
Fallback=ScreenWithMenuElements
@@ -3338,19 +3343,6 @@ Row5Y=SCREEN_CENTER_Y+20
Row6Y=SCREEN_CENTER_Y+60
Row7Y=SCREEN_CENTER_Y+100
[JukeboxMenu]
Arrows1X=SCREEN_CENTER_X-130
Arrows2X=SCREEN_CENTER_X+270
RowLabelsX=SCREEN_CENTER_X-300
RowValue1X=SCREEN_CENTER_X+60
RowValue2X=SCREEN_CENTER_X+60
RowValue3X=SCREEN_CENTER_X+60
RowValue4X=SCREEN_CENTER_X+60
Row1Y=SCREEN_CENTER_Y-160
Row2Y=SCREEN_CENTER_Y-110
Row3Y=SCREEN_CENTER_Y-60
Row4Y=SCREEN_CENTER_Y-10
[EditCoursesMenu]
Arrows1X=SCREEN_CENTER_X-130
Arrows2X=SCREEN_CENTER_X+270
@@ -3512,8 +3504,8 @@ Line10=list,Mines
Line11=list,Hide
Line12=list,Persp
Line13=list,ScoreDisplay
Line14=Steps
Line15=Characters
Line14=list,Steps
Line15=list,Characters
CancelAllP1X=
CancelAllP1Y=
CancelAllP1OnCommand=
@@ -3870,6 +3862,11 @@ Network Options=1,together,SelectNone
Network OptionsDefault=
Network Options,1=screen,ScreenNetworkOptions;name,NetworkOptions
#ScreenJukeboxMenu
RandomModifiers=2
RandomModifiersDefault=mod,clear
RandomModifiers,1=name,Off
RandomModifiers,2=mod,random;name,Random
[DancingCharacters]
+5
View File
@@ -11,6 +11,11 @@ for( deque<elemType>::iterator var = (vect).begin(); var != (vect).end(); ++var
#define FOREACHD_CONST( elemType, vect, var ) \
for( deque<elemType>::const_iterator var = (vect).begin(); var != (vect).end(); ++var )
#define FOREACHS( elemType, vect, var ) \
for( set<elemType>::iterator var = (vect).begin(); var != (vect).end(); ++var )
#define FOREACHS_CONST( elemType, vect, var ) \
for( set<elemType>::const_iterator var = (vect).begin(); var != (vect).end(); ++var )
#define FOREACHMM( keyType, valType, vect, var ) \
for( multimap<keyType, valType>::iterator var = (vect).begin(); var != (vect).end(); ++var )
+5 -2
View File
@@ -84,8 +84,8 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
if( m_pSteps == NULL && m_dc != DIFFICULTY_INVALID )
{
// Why is this checking for all players?
FOREACH_PlayerNumber( pn )
if( GAMESTATE->IsHumanPlayer(pn) && GAMESTATE->m_PreferredDifficulty[pn] != m_dc )
FOREACH_HumanPlayer( pn )
if( GAMESTATE->m_PreferredDifficulty[pn] != m_dc )
return false;
}
@@ -114,6 +114,8 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
return false;
if( m_pTrail && GAMESTATE->m_pCurTrail[pn] != m_pTrail )
return false;
if( !m_sSongGroup.empty() && GAMESTATE->m_sPreferredSongGroup != m_sSongGroup )
return false;
if( m_SortOrder != SORT_INVALID && GAMESTATE->m_PreferredSortOrder != m_SortOrder )
return false;
@@ -736,6 +738,7 @@ bool GameCommand::IsZero() const
m_pTrail != NULL ||
m_pCharacter != NULL ||
m_CourseDifficulty != DIFFICULTY_INVALID ||
!m_sSongGroup.empty() ||
m_SortOrder != SORT_INVALID
)
return false;
-206
View File
@@ -1,206 +0,0 @@
#include "global.h"
#include "JukeboxMenu.h"
#include "RageLog.h"
#include "SongManager.h"
#include "GameState.h"
#include "ThemeManager.h"
#include "GameManager.h"
#include "Style.h"
//
// Defines specific to JukeboxMenu
//
#define ARROWS_X( i ) THEME->GetMetricF("JukeboxMenu",ssprintf("Arrows%dX",i+1))
#define ROW_LABELS_X THEME->GetMetricF("JukeboxMenu","RowLabelsX")
#define ROW_VALUE_X( i ) THEME->GetMetricF("JukeboxMenu",ssprintf("RowValue%dX",i+1))
#define ROW_Y( i ) THEME->GetMetricF("JukeboxMenu",ssprintf("Row%dY",i+1))
JukeboxMenu::JukeboxMenu()
{
LOG->Trace( "ScreenJukeboxMenu::ScreenJukeboxMenu()" );
for( int i=0; i<2; i++ )
{
m_sprArrows[i].Load( THEME->GetPathToG(ssprintf("JukeboxMenu %s",(i==0?"left":"right"))) );
m_sprArrows[i].SetX( ARROWS_X(i) );
this->AddChild( &m_sprArrows[i] );
}
m_SelectedRow = (Row)0;
ZERO( m_iSelection );
for( int i=0; i<NUM_ROWS; i++ )
{
m_textLabel[i].LoadFromFont( THEME->GetPathToF("Common title") );
m_textLabel[i].SetXY( ROW_LABELS_X, ROW_Y(i) );
m_textLabel[i].SetText( RowToString((Row)i) );
m_textLabel[i].SetZoom( 0.8f );
m_textLabel[i].SetHorizAlign( Actor::align_left );
this->AddChild( &m_textLabel[i] );
m_textValue[i].LoadFromFont( THEME->GetPathToF("Common normal") );
m_textValue[i].SetXY( ROW_VALUE_X(i), ROW_Y(i) );
m_textValue[i].SetText( "blah" );
m_textValue[i].SetZoom( 0.8f );
this->AddChild( &m_textValue[i] );
}
m_soundChangeRow.Load( THEME->GetPathToS("JukeboxMenu row") );
m_soundChangeValue.Load( THEME->GetPathToS("JukeboxMenu value") );
// fill in data structures
GAMEMAN->GetStylesForGame( GAMESTATE->m_pCurGame, m_Styles );
SONGMAN->GetGroupNames( m_sGroups );
m_sGroups.insert( m_sGroups.begin(), "ALL MUSIC" );
m_sDifficulties.push_back( "all difficulties" );
for( int d=0; d<NUM_DIFFICULTIES; d++ )
m_sDifficulties.push_back( DifficultyToString( (Difficulty)d ) );
m_sModifiers.push_back( "no modifiers" );
m_sModifiers.push_back( "random modifiers" );
ChangeToRow( (Row)0 );
OnRowValueChanged( (Row)0 );
}
JukeboxMenu::~JukeboxMenu()
{
}
void JukeboxMenu::DrawPrimitives()
{
ActorFrame::DrawPrimitives();
}
bool JukeboxMenu::CanGoUp()
{
return m_SelectedRow != 0;
}
bool JukeboxMenu::CanGoDown()
{
return m_SelectedRow != NUM_ROWS-1;
}
bool JukeboxMenu::CanGoLeft()
{
return m_iSelection[m_SelectedRow] != 0;
}
bool JukeboxMenu::CanGoRight()
{
int num_values[NUM_ROWS] =
{
m_Styles.size(),
m_sGroups.size(),
m_sDifficulties.size(),
m_sModifiers.size()
};
return m_iSelection[m_SelectedRow] != (num_values[m_SelectedRow]-1);
}
void JukeboxMenu::Up()
{
if( CanGoUp() )
{
ChangeToRow( Row(m_SelectedRow-1) );
m_soundChangeRow.PlayRandom();
}
}
void JukeboxMenu::Down()
{
if( CanGoDown() )
{
ChangeToRow( Row(m_SelectedRow+1) );
m_soundChangeRow.PlayRandom();
}
}
void JukeboxMenu::Left()
{
if( CanGoLeft() )
{
m_iSelection[m_SelectedRow]--;
OnRowValueChanged( m_SelectedRow );
m_soundChangeValue.PlayRandom();
}
}
void JukeboxMenu::Right()
{
if( CanGoRight() )
{
m_iSelection[m_SelectedRow]++;
OnRowValueChanged( m_SelectedRow );
m_soundChangeValue.PlayRandom();
}
}
void JukeboxMenu::ChangeToRow( Row newRow )
{
m_SelectedRow = newRow;
for( int i=0; i<2; i++ )
m_sprArrows[i].SetY( ROW_Y(newRow) );
m_sprArrows[0].SetDiffuse( CanGoLeft()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[1].SetDiffuse( CanGoRight()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[0].EnableAnimation( CanGoLeft() );
m_sprArrows[1].EnableAnimation( CanGoRight() );
}
void JukeboxMenu::OnRowValueChanged( Row row )
{
m_sprArrows[0].SetDiffuse( CanGoLeft()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[1].SetDiffuse( CanGoRight()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[0].EnableAnimation( CanGoLeft() );
m_sprArrows[1].EnableAnimation( CanGoRight() );
switch( row )
{
case ROW_STYLE:
m_textValue[ROW_STYLE].SetText( GetSelectedStyle()->m_szName );
// fall through
case ROW_GROUP:
m_textValue[ROW_GROUP].SetText( SONGMAN->ShortenGroupName(GetSelectedGroup()) );
// fall through
case ROW_DIFFICULTY:
m_textValue[ROW_DIFFICULTY].SetText( GetSelectedDifficultyString() );
// fall through
case ROW_MODIFIERS:
m_textValue[ROW_MODIFIERS].SetText( m_sModifiers[GetSelectedModifiers()] );
break;
default:
ASSERT(0); // invalid row
}
}
/*
* (c) 2003 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-103
View File
@@ -1,103 +0,0 @@
/* JukeboxMenu - UI on ScreenJukeboxMenu. */
#ifndef JUKEBOX_MENU_H
#define JUKEBOX_MENU_H
#include "ActorFrame.h"
#include "Banner.h"
#include "GameConstantsAndTypes.h"
#include "RandomSample.h"
#include "BitmapText.h"
#include "Difficulty.h"
class Style;
class JukeboxMenu: public ActorFrame
{
public:
JukeboxMenu();
~JukeboxMenu();
virtual void DrawPrimitives();
bool CanGoUp();
bool CanGoDown();
bool CanGoLeft();
bool CanGoRight();
void Up();
void Down();
void Left();
void Right();
enum Row
{
ROW_STYLE,
ROW_GROUP,
ROW_DIFFICULTY,
ROW_MODIFIERS,
NUM_ROWS
} m_SelectedRow;
CString RowToString( Row r )
{
const CString s[NUM_ROWS] =
{
"Style",
"Group",
"Difficulty",
"Modifiers",
};
return s[r];
}
const Style* GetSelectedStyle() { return m_Styles[m_iSelection[ROW_STYLE]]; }
CString GetSelectedGroup() { return m_sGroups[m_iSelection[ROW_GROUP]]; }
CString GetSelectedDifficultyString() { return m_sDifficulties[m_iSelection[ROW_DIFFICULTY]]; }
Difficulty GetSelectedDifficulty() { return StringToDifficulty( GetSelectedDifficultyString() ); }
bool GetSelectedModifiers() { return m_iSelection[ROW_MODIFIERS] != 0; }
private:
Sprite m_sprArrows[2];
int m_iSelection[NUM_ROWS];
BitmapText m_textLabel[NUM_ROWS];
BitmapText m_textValue[NUM_ROWS];
vector<const Style*> m_Styles;
CStringArray m_sGroups;
vector<string> m_sDifficulties;
CStringArray m_sModifiers;
void OnRowValueChanged( Row row );
void ChangeToRow( Row newRow );
RandomSample m_soundChangeRow;
RandomSample m_soundChangeValue;
};
#endif
/*
* (c) 2003 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
+2 -2
View File
@@ -35,7 +35,7 @@ ScreenEz2SelectMusic.cpp ScreenEz2SelectMusic.h ScreenEz2SelectPlayer.cpp Screen
ScreenGameplay.cpp ScreenGameplay.h ScreenHowToPlay.cpp ScreenHowToPlay.h \
ScreenInstructions.cpp ScreenInstructions.h \
ScreenJukebox.cpp ScreenJukebox.h \
ScreenJukeboxMenu.cpp ScreenJukeboxMenu.h ScreenLogo.cpp ScreenLogo.h ScreenMapControllers.cpp ScreenMapControllers.h \
ScreenLogo.cpp ScreenLogo.h ScreenMapControllers.cpp ScreenMapControllers.h \
ScreenMessage.h ScreenMiniMenu.cpp ScreenMiniMenu.h ScreenMusicScroll.cpp ScreenMusicScroll.h \
ScreenNameEntry.cpp ScreenNameEntry.h ScreenNameEntryTraditional.cpp ScreenNameEntryTraditional.h \
ScreenOptions.cpp ScreenOptions.h ScreenOptionsMaster.cpp ScreenOptionsMaster.h \
@@ -202,7 +202,7 @@ DifficultyDisplay.cpp DifficultyDisplay.h DifficultyList.cpp DifficultyList.h \
DifficultyMeter.cpp DifficultyMeter.h DifficultyRating.cpp DifficultyRating.h DualScrollBar.cpp DualScrollBar.h \
EditCoursesMenu.cpp EditCoursesMenu.h EditMenu.cpp EditMenu.h FadingBanner.cpp FadingBanner.h \
GradeDisplay.cpp GradeDisplay.h GraphDisplay.cpp GraphDisplay.h GrooveGraph.cpp GrooveGraph.h \
GrooveRadar.cpp GrooveRadar.h GroupList.cpp GroupList.h HelpDisplay.cpp HelpDisplay.h JukeboxMenu.cpp JukeboxMenu.h \
GrooveRadar.cpp GrooveRadar.h GroupList.cpp GroupList.h HelpDisplay.cpp HelpDisplay.h \
ListDisplay.cpp ListDisplay.h MemoryCardDisplay.cpp MemoryCardDisplay.h \
MenuTimer.cpp MenuTimer.h ModeSwitcher.cpp ModeSwitcher.h MusicBannerWheel.cpp MusicBannerWheel.h \
MusicList.cpp MusicList.h MusicSortDisplay.cpp MusicSortDisplay.h MusicWheel.cpp MusicWheel.h \
+7 -12
View File
@@ -297,18 +297,13 @@ void PlayerOptions::FromString( CString sOptions )
else if( sBit == "space" ) { m_fSkew = level; m_fPerspectiveTilt = +level; m_SpeedfSkew = m_SpeedfPerspectiveTilt = speed; }
else if( sBit == "hallway" ) { m_fSkew = 0; m_fPerspectiveTilt = -level; m_SpeedfSkew = m_SpeedfPerspectiveTilt = speed; }
else if( sBit == "distant" ) { m_fSkew = 0; m_fPerspectiveTilt = +level; m_SpeedfSkew = m_SpeedfPerspectiveTilt = speed; }
else if( NOTESKIN && NOTESKIN->DoesNoteSkinExist(sBit) )
m_sNoteSkin = sBit;
else if( sBit == "noteskin" && !on ) /* "no noteskin" */
m_sNoteSkin = "default";
else if ( sBit == "randomspeed" )
SET_FLOAT( fRandomSpeed )
else if ( sBit == "addscore" )
m_ScoreDisplay = SCORING_ADD;
else if ( sBit == "subtractscore" )
m_ScoreDisplay = SCORING_SUBTRACT;
else if ( sBit == "averagescore" )
m_ScoreDisplay = SCORING_AVERAGE;
else if( NOTESKIN && NOTESKIN->DoesNoteSkinExist(sBit) ) m_sNoteSkin = sBit;
else if( sBit == "noteskin" && !on ) /* "no noteskin" */ m_sNoteSkin = "default";
else if( sBit == "randomspeed" ) SET_FLOAT( fRandomSpeed )
else if( sBit == "addscore" ) m_ScoreDisplay = SCORING_ADD;
else if( sBit == "subtractscore" ) m_ScoreDisplay = SCORING_SUBTRACT;
else if( sBit == "averagescore" ) m_ScoreDisplay = SCORING_AVERAGE;
else if( sBit == "random" ) ChooseRandomMofifiers();
}
}
-144
View File
@@ -1,144 +0,0 @@
#include "global.h"
#include "ScreenJukeboxMenu.h"
#include "SongManager.h"
#include "ScreenManager.h"
#include "GameConstantsAndTypes.h"
#include "RageUtil.h"
#include "GameManager.h"
#include "RageLog.h"
#include "GameState.h"
#include "GameSoundManager.h"
#include "ThemeManager.h"
#include "ScreenJukebox.h"
//
// Defines specific to ScreenJukeboxMenu
//
#define EXPLANATION_TEXT THEME->GetMetric("ScreenJukeboxMenu","ExplanationText")
REGISTER_SCREEN_CLASS( ScreenJukeboxMenu );
ScreenJukeboxMenu::ScreenJukeboxMenu( CString sClassName ) : ScreenWithMenuElements( sClassName )
{
LOG->Trace( "ScreenJukeboxMenu::ScreenJukeboxMenu()" );
GAMESTATE->m_pCurStyle = NULL;
FOREACH_PlayerNumber( pn )
GAMESTATE->m_bSideIsJoined[pn] = true;
m_Selector.SetXY( 0, 0 );
// m_Selector.AllowNewNotes();
this->AddChild( &m_Selector );
m_textExplanation.SetName( "Explanation" );
m_textExplanation.LoadFromFont( THEME->GetPathToF("Common normal") );
m_textExplanation.SetText( EXPLANATION_TEXT );
SET_XY_AND_ON_COMMAND( m_textExplanation );
this->AddChild( &m_textExplanation );
this->SortByDrawOrder();
SOUND->PlayMusic( THEME->GetPathToS("ScreenJukeboxMenu music") );
}
ScreenJukeboxMenu::~ScreenJukeboxMenu()
{
LOG->Trace( "ScreenJukeboxMenu::~ScreenJukeboxMenu()" );
}
void ScreenJukeboxMenu::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
{
LOG->Trace( "ScreenJukeboxMenu::Input()" );
if( IsTransitioning() )
return;
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
}
void ScreenJukeboxMenu::MenuUp( PlayerNumber pn )
{
m_Selector.Up();
}
void ScreenJukeboxMenu::MenuDown( PlayerNumber pn )
{
m_Selector.Down();
}
void ScreenJukeboxMenu::MenuLeft( PlayerNumber pn, const InputEventType type )
{
m_Selector.Left();
}
void ScreenJukeboxMenu::MenuRight( PlayerNumber pn, const InputEventType type )
{
m_Selector.Right();
}
void ScreenJukeboxMenu::MenuStart( PlayerNumber pn )
{
if( IsTransitioning() )
return;
const Style *style = m_Selector.GetSelectedStyle();
CString sGroup = m_Selector.GetSelectedGroup();
Difficulty dc = m_Selector.GetSelectedDifficulty();
bool bModifiers = m_Selector.GetSelectedModifiers();
GAMESTATE->m_pCurStyle = style;
GAMESTATE->m_sPreferredSongGroup = (sGroup=="ALL MUSIC") ? GROUP_ALL_MUSIC : sGroup;
FOREACH_PlayerNumber( p )
GAMESTATE->m_PreferredDifficulty[p] = dc;
GAMESTATE->m_bJukeboxUsesModifiers = bModifiers;
if( !ScreenJukebox::SetSong(false) )
{
/* No songs are available for the selected style, group, and difficulty. */
SCREENMAN->PlayInvalidSound();
SCREENMAN->SystemMessage( "No songs available with these settings" );
return;
}
SOUND->StopMusic();
SCREENMAN->PlayStartSound();
StartTransitioning( SM_GoToNextScreen );
}
void ScreenJukeboxMenu::MenuBack( PlayerNumber pn )
{
StartTransitioning( SM_GoToPrevScreen );
SOUND->StopMusic();
}
/*
* (c) 2003-2004 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-56
View File
@@ -1,56 +0,0 @@
#ifndef SCREEN_JUKEBOX_MENU_H
#define SCREEN_JUKEBOX_MENU_H
#include "ScreenWithMenuElements.h"
#include "JukeboxMenu.h"
#include "BitmapText.h"
#include "RageSound.h"
class ScreenJukeboxMenu : public ScreenWithMenuElements
{
public:
ScreenJukeboxMenu( CString sName );
virtual ~ScreenJukeboxMenu();
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
private:
void MenuUp( PlayerNumber pn );
void MenuDown( PlayerNumber pn );
void MenuLeft( PlayerNumber pn, const InputEventType type );
void MenuRight( PlayerNumber pn, const InputEventType type );
void MenuBack( PlayerNumber pn );
void MenuStart( PlayerNumber pn );
JukeboxMenu m_Selector;
BitmapText m_textExplanation;
};
#endif
/*
* (c) 2003-2004 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
+92 -21
View File
@@ -22,6 +22,8 @@
#include "ProfileManager.h"
#include "StepsUtil.h"
#include "LuaManager.h"
#include "GameManager.h"
#include "Foreach.h"
#define LINE_NAMES THEME->GetMetric (m_sName,"LineNames")
#define OPTION_MENU_FLAGS THEME->GetMetric (m_sName,"OptionMenuFlags")
@@ -98,9 +100,9 @@ void ScreenOptionsMaster::SetList( OptionRowData &row, OptionRowHandler &hand, C
}
/* Add a list of difficulties/edits to the given row/handler. */
void ScreenOptionsMaster::SetStep( OptionRowData &row, OptionRowHandler &hand )
void ScreenOptionsMaster::SetSteps( OptionRowData &row, OptionRowHandler &hand )
{
hand.type = ROW_STEP;
hand.type = ROW_LIST;
row.name = "Steps";
row.bOneChoiceForAllPlayers = false;
@@ -173,9 +175,9 @@ void ScreenOptionsMaster::SetConf( OptionRowData &row, OptionRowHandler &hand, C
}
/* Add a list of available characters to the given row/handler. */
void ScreenOptionsMaster::SetCharacter( OptionRowData &row, OptionRowHandler &hand )
void ScreenOptionsMaster::SetCharacters( OptionRowData &row, OptionRowHandler &hand )
{
hand.type = ROW_CHARACTER;
hand.type = ROW_LIST;
row.bOneChoiceForAllPlayers = false;
row.name = "Characters";
hand.Default.m_pCharacter = GAMESTATE->GetDefaultCharacter();
@@ -183,7 +185,7 @@ void ScreenOptionsMaster::SetCharacter( OptionRowData &row, OptionRowHandler &ha
{
row.choices.push_back( ENTRY_NAME("Off") );
GameCommand mc;
mc.m_pCharacter = GAMESTATE->GetDefaultCharacter();
mc.m_pCharacter = NULL;
hand.ListEntries.push_back( mc );
}
@@ -202,6 +204,84 @@ void ScreenOptionsMaster::SetCharacter( OptionRowData &row, OptionRowHandler &ha
}
}
/* Add a list of available styles to the given row/handler. */
void ScreenOptionsMaster::SetStyles( OptionRowData &row, OptionRowHandler &hand )
{
hand.type = ROW_LIST;
row.bOneChoiceForAllPlayers = true;
row.name = "Style";
vector<const Style*> vStyles;
GAMEMAN->GetStylesForGame( GAMESTATE->m_pCurGame, vStyles );
ASSERT( vStyles.size() );
FOREACH_CONST( const Style*, vStyles, s )
{
row.choices.push_back( GAMEMAN->StyleToThemedString(*s) );
GameCommand mc;
mc.m_pStyle = *s;
hand.ListEntries.push_back( mc );
}
hand.Default.m_pStyle = vStyles[0];
}
/* Add a list of available song groups to the given row/handler. */
void ScreenOptionsMaster::SetGroups( OptionRowData &row, OptionRowHandler &hand )
{
hand.type = ROW_LIST;
row.bOneChoiceForAllPlayers = true;
row.name = "Group";
hand.Default.m_sSongGroup = GROUP_ALL_MUSIC;
vector<CString> vGroups;
SONGMAN->GetGroupNames( vGroups );
ASSERT( vGroups.size() );
{
row.choices.push_back( ENTRY_NAME("AllGroups") );
GameCommand mc;
mc.m_sSongGroup = GROUP_ALL_MUSIC;
hand.ListEntries.push_back( mc );
}
FOREACH_CONST( CString, vGroups, g )
{
row.choices.push_back( *g );
GameCommand mc;
mc.m_sSongGroup = *g;
hand.ListEntries.push_back( mc );
}
}
/* Add a list of available difficulties to the given row/handler. */
void ScreenOptionsMaster::SetDifficulties( OptionRowData &row, OptionRowHandler &hand )
{
set<Difficulty> vDifficulties;
GAMESTATE->GetDifficultiesToShow( vDifficulties );
hand.type = ROW_LIST;
row.bOneChoiceForAllPlayers = true;
row.name = "Difficulty";
hand.Default.m_dc = DIFFICULTY_INVALID;
{
row.choices.push_back( ENTRY_NAME("AllDifficulties") );
GameCommand mc;
mc.m_dc = DIFFICULTY_INVALID;
hand.ListEntries.push_back( mc );
}
FOREACHS_CONST( Difficulty, vDifficulties, d )
{
CString s = DifficultyToThemedString( *d );
row.choices.push_back( s );
GameCommand mc;
mc.m_dc = *d;
hand.ListEntries.push_back( mc );
}
}
REGISTER_SCREEN_CLASS( ScreenOptionsMaster );
ScreenOptionsMaster::ScreenOptionsMaster( CString sClassName ):
ScreenOptions( sClassName )
@@ -270,14 +350,13 @@ ScreenOptionsMaster::ScreenOptionsMaster( CString sClassName ):
const CString &name = command.GetName();
if( !name.CompareNoCase("list") )
SetList( row, hand, sArg(1) );
else if( !name.CompareNoCase("steps") )
SetStep( row, hand );
else if( !name.CompareNoCase("conf") )
SetConf( row, hand, sArg(1) );
else if( !name.CompareNoCase("characters") )
SetCharacter( row, hand );
if( !name.CompareNoCase("list") ) SetList( row, hand, sArg(1) );
else if( !name.CompareNoCase("steps") ) SetSteps( row, hand );
else if( !name.CompareNoCase("conf") ) SetConf( row, hand, sArg(1) );
else if( !name.CompareNoCase("characters") ) SetCharacters( row, hand );
else if( !name.CompareNoCase("styles") ) SetStyles( row, hand );
else if( !name.CompareNoCase("groups") ) SetGroups( row, hand );
else if( !name.CompareNoCase("difficulties") ) SetDifficulties( row, hand );
else
RageException::Throw( "Unexpected type '%s' in %s::Line%i", name.c_str(), m_sName.c_str(), i );
@@ -316,8 +395,6 @@ void ScreenOptionsMaster::ImportOption( const OptionRowData &row, const OptionRo
switch( hand.type )
{
case ROW_LIST:
case ROW_STEP:
case ROW_CHARACTER:
{
int FallbackOption = -1;
bool UseFallbackOption = true;
@@ -453,8 +530,6 @@ int ScreenOptionsMaster::ExportOption( const OptionRowData &row, const OptionRow
switch( hand.type )
{
case ROW_LIST:
case ROW_CHARACTER:
case ROW_STEP:
{
hand.Default.Apply( pn );
for( unsigned i=0; i<vbSelected.size(); i++ )
@@ -641,10 +716,6 @@ void ScreenOptionsMaster::RefreshIcons()
switch( handler.type )
{
case ROW_LIST:
sIcon = handler.ListEntries[iFirstSelection].m_sModifiers;
break;
case ROW_STEP:
case ROW_CHARACTER:
sIcon = data.choices[iFirstSelection];
break;
case ROW_CONFIG:
+8 -6
View File
@@ -17,8 +17,6 @@ private:
enum OptionRowType
{
ROW_LIST, /* list of custom settings */
ROW_STEP, /* list of steps for the current song or course */
ROW_CHARACTER, /* list of characters */
ROW_CONFIG, /* global pref */
NUM_OPTION_ROW_TYPES
};
@@ -44,10 +42,14 @@ private:
int ExportOption( const OptionRowData &row, const OptionRowHandler &hand, PlayerNumber pn, const vector<bool> &vbSelected );
void ImportOption( const OptionRowData &row, const OptionRowHandler &hand, PlayerNumber pn, int rowno, vector<bool> &vbSelectedOut );
void SetList( OptionRowData &row, OptionRowHandler &hand, CString param );
void SetStep( OptionRowData &row, OptionRowHandler &hand );
void SetConf( OptionRowData &row, OptionRowHandler &hand, CString param );
void SetCharacter( OptionRowData &row, OptionRowHandler &hand );
static void SetList( OptionRowData &row, OptionRowHandler &hand, CString param );
static void SetSteps( OptionRowData &row, OptionRowHandler &hand );
static void SetConf( OptionRowData &row, OptionRowHandler &hand, CString param );
static void SetCharacters( OptionRowData &row, OptionRowHandler &hand );
static void SetStyles( OptionRowData &row, OptionRowHandler &hand );
static void SetGroups( OptionRowData &row, OptionRowHandler &hand );
static void SetDifficulties( OptionRowData &row, OptionRowHandler &hand );
protected:
virtual void ImportOptions();
-12
View File
@@ -292,12 +292,6 @@ cl /Zl /nologo /c verstub.cpp /Fo&quot;$(IntDir)&quot;\
<File
RelativePath="ScreenJukebox.h">
</File>
<File
RelativePath="ScreenJukeboxMenu.cpp">
</File>
<File
RelativePath="ScreenJukeboxMenu.h">
</File>
<File
RelativePath="ScreenLogo.cpp">
</File>
@@ -1494,12 +1488,6 @@ cl /Zl /nologo /c verstub.cpp /Fo&quot;$(IntDir)&quot;\
<File
RelativePath="HelpDisplay.h">
</File>
<File
RelativePath="JukeboxMenu.cpp">
</File>
<File
RelativePath="JukeboxMenu.h">
</File>
<File
RelativePath="ListDisplay.cpp">
</File>