2003-02-16 04:01:45 +00:00
|
|
|
#include "global.h"
|
2002-07-11 19:02:26 +00:00
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
Class: ScreenAppearanceOptions
|
|
|
|
|
|
|
|
|
|
Desc: See header.
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
|
|
|
Chris Danford
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "ScreenAppearanceOptions.h"
|
|
|
|
|
#include "RageTextureManager.h"
|
|
|
|
|
#include "RageUtil.h"
|
2003-01-02 07:54:28 +00:00
|
|
|
#include "RageSoundManager.h"
|
2002-07-11 19:02:26 +00:00
|
|
|
#include "ScreenManager.h"
|
|
|
|
|
#include "PrefsManager.h"
|
|
|
|
|
#include "GameConstantsAndTypes.h"
|
|
|
|
|
#include "StepMania.h"
|
2002-07-23 01:41:40 +00:00
|
|
|
#include "PrefsManager.h"
|
2002-07-11 19:02:26 +00:00
|
|
|
#include "RageLog.h"
|
|
|
|
|
#include "AnnouncerManager.h"
|
2003-02-06 07:32:57 +00:00
|
|
|
#include "NoteSkinManager.h"
|
2002-07-23 01:41:40 +00:00
|
|
|
#include "GameState.h"
|
2002-11-11 04:53:31 +00:00
|
|
|
#include "ThemeManager.h"
|
2002-07-11 19:02:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
AO_ANNOUNCER = 0,
|
2002-07-23 01:41:40 +00:00
|
|
|
AO_THEME,
|
2003-02-22 00:12:45 +00:00
|
|
|
// AO_DIFF_SELECT,
|
|
|
|
|
AO_SKIN,
|
2003-01-11 08:55:21 +00:00
|
|
|
AO_INSTRUCTIONS,
|
2002-12-15 10:07:27 +00:00
|
|
|
AO_CAUTION,
|
2003-02-25 11:20:45 +00:00
|
|
|
AO_DANCE_POINTS_FOR_ONI,
|
2002-12-15 10:25:20 +00:00
|
|
|
AO_SELECT_GROUP,
|
2002-12-30 21:42:14 +00:00
|
|
|
AO_WHEEL_SECTIONS,
|
2003-02-12 00:14:53 +00:00
|
|
|
AO_SHOW_TRANSLATIONS,
|
2002-07-11 19:02:26 +00:00
|
|
|
NUM_APPEARANCE_OPTIONS_LINES
|
|
|
|
|
};
|
|
|
|
|
|
2002-09-04 03:49:08 +00:00
|
|
|
OptionRowData g_AppearanceOptionsLines[NUM_APPEARANCE_OPTIONS_LINES] = {
|
2003-02-21 10:05:13 +00:00
|
|
|
{ "Announcer", 1, {"OFF"} }, // fill this in on ImportOptions()
|
|
|
|
|
{ "Theme", 0, {""} }, // fill this in on ImportOptions()
|
2003-02-22 00:12:45 +00:00
|
|
|
// { "Difficulty\nSelect", 2, {"DDR Extreme", "Normal"} },
|
|
|
|
|
{ "Note\nSkin", 0, {""} }, // fill this in on ImportOptions()
|
2003-02-21 10:05:13 +00:00
|
|
|
{ "How To\nPlay", 2, {"SKIP","SHOW"} },
|
|
|
|
|
{ "Caution", 2, {"SKIP","SHOW"} },
|
2003-02-25 11:20:45 +00:00
|
|
|
{ "Oni Score\nDisplay", 2, {"PERCENT","DANCE POINTS"} },
|
2003-02-21 10:05:13 +00:00
|
|
|
{ "Song\nGroup", 2, {"ALL MUSIC","CHOOSE"} },
|
|
|
|
|
{ "Wheel\nSections", 3, {"NEVER","ALWAYS", "ABC ONLY"} },
|
|
|
|
|
{ "Translations", 2, {"NATIVE","TRANSLITERATE"} },
|
2002-07-11 19:02:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ScreenAppearanceOptions::ScreenAppearanceOptions() :
|
2003-03-09 00:55:49 +00:00
|
|
|
ScreenOptions("ScreenAppearanceOptions",false)
|
2002-07-11 19:02:26 +00:00
|
|
|
{
|
2002-07-31 19:40:40 +00:00
|
|
|
LOG->Trace( "ScreenAppearanceOptions::ScreenAppearanceOptions()" );
|
2002-07-11 19:02:26 +00:00
|
|
|
|
2002-09-10 21:16:34 +00:00
|
|
|
// fill g_InputOptionsLines with explanation text
|
|
|
|
|
for( int i=0; i<NUM_APPEARANCE_OPTIONS_LINES; i++ )
|
|
|
|
|
{
|
|
|
|
|
CString sLineName = g_AppearanceOptionsLines[i].szTitle;
|
|
|
|
|
sLineName.Replace("\n","");
|
|
|
|
|
sLineName.Replace(" ","");
|
|
|
|
|
strcpy( g_AppearanceOptionsLines[i].szExplanation, THEME->GetMetric("ScreenAppearanceOptions",sLineName) );
|
|
|
|
|
}
|
|
|
|
|
|
2002-07-11 19:02:26 +00:00
|
|
|
Init(
|
|
|
|
|
INPUTMODE_BOTH,
|
|
|
|
|
g_AppearanceOptionsLines,
|
2002-09-03 22:31:06 +00:00
|
|
|
NUM_APPEARANCE_OPTIONS_LINES,
|
|
|
|
|
false );
|
2003-03-09 00:55:49 +00:00
|
|
|
m_Menu.m_MenuTimer.SetTimer( 99 );
|
|
|
|
|
m_Menu.m_MenuTimer.StopTimer();
|
2002-08-27 16:53:25 +00:00
|
|
|
|
2003-03-09 00:55:49 +00:00
|
|
|
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","ScreenAppearanceOptions music") );
|
2002-07-11 19:02:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenAppearanceOptions::ImportOptions()
|
|
|
|
|
{
|
2002-07-23 01:41:40 +00:00
|
|
|
//
|
2002-07-11 19:02:26 +00:00
|
|
|
// fill in announcer names
|
2002-07-23 01:41:40 +00:00
|
|
|
//
|
2002-07-11 19:02:26 +00:00
|
|
|
CStringArray arrayAnnouncerNames;
|
|
|
|
|
ANNOUNCER->GetAnnouncerNames( arrayAnnouncerNames );
|
|
|
|
|
|
2002-10-31 02:20:11 +00:00
|
|
|
m_OptionRowData[AO_ANNOUNCER].iNumOptions = arrayAnnouncerNames.size() + 1;
|
|
|
|
|
unsigned i;
|
|
|
|
|
for( i=0; i<arrayAnnouncerNames.size(); i++ )
|
2002-09-04 03:49:08 +00:00
|
|
|
strcpy( m_OptionRowData[AO_ANNOUNCER].szOptionsText[i+1], arrayAnnouncerNames[i] );
|
2002-07-11 19:02:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// highlight currently selected announcer
|
|
|
|
|
m_iSelectedOption[0][AO_ANNOUNCER] = -1;
|
2002-09-04 03:49:08 +00:00
|
|
|
for( i=1; i<m_OptionRowData[AO_ANNOUNCER].iNumOptions; i++ )
|
2002-07-11 19:02:26 +00:00
|
|
|
{
|
2002-09-04 03:49:08 +00:00
|
|
|
if( 0==stricmp(m_OptionRowData[AO_ANNOUNCER].szOptionsText[i], ANNOUNCER->GetCurAnnouncerName()) )
|
2002-07-11 19:02:26 +00:00
|
|
|
{
|
|
|
|
|
m_iSelectedOption[0][AO_ANNOUNCER] = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( m_iSelectedOption[0][AO_ANNOUNCER] == -1 )
|
|
|
|
|
m_iSelectedOption[0][AO_ANNOUNCER] = 0;
|
|
|
|
|
|
|
|
|
|
|
2002-07-23 01:41:40 +00:00
|
|
|
//
|
|
|
|
|
// fill in theme names
|
|
|
|
|
//
|
|
|
|
|
CStringArray arrayThemeNames;
|
2002-07-31 19:40:40 +00:00
|
|
|
THEME->GetThemeNamesForCurGame( arrayThemeNames );
|
2002-07-23 01:41:40 +00:00
|
|
|
|
2002-10-31 02:20:11 +00:00
|
|
|
m_OptionRowData[AO_THEME].iNumOptions = arrayThemeNames.size();
|
2002-07-23 01:41:40 +00:00
|
|
|
|
2002-10-31 02:20:11 +00:00
|
|
|
for( i=0; i<arrayThemeNames.size(); i++ )
|
2002-09-04 03:49:08 +00:00
|
|
|
strcpy( m_OptionRowData[AO_THEME].szOptionsText[i], arrayThemeNames[i] );
|
2002-07-23 01:41:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
// highlight currently selected theme
|
|
|
|
|
m_iSelectedOption[0][AO_THEME] = -1;
|
2002-09-04 03:49:08 +00:00
|
|
|
for( i=0; i<m_OptionRowData[AO_THEME].iNumOptions; i++ )
|
2002-07-23 01:41:40 +00:00
|
|
|
{
|
2002-09-04 03:49:08 +00:00
|
|
|
if( 0==stricmp(m_OptionRowData[AO_THEME].szOptionsText[i], THEME->GetCurThemeName()) )
|
2002-07-23 01:41:40 +00:00
|
|
|
{
|
|
|
|
|
m_iSelectedOption[0][AO_THEME] = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( m_iSelectedOption[0][AO_THEME] == -1 )
|
|
|
|
|
m_iSelectedOption[0][AO_THEME] = 0;
|
|
|
|
|
|
2003-02-22 00:12:45 +00:00
|
|
|
//
|
|
|
|
|
// fill in skin names
|
|
|
|
|
//
|
|
|
|
|
CStringArray arraySkinNames;
|
|
|
|
|
NOTESKIN->GetNoteSkinNames( arraySkinNames );
|
|
|
|
|
|
|
|
|
|
m_OptionRowData[AO_SKIN].iNumOptions = arraySkinNames.size();
|
|
|
|
|
|
|
|
|
|
for( i=0; i<arraySkinNames.size(); i++ )
|
|
|
|
|
strcpy( m_OptionRowData[AO_SKIN].szOptionsText[i], arraySkinNames[i] );
|
|
|
|
|
|
|
|
|
|
// highlight currently selected skin
|
|
|
|
|
m_iSelectedOption[0][AO_SKIN] = -1;
|
|
|
|
|
for( i=0; i<m_OptionRowData[AO_SKIN].iNumOptions; i++ )
|
|
|
|
|
{
|
|
|
|
|
if( 0==stricmp(m_OptionRowData[AO_SKIN].szOptionsText[i], PREFSMAN->m_sDefaultNoteSkin) )
|
|
|
|
|
{
|
|
|
|
|
m_iSelectedOption[0][AO_SKIN] = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( m_iSelectedOption[0][AO_SKIN] == -1 )
|
|
|
|
|
m_iSelectedOption[0][AO_SKIN] = 0;
|
|
|
|
|
|
2003-02-12 00:14:53 +00:00
|
|
|
m_iSelectedOption[0][AO_INSTRUCTIONS] = PREFSMAN->m_bInstructions? 1:0;
|
2002-12-15 10:07:27 +00:00
|
|
|
m_iSelectedOption[0][AO_CAUTION] = PREFSMAN->m_bShowDontDie? 1:0;
|
2003-02-22 00:12:45 +00:00
|
|
|
// m_iSelectedOption[0][AO_DIFF_SELECT] = PREFSMAN->m_bDDRExtremeDifficultySelect? 1:0;
|
2003-02-25 11:20:45 +00:00
|
|
|
m_iSelectedOption[0][AO_DANCE_POINTS_FOR_ONI] = PREFSMAN->m_bDancePointsForOni? 1:0;
|
2002-12-15 10:25:20 +00:00
|
|
|
m_iSelectedOption[0][AO_SELECT_GROUP] = PREFSMAN->m_bShowSelectGroup? 1:0;
|
2003-02-04 03:03:43 +00:00
|
|
|
m_iSelectedOption[0][AO_WHEEL_SECTIONS] = (int)PREFSMAN->m_MusicWheelUsesSections;
|
2003-02-12 00:14:53 +00:00
|
|
|
m_iSelectedOption[0][AO_SHOW_TRANSLATIONS] = PREFSMAN->m_bShowTranslations;
|
2002-07-11 19:02:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenAppearanceOptions::ExportOptions()
|
|
|
|
|
{
|
2002-09-29 17:38:07 +00:00
|
|
|
PREFSMAN->SaveGamePrefsToDisk();
|
|
|
|
|
PREFSMAN->SaveGlobalPrefsToDisk();
|
|
|
|
|
|
2002-07-11 19:02:26 +00:00
|
|
|
int iSelectedAnnouncer = m_iSelectedOption[0][AO_ANNOUNCER];
|
2002-09-04 03:49:08 +00:00
|
|
|
CString sNewAnnouncer = m_OptionRowData[AO_ANNOUNCER].szOptionsText[iSelectedAnnouncer];
|
2002-07-11 19:02:26 +00:00
|
|
|
if( iSelectedAnnouncer == 0 )
|
|
|
|
|
sNewAnnouncer = "";
|
|
|
|
|
ANNOUNCER->SwitchAnnouncer( sNewAnnouncer );
|
|
|
|
|
|
2002-07-23 01:41:40 +00:00
|
|
|
int iSelectedTheme = m_iSelectedOption[0][AO_THEME];
|
2002-09-04 03:49:08 +00:00
|
|
|
CString sNewTheme = m_OptionRowData[AO_THEME].szOptionsText[iSelectedTheme];
|
2002-07-23 01:41:40 +00:00
|
|
|
THEME->SwitchTheme( sNewTheme );
|
|
|
|
|
|
2003-02-22 00:12:45 +00:00
|
|
|
int iSelectedSkin = m_iSelectedOption[0][AO_SKIN];
|
|
|
|
|
CString sNewSkin = m_OptionRowData[AO_SKIN].szOptionsText[iSelectedSkin];
|
|
|
|
|
|
|
|
|
|
PREFSMAN->m_sDefaultNoteSkin = sNewSkin;
|
|
|
|
|
// PREFSMAN->m_bDDRExtremeDifficultySelect = !!m_iSelectedOption[0][AO_DIFF_SELECT];
|
2003-02-21 10:05:13 +00:00
|
|
|
PREFSMAN->m_bInstructions = !!m_iSelectedOption[0][AO_INSTRUCTIONS];
|
|
|
|
|
PREFSMAN->m_bShowDontDie = !!m_iSelectedOption[0][AO_CAUTION];
|
|
|
|
|
PREFSMAN->m_bShowSelectGroup = !!m_iSelectedOption[0][AO_SELECT_GROUP];
|
2003-02-04 03:03:43 +00:00
|
|
|
(int&)PREFSMAN->m_MusicWheelUsesSections = m_iSelectedOption[0][AO_WHEEL_SECTIONS];
|
2003-02-21 10:05:13 +00:00
|
|
|
PREFSMAN->m_bShowTranslations = !!m_iSelectedOption[0][AO_SHOW_TRANSLATIONS];
|
2003-02-25 11:20:45 +00:00
|
|
|
PREFSMAN->m_bDancePointsForOni = !!m_iSelectedOption[0][AO_DANCE_POINTS_FOR_ONI];
|
2002-09-04 22:58:14 +00:00
|
|
|
|
2002-08-13 23:26:46 +00:00
|
|
|
PREFSMAN->SaveGamePrefsToDisk();
|
|
|
|
|
PREFSMAN->SaveGlobalPrefsToDisk();
|
2002-07-11 19:02:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenAppearanceOptions::GoToPrevState()
|
|
|
|
|
{
|
2003-01-31 23:31:35 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenOptionsMenu" );
|
2002-07-11 19:02:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenAppearanceOptions::GoToNextState()
|
|
|
|
|
{
|
2002-07-27 19:29:51 +00:00
|
|
|
PREFSMAN->SaveGamePrefsToDisk();
|
2003-01-31 23:31:35 +00:00
|
|
|
GoToPrevState();
|
2002-07-11 19:02:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|