From 223556b026cff02b6253623bcadf29ce8bec8e1d Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 10 Sep 2002 21:16:34 +0000 Subject: [PATCH] Added description to ScreenOptions. Making a whole separate ScreenPreferences turned out to be a pain. --- stepmania/TODO.chris | 37 ----------------------- stepmania/Themes/default/metrics.ini | 37 ++++++++++++++++++++++- stepmania/src/ScreenAppearanceOptions.cpp | 13 ++++++-- stepmania/src/ScreenGraphicOptions.cpp | 31 +++++++++++-------- stepmania/src/ScreenInputOptions.cpp | 13 ++++++-- stepmania/src/ScreenMachineOptions.cpp | 14 +++++++++ stepmania/src/ScreenOptions.cpp | 29 +++++++++++++----- stepmania/src/ScreenOptions.h | 3 ++ stepmania/src/ScreenTitleMenu.cpp | 3 +- 9 files changed, 117 insertions(+), 63 deletions(-) diff --git a/stepmania/TODO.chris b/stepmania/TODO.chris index 7f294fb1f0..dd483f4667 100644 --- a/stepmania/TODO.chris +++ b/stepmania/TODO.chris @@ -4,8 +4,6 @@ Fix Ready, here we go closer to start of notes -off center backgrounds - correct songs played show on eval make sure supports music in "Music" folder @@ -14,35 +12,8 @@ supports music folder if aditional dirs "How to Play" explanation with the freeze arrows nearly takes up the entire screen. -KeepAlive doesn't fold during how to play - -"try extra stage" swoop instead of cleared - -Wow! pngcrush takes off 50% on some of these paletted pngs. I'll look into making a script that we can check into CVS and run periodically. - -disable modifiers in extra stage - -the only other thing is to encorporate `...' to replace <...>, and instead turn the <...> as triple jumps or more than 2 arrow jumps. its the new DWI format. - -change "bg change" to show a list - change background change to look for movies in song dir and bganimations in song dir -You're saying that right now the max combo text is being drawn underneath the bonus frame? - - the MAX announcer dosnt say "Extra Stage" anymore -SlinkyWizard30: and there is no "%" sign on Oni - -crash loading bga in Win98 - -editor play and record without set range - -editor intro prompt - -oni-specific comments - -arcade mode - about us page new phpwebhosting account @@ -53,10 +24,6 @@ RMA phone RMA Kiko USB -couples format - -3/5 button options toggle - kitsappt photos slower eval bar tween @@ -65,10 +32,6 @@ max style judge tween add turns to editor -164 theme - -gap between wheel items - sample pop fix screwed up scroll bar diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 8b19d9d33b..c3d5ac4988 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -21,6 +21,7 @@ ColorHard=0.2,1,0.2,1 // light green ChoicesX=320 ChoicesStartY=54 ChoicesSpacingY=42 +ChoicesShadowLength=5 HelpX=320 HelpY=440 LogoX=320 @@ -471,6 +472,9 @@ ItemsStartX=160 ItemsGapX=14 ItemsStartY=88 ItemsSpacingY=34 +ExplanationX=320 +ExplanationY=412 +ExplanationZoom=0.5 ColorSelected=1,1,1,1 // normal ColorNotSelected=0.5,0.5,0.5,1 // grayed HelpText=# $ to change line ! " to select between options then press START @@ -634,4 +638,35 @@ Uppercase=1 SpacingX=38 SpacingY=0 -\ \ No newline at end of file +[ScreenInputOptions] +IgnoreJoyAxes="ON" will cause StepMania to ignore all input from::joystick directional pads. This is useful for people using::the DirectPad Pro driver. +MenuButtons=The default setting allows the dance pad's panels to navigate::the menus. Changing this to "dedicated only" will restrict::menu navigation to only the Menu* set of buttons. Be sure to map::the Menu* set of buttons before setting this to "dedicated"! +AutoPlay=This option is useful for those who would like to play::without using a pad. However, you will not be able to set::high scores or earn extra stages while this options is ON. +BackDelayed=Turning this option ON will require that you hold the Back button::for 0.5 seconds before it will regiser. This is useful if you find::yourself accidentally pressing the Back button on your controller. +OptionsNavigation=When using "SM style", the Start button will take::you to the next screen and Up/Down will switch option lines.::When using "Arcade style", the Start button will move the cursor::to the next line and Up/Down will be ignored. + +[ScreenMachineOptions] +MenuTimer=Turn this "OFF" to disable the time limit in menus. +ShowDanger=Turn this option "OFF" to disable the flashing "Danger"::background that shows when you're about to die. +ArcadeStages=The number of songs a player can play in Arcade mode.::Set this to "Unlimited", and you can continue playing forever.::Also, when this option is set to "Unlimited", failing will take you::back to the the Select Music or Select Course screen. +JudgeDifficulty=Increase this value to cause your steps to be judged more strictly::(i.e. shink the timing window). +LifeDifficulty=Increate this value to cause your life meter to::drain faster and refill slower. +HiddenSongs=Glenn: What exactly does this do? +ShowStats=Display Performance Statistics in the upper right corner::of the screen. FPS = frames per second.::TPF = triangles per frame. DPF = draws per frame. + +[ScreenGraphicOptions] +DisplayMode=Chose whether you would like StepMania to run full screen,::or to display in a window on your desktop +DisplayResolution=Choose the output resolution. A higher resolution::will show more detail, but requires a faster video card. +TextureResolution=Choose the maximum texture resolution. Setting this::to anything below 1024 will cause some textures to appear blurry,::but may increase your frame rate. +RefreshRate=Controls how many times per second the screen will refresh.::This setting only has an effect when the Display Mode::is set to "full screen". +BackgroundMode=Chose what type of backgrounds you would like displayed.::"Animations" uses any random items in the BGAnimations folder.::"Visualizations" chooses a random overlay movie from the Visualization folder.::"Random Movies" cycles through movies in the RandomMovies folder. +BackgroundBrightness=Controls how bright the background will appear.::Turn this setting down if you have a hard time seeing the notes. +MovieDecode=When a movie texture is being used, StepMania will spend this much time::between each frame to decode the next frame of the movie. If your frame rate::is high but movie texures skip, then increase this value. +BGForBanner=Instead of displaying the banner image in menus, display::the song background instead. Backgrounds can look better::than banners because they are higher resolution, but they::will take longer to load and may result in some "skipping". +WaitForVsync=Wait for the monitor's vertical retrace before displaying::the next frame. This option only has an effect when the::Display Mode is set to "full screen". Turning this option off will not::cap your frame rate to the refresh rate, but may result in "tearing". + +[ScreenAppearanceOptions] +Announcer=Choose from this list of installed annoucner packs.::For more information about creating announcer packs, see the README. +Theme=Choose from this list of installed theme packs.::For more information about creating theme packs, see the README. +NoteSkin=Choose from this list of installed note skins.::For more information about creating a note skin, see the README. +HowToPlay=Toggle whether the How To Play screen is shown. \ No newline at end of file diff --git a/stepmania/src/ScreenAppearanceOptions.cpp b/stepmania/src/ScreenAppearanceOptions.cpp index c71c834feb..c33d3b76bd 100644 --- a/stepmania/src/ScreenAppearanceOptions.cpp +++ b/stepmania/src/ScreenAppearanceOptions.cpp @@ -35,10 +35,10 @@ enum { }; OptionRowData g_AppearanceOptionsLines[NUM_APPEARANCE_OPTIONS_LINES] = { - { "Announ\n-cer", 1, {"OFF"} }, // fill this in on ImportOptions() + { "Announcer", 1, {"OFF"} }, // fill this in on ImportOptions() { "Theme", 0, {""} }, // fill this in on ImportOptions() { "Note\nSkin", 0, {""} }, // fill this in on ImportOptions() - { "How To\nPlay", 2, {"OFF","ON"} }, + { "How To\nPlay", 2, {"SKIP","SHOW"} }, }; ScreenAppearanceOptions::ScreenAppearanceOptions() : @@ -50,6 +50,15 @@ ScreenAppearanceOptions::ScreenAppearanceOptions() : { LOG->Trace( "ScreenAppearanceOptions::ScreenAppearanceOptions()" ); + // fill g_InputOptionsLines with explanation text + for( int i=0; iGetMetric("ScreenAppearanceOptions",sLineName) ); + } + Init( INPUTMODE_BOTH, g_AppearanceOptionsLines, diff --git a/stepmania/src/ScreenGraphicOptions.cpp b/stepmania/src/ScreenGraphicOptions.cpp index 944ce87dcf..6e086edb02 100644 --- a/stepmania/src/ScreenGraphicOptions.cpp +++ b/stepmania/src/ScreenGraphicOptions.cpp @@ -28,7 +28,6 @@ enum { GO_DISPLAY_RESOLUTION, GO_TEXTURE_RESOLUTION, GO_REFRESH_RATE, - GO_SHOWSTATS, GO_BGMODE, GO_BGBRIGHTNESS, GO_MOVIEDECODEMS, @@ -37,16 +36,15 @@ enum { NUM_GRAPHIC_OPTIONS_LINES }; OptionRowData g_GraphicOptionsLines[NUM_GRAPHIC_OPTIONS_LINES] = { - { "Display", 2, {"FULLSCREEN", "WINDOWED"} }, - { "Display\nRes", 7, {"320","400","512","640","800","1024","1280"} }, - { "Texture\nRes", 3, {"256","512","1024"} }, - { "Refresh\nRate", 11, {"DEFAULT","MAX","60","70","72","75","80","85","90","100","120"} }, - { "Show\nStats", 2, {"OFF","ON"} }, - { "BG\nMode", 4, {"OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES"} }, - { "BG\nBrightness", 11, {"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"} }, - { "Movie\nDecode", 4, {"1ms","2ms","3ms","4ms"} }, - { "BG For\nBanner", 2, {"NO", "YES (slow)"} }, - { "Wait for\nVsync",2, {"NO", "YES"} }, + { "Display\nMode", 2, {"FULLSCREEN", "WINDOWED"} }, + { "Display\nResolution", 7, {"320","400","512","640","800","1024","1280"} }, + { "Texture\nResolution", 3, {"256","512","1024"} }, + { "Refresh\nRate", 11, {"DEFAULT","MAX","60","70","72","75","80","85","90","100","120"} }, + { "Background\nMode", 4, {"OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES"} }, + { "Background\nBrightness", 11, {"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"} }, + { "Movie\nDecode", 4, {"1ms","2ms","3ms","4ms"} }, + { "BG For\nBanner", 2, {"NO", "YES (slow)"} }, + { "Wait For\nVsync", 2, {"NO", "YES"} }, }; static const int HorizRes[] = { @@ -65,6 +63,15 @@ ScreenGraphicOptions::ScreenGraphicOptions() : { LOG->Trace( "ScreenGraphicOptions::ScreenGraphicOptions()" ); + // fill g_InputOptionsLines with explanation text + for( int i=0; iGetMetric("ScreenGraphicOptions",sLineName) ); + } + Init( INPUTMODE_BOTH, g_GraphicOptionsLines, @@ -168,7 +175,6 @@ void ScreenGraphicOptions::ImportOptions() default: m_iSelectedOption[0][GO_REFRESH_RATE] = 1; break; } - m_iSelectedOption[0][GO_SHOWSTATS] = PREFSMAN->m_bShowStats ? 1:0; m_iSelectedOption[0][GO_BGMODE] = PREFSMAN->m_BackgroundMode; m_iSelectedOption[0][GO_BGBRIGHTNESS] = roundf( PREFSMAN->m_fBGBrightness*10 ); m_iSelectedOption[0][GO_MOVIEDECODEMS] = PREFSMAN->m_iMovieDecodeMS-1; @@ -211,7 +217,6 @@ void ScreenGraphicOptions::ExportOptions() default: ASSERT(0); PREFSMAN->m_iRefreshRate = 0; break; } - PREFSMAN->m_bShowStats = m_iSelectedOption[0][GO_SHOWSTATS] == 1; PREFSMAN->m_BackgroundMode = PrefsManager::BackgroundMode( m_iSelectedOption[0][GO_BGMODE] ); PREFSMAN->m_fBGBrightness = m_iSelectedOption[0][GO_BGBRIGHTNESS] / 10.0f; PREFSMAN->m_iMovieDecodeMS = m_iSelectedOption[0][GO_MOVIEDECODEMS]+1; diff --git a/stepmania/src/ScreenInputOptions.cpp b/stepmania/src/ScreenInputOptions.cpp index 3fe2857873..d29e085fd6 100644 --- a/stepmania/src/ScreenInputOptions.cpp +++ b/stepmania/src/ScreenInputOptions.cpp @@ -22,7 +22,6 @@ #include "RageLog.h" - enum { IO_IGNORE_AXES = 0, IO_DEDICATED_MENU_BUTTONS, @@ -31,10 +30,11 @@ enum { IO_OPTIONS_NAVIGATION, NUM_INPUT_OPTIONS_LINES }; + /* Hmm. Ignore JoyAxes and Back Delayed probably belong in "input options", * preferably alongside button configuration. */ OptionRowData g_InputOptionsLines[NUM_INPUT_OPTIONS_LINES] = { - { "Ignore\nJoyAxes", 2, {"OFF","ON (for NTPad or DirectPad)"} }, + { "Ignore\nJoy Axes", 2, {"OFF","ON (for NTPad or DirectPad)"} }, { "Menu\nButtons", 2, {"USE GAMEPLAY BUTTONS","ONLY DEDICATED BUTTONS"} }, { "AutoPlay", 2, {"OFF","ON"} }, { "Back\nDelayed", 2, {"INSTANT","HOLD"} }, @@ -50,6 +50,15 @@ ScreenInputOptions::ScreenInputOptions() : { LOG->Trace( "ScreenInputOptions::ScreenInputOptions()" ); + // fill g_InputOptionsLines with explanation text + for( int i=0; iGetMetric("ScreenInputOptions",sLineName) ); + } + Init( INPUTMODE_BOTH, g_InputOptionsLines, diff --git a/stepmania/src/ScreenMachineOptions.cpp b/stepmania/src/ScreenMachineOptions.cpp index 8480099986..5b7a85ba64 100644 --- a/stepmania/src/ScreenMachineOptions.cpp +++ b/stepmania/src/ScreenMachineOptions.cpp @@ -30,6 +30,7 @@ enum { MO_JUDGE_DIFFICULTY, MO_LIFE_DIFFICULTY, MO_HIDDEN_SONGS, + MO_SHOWSTATS, NUM_MACHINE_OPTIONS_LINES }; /* Hmm. Ignore JoyAxes and Back Delayed probably belong in "input options", @@ -41,6 +42,7 @@ OptionRowData g_MachineOptionsLines[NUM_MACHINE_OPTIONS_LINES] = { { "Judge\nDifficulty", 8, {"1","2","3","4","5","6","7","8"} }, { "Life\nDifficulty", 7, {"1","2","3","4","5","6","7"} }, { "Hidden\nSongs", 2, {"OFF","ON"} }, + { "Show\nStats", 2, {"OFF","ON"} }, }; ScreenMachineOptions::ScreenMachineOptions() : @@ -52,6 +54,15 @@ ScreenMachineOptions::ScreenMachineOptions() : { LOG->Trace( "ScreenMachineOptions::ScreenMachineOptions()" ); + // fill g_InputOptionsLines with explanation text + for( int i=0; iGetMetric("ScreenMachineOptions",sLineName) ); + } + Init( INPUTMODE_BOTH, g_MachineOptionsLines, @@ -96,6 +107,8 @@ void ScreenMachineOptions::ImportOptions() else if( PREFSMAN->m_fLifeDifficultyScale == 0.60f ) m_iSelectedOption[0][MO_LIFE_DIFFICULTY] = 5; else if( PREFSMAN->m_fLifeDifficultyScale == 0.40f ) m_iSelectedOption[0][MO_LIFE_DIFFICULTY] = 6; else m_iSelectedOption[0][MO_LIFE_DIFFICULTY] = 3; + + m_iSelectedOption[0][MO_SHOWSTATS] = PREFSMAN->m_bShowStats ? 1:0; } void ScreenMachineOptions::ExportOptions() @@ -132,6 +145,7 @@ void ScreenMachineOptions::ExportOptions() default: ASSERT(0); } + PREFSMAN->m_bShowStats = m_iSelectedOption[0][MO_SHOWSTATS] == 1; } void ScreenMachineOptions::GoToPrevState() diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 7d3c56b39c..02181e5af7 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -31,6 +31,9 @@ #define ITEMS_GAP_X THEME->GetMetricF("ScreenOptions","ItemsGapX") #define ITEMS_START_Y THEME->GetMetricF("ScreenOptions","ItemsStartY") #define ITEMS_SPACING_Y THEME->GetMetricF("ScreenOptions","ItemsSpacingY") +#define EXPLANATION_X THEME->GetMetricF("ScreenOptions","ExplanationX") +#define EXPLANATION_Y THEME->GetMetricF("ScreenOptions","ExplanationY") +#define EXPLANATION_ZOOM THEME->GetMetricF("ScreenOptions","ExplanationZoom") #define HELP_TEXT THEME->GetMetric("ScreenOptions","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenOptions","TimerSeconds") #define COLOR_SELECTED THEME->GetMetricC("ScreenOptions","ColorSelected") @@ -66,7 +69,6 @@ ScreenOptions::ScreenOptions( CString sBackgroundPath, CString sPagePath, CStrin m_sprPage.SetXY( CENTER_X, CENTER_Y ); m_framePage.AddChild( &m_sprPage ); - for( int p=0; pGetPathTo("Fonts","options explanation") ); + m_textExplanation.SetXY( EXPLANATION_X, EXPLANATION_Y ); + m_textExplanation.SetZoom( EXPLANATION_ZOOM ); + m_textExplanation.SetShadowLength( 2 ); + m_framePage.AddChild( &m_textExplanation ); + InitOptionsText(); PositionUnderlines(); @@ -144,12 +153,12 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRowData[], int iNumO RefreshIcons(); PositionCursors(); UpdateEnabledDisabled(); + OnChange(); } ScreenOptions::~ScreenOptions() { LOG->Trace( "ScreenOptions::~ScreenOptions()" ); - } @@ -363,12 +372,12 @@ void ScreenOptions::UpdateEnabledDisabled() m_textOptions[i][j].SetDiffuse( bThisRowIsSelected ? colorSelected : colorNotSelected ); } - bool bThisRowIsSelected = false; + bool bThisRowIsSelectedByBoth = true; for( int p=0; pIsPlayerEnabled(p) && m_iCurrentRow[p] == i ) - bThisRowIsSelected = true; - m_textOptions[i][0].SetDiffuse( bThisRowIsSelected ? colorSelected : colorNotSelected ); - if( bThisRowIsSelected ) + if( GAMESTATE->IsPlayerEnabled(p) && m_iCurrentRow[p] != i ) + bThisRowIsSelectedByBoth = false; + m_textOptions[i][0].SetDiffuse( bThisRowIsSelectedByBoth ? colorNotSelected : colorSelected ); + if( bThisRowIsSelectedByBoth ) m_textOptions[i][0].SetEffectCamelion( 2.5, colorSelected, colorNotSelected ); else m_textOptions[i][0].SetEffectNone(); @@ -430,6 +439,12 @@ void ScreenOptions::OnChange() PositionUnderlines(); RefreshIcons(); UpdateEnabledDisabled(); + + int iCurRow = m_iCurrentRow[PLAYER_1]; + if( iCurRow < m_iNumOptionRows ) + m_textExplanation.SetText( m_OptionRowData[iCurRow].szExplanation ); + else + m_textExplanation.SetText( "" ); } diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index 4328baaea5..d0035e9542 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -31,6 +31,7 @@ struct OptionRowData { char szTitle[30]; int iNumOptions; char szOptionsText[MAX_OPTIONS_PER_LINE][60]; + char szExplanation[2048]; }; enum InputMode @@ -102,6 +103,8 @@ protected: OptionIcon m_OptionIcons[NUM_PLAYERS][MAX_OPTION_LINES]; OptionsCursor m_Highlight[NUM_PLAYERS]; + BitmapText m_textExplanation; + RageSoundSample m_SoundChangeCol; RageSoundSample m_SoundNextRow; RageSoundSample m_SoundPrevRow; diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index a9b07817a6..42dcc9f5e2 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -38,6 +38,7 @@ const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = { #define CHOICES_X THEME->GetMetricF("ScreenTitleMenu","ChoicesX") #define CHOICES_START_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesStartY") #define CHOICES_SPACING_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesSpacingY") +#define CHOICES_SHADOW_LENGTH THEME->GetMetricF("ScreenTitleMenu","ChoicesShadowLength") #define HELP_X THEME->GetMetricF("ScreenTitleMenu","HelpX") #define HELP_Y THEME->GetMetricF("ScreenTitleMenu","HelpY") #define LOGO_X THEME->GetMetricF("ScreenTitleMenu","LogoX") @@ -144,7 +145,7 @@ ScreenTitleMenu::ScreenTitleMenu() m_textChoice[i].LoadFromFont( THEME->GetPathTo("Fonts","titlemenu") ); m_textChoice[i].SetText( CHOICE_TEXT[i] ); m_textChoice[i].SetXY( CHOICES_X, CHOICES_START_Y + i*CHOICES_SPACING_Y ); - m_textChoice[i].SetShadowLength( 5 ); + m_textChoice[i].SetShadowLength( CHOICES_SHADOW_LENGTH ); this->AddChild( &m_textChoice[i] ); }