From 9941c7c3bbd3c3f8358b83fb634bc837f6574d03 Mon Sep 17 00:00:00 2001 From: Andrew Livy Date: Wed, 1 Jan 2003 17:20:36 +0000 Subject: [PATCH] BM Gametype (no keysounds yet, its just DDR with BM keys :D) + Metricable default scrolling direction support --- stepmania/Themes/default/metrics.ini | 1 + stepmania/src/Game.h | 1 + stepmania/src/GameConstantsAndTypes.h | 1 + stepmania/src/GameInput.h | 17 +++ stepmania/src/GameManager.cpp | 143 ++++++++++++++++++++++++- stepmania/src/MusicBannerWheel.cpp | 8 ++ stepmania/src/MusicWheel.cpp | 9 +- stepmania/src/ScreenEz2SelectMusic.cpp | 2 + stepmania/src/ScreenMusicScroll.cpp | 2 + stepmania/src/ScreenSelectMusic.cpp | 1 - stepmania/src/ScreenTitleMenu.cpp | 1 + stepmania/src/Style.h | 3 + 12 files changed, 184 insertions(+), 5 deletions(-) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 294b48d78e..6a69cd4e58 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 ColorSHard=0.8,0.2,1.0,1 // purple ColorChallenge=0.2,0.6,1.0,1 // blue ColorBattle=1,0,0,1 // red +DefaultScrollDirection=0 [ScreenTitleMenu] ChoicesX=320 diff --git a/stepmania/src/Game.h b/stepmania/src/Game.h index 983544b24b..9fdcb7af6b 100644 --- a/stepmania/src/Game.h +++ b/stepmania/src/Game.h @@ -18,6 +18,7 @@ enum Game GAME_EZ2, // Ez2dancer GAME_PARA, // ParaPAraParadise GAME_DS3DDX, // Dance Station 3DDX. + GAME_BM, // Beatmania NUM_GAMES, // leave this at the end GAME_INVALID, }; diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 52c39e0486..dc2e0ab0c1 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -76,6 +76,7 @@ enum NotesType NOTES_TYPE_EZ2_REAL, NOTES_TYPE_PARA_SINGLE, NOTES_TYPE_DS3DDX_SINGLE, + NOTES_TYPE_BM_SINGLE, NUM_NOTES_TYPES, // leave this at the end NOTES_TYPE_INVALID, }; diff --git a/stepmania/src/GameInput.h b/stepmania/src/GameInput.h index fd0fcea414..4808329ae8 100644 --- a/stepmania/src/GameInput.h +++ b/stepmania/src/GameInput.h @@ -106,6 +106,23 @@ enum // 3DDX Buttons NUM_DS3DDX_BUTTONS, // leave this at the end. }; +enum // BM Buttons +{ + BM_BUTTON_LEFTWHITE, + BM_BUTTON_LEFTBLACK, + BM_BUTTON_CENTERWHITE, + BM_BUTTON_RIGHTBLACK, + BM_BUTTON_RIGHTWHITE, + BM_BUTTON_SCRATCH, + BM_BUTTON_START, + BM_BUTTON_BACK, + BM_BUTTON_MENULEFT, + BM_BUTTON_MENURIGHT, + BM_BUTTON_MENUUP, + BM_BUTTON_MENUDOWN, + NUM_BM_BUTTONS, // leave this at the end. +}; + const GameButton MAX_GAME_BUTTONS = 14; const GameButton GAME_BUTTON_INVALID = MAX_GAME_BUTTONS+1; diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index 23201b2430..0d42b49c2b 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -33,7 +33,8 @@ const int PUMP_COL_SPACING = 50; const int EZ2_COL_SPACING = 46; const int EZ2_REAL_COL_SPACING = 40; const int PARA_COL_SPACING = 54; -const int DS3DDX_COL_SPACING = 54; +const int DS3DDX_COL_SPACING = 46; +const int BM_COL_SPACING=34; struct { char *name; @@ -50,7 +51,8 @@ struct { { "ez2-double", 10 }, // Double: Single x2 { "ez2-real", 7 }, // Real: TL,LHH,LHL,D,RHL,RHH,TR { "para-single", 5 }, - { "ds3ddx-single", 8 } + { "ds3ddx-single", 8 }, + { "bm-single", 6 } }; // @@ -462,6 +464,86 @@ GameDef g_GameDefs[NUM_GAMES] = }, } }, + { // GAME_BM + "bm", // m_szName + "BeatMania", // m_szDescription + 2, // m_iNumControllers + NUM_BM_BUTTONS, // m_iButtonsPerController + { // m_szButtonNames + "LeftWhiteKey", + "LeftBlackKey", + "CenterWhiteKey", + "RightBlackKey", + "RightWhiteKey", + "Scratch", + "Start", + "Back", + "MenuLeft", + "MenuRight", + "MenuUp", + "MenuDown", + }, + { // m_szSecondaryFunction + "(MenuUp)", + "(MenuLeft)", + "(Start)", + "(MenuRight)", + "(MenuDown)", + "", + "(dedicated)", + "(dedicated)", + "(dedicated)", + "(dedicated)", + "(dedicated)", + "(dedicated)", + }, + { // m_DedicatedMenuButton + BM_BUTTON_MENULEFT, // MENU_BUTTON_LEFT + BM_BUTTON_MENURIGHT, // MENU_BUTTON_RIGHT + BM_BUTTON_MENUUP, // MENU_BUTTON_UP + BM_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN + BM_BUTTON_START, // MENU_BUTTON_START + BM_BUTTON_BACK, // MENU_BUTTON_BACK + }, + { // m_SecondaryMenuButton + BM_BUTTON_LEFTBLACK, // MENU_BUTTON_LEFT + BM_BUTTON_RIGHTBLACK, // MENU_BUTTON_RIGHT + BM_BUTTON_LEFTWHITE, // MENU_BUTTON_UP + BM_BUTTON_RIGHTWHITE, // MENU_BUTTON_DOWN + BM_BUTTON_CENTERWHITE, // MENU_BUTTON_START + BM_BUTTON_BACK, // MENU_BUTTON_BACK + }, + { // m_iDefaultKeyboardKey + { // PLAYER_1 + SDLK_z, // BM_BUTTON_LEFTWHITE, + SDLK_s, // BM_BUTTON_LEFTBLACK, + SDLK_x, // BM_BUTTON_CENTERWHITE, + SDLK_d, // BM_BUTTON_RIGHTBLACK, + SDLK_c, // BM_BUTTON_RIGHTWHITE, + SDLK_b, // BM_BUTTON_SCRATCH, + SDLK_RETURN, // BM_BUTTON_START, + SDLK_ESCAPE, // BM_BUTTON_BACK, + SDLK_LEFT, // BM_BUTTON_MENULEFT + SDLK_RIGHT, // BM_BUTTON_MENURIGHT + SDLK_UP, // BM_BUTTON_MENUUP + SDLK_DOWN, // BM_BUTTON_MENUDOWN + }, + { // PLAYER_2 + -1, // BM_BUTTON_LEFTWHITE, + -1, // BM_BUTTON_LEFTBLACK, + -1, // BM_BUTTON_CENTERWHITE, + -1, // BM_BUTTON_RIGHTBLACK, + -1, // BM_BUTTON_RIGHTWHITE, + -1, // BM_BUTTON_SCRATCH, + -1, // BM_BUTTON_START, + -1, // BM_BUTTON_BACK, + -1, // BM_BUTTON_MENULEFT + -1, // BM_BUTTON_MENURIGHT + -1, // BM_BUTTON_MENUUP + -1, // BM_BUTTON_MENUDOWN + }, + } + }, }; StyleDef g_StyleDefs[NUM_STYLES] = @@ -1035,7 +1117,7 @@ StyleDef g_StyleDefs[NUM_STYLES] = "single", // m_szName NOTES_TYPE_DS3DDX_SINGLE, // m_NotesType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType - { 320, 320 }, // m_iCenterX + { 160, 480 }, // m_iCenterX 8, // m_iColsPerPlayer { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; { // PLAYER_1 @@ -1062,6 +1144,37 @@ StyleDef g_StyleDefs[NUM_STYLES] = { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; 0,1,2,3,4,5,6,7 }, + }, + { + GAME_BM, // m_Game + true, // m_bUsedForGameplay + true, // m_bUsedForEdit + "BM-single", // m_szName + NOTES_TYPE_BM_SINGLE, // m_NotesType + StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType + { 160, 480 }, // m_iCenterX + 6, // m_iColsPerPlayer + { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; + { // PLAYER_1 + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_LEFTWHITE, -BM_COL_SPACING*2.5f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_LEFTBLACK, -BM_COL_SPACING*1.5f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_CENTERWHITE, -BM_COL_SPACING*0.5f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_RIGHTBLACK, +BM_COL_SPACING*0.5f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_RIGHTWHITE, +BM_COL_SPACING*1.5f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_SCRATCH, +BM_COL_SPACING*3.0f }, + }, + { // PLAYER_2 + { TRACK_1, GAME_CONTROLLER_2, BM_BUTTON_LEFTWHITE, -BM_COL_SPACING*2.5f }, + { TRACK_2, GAME_CONTROLLER_2, BM_BUTTON_LEFTBLACK, -BM_COL_SPACING*1.5f }, + { TRACK_3, GAME_CONTROLLER_2, BM_BUTTON_CENTERWHITE, -BM_COL_SPACING*0.5f }, + { TRACK_4, GAME_CONTROLLER_2, BM_BUTTON_RIGHTBLACK, +BM_COL_SPACING*0.5f }, + { TRACK_5, GAME_CONTROLLER_2, BM_BUTTON_RIGHTWHITE, +BM_COL_SPACING*1.5f }, + { TRACK_6, GAME_CONTROLLER_2, BM_BUTTON_SCRATCH, +BM_COL_SPACING*3.0f }, + }, + }, + { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; + 0,1,2,3,4,5 + }, } }; @@ -1300,6 +1413,30 @@ ModeChoice g_ModeChoices[] = "power2", 1 }, + { + GAME_BM, + PLAY_MODE_ARCADE, + STYLE_BM_SINGLE, + DIFFICULTY_EASY, + "beginner", + 1 + }, + { + GAME_BM, + PLAY_MODE_ARCADE, + STYLE_BM_SINGLE, + DIFFICULTY_MEDIUM, + "normal", + 1 + }, + { + GAME_BM, + PLAY_MODE_ARCADE, + STYLE_BM_SINGLE, + DIFFICULTY_HARD, + "expert", + 1 + }, }; const int NUM_MODE_CHOICES = sizeof(g_ModeChoices) / sizeof(g_ModeChoices[0]); diff --git a/stepmania/src/MusicBannerWheel.cpp b/stepmania/src/MusicBannerWheel.cpp index d0c1f13ff1..af2057b9c5 100644 --- a/stepmania/src/MusicBannerWheel.cpp +++ b/stepmania/src/MusicBannerWheel.cpp @@ -23,6 +23,8 @@ #define MAXSONGSINBUFFER 5 #define BANNERTYPE 1 +#define DEFAULT_SCROLL_DIRECTION THEME->GetMetricI("Notes","DefaultScrollDirection") + MusicBannerWheel::MusicBannerWheel() { currentPos=0; @@ -30,6 +32,12 @@ MusicBannerWheel::MusicBannerWheel() SongsExist=0; SingleLoad=0; + if(DEFAULT_SCROLL_DIRECTION && GAMESTATE->m_pCurSong == NULL) /* check the song is null... incase they have just come back from a song and changed their PlayerOptions */ + { + for(int i=0; im_PlayerOptions[i].m_bReverseScroll = true; + } + m_ScrollingList.UseSpriteType(BANNERTYPE); m_ScrollingList.SetXY( 0, 0 ); m_ScrollingList.SetSpacing( BANNERSPACING ); diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index e21b2cd812..950c6e0944 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -34,7 +34,7 @@ #define COURSE_X THEME->GetMetricF("WheelItemDisplay","CourseX") #define COURSE_ZOOM THEME->GetMetricF("WheelItemDisplay","CourseZoom") #define GRADE_X( p ) THEME->GetMetricF("WheelItemDisplay",ssprintf("GradeP%dX",p+1)) - +#define DEFAULT_SCROLL_DIRECTION THEME->GetMetricI("Notes","DefaultScrollDirection") // MusicWheel stuff #define FADE_SECONDS THEME->GetMetricF("MusicWheel","FadeSeconds") @@ -282,6 +282,13 @@ MusicWheel::MusicWheel() LOG->Trace( "MusicWheel::MusicWheel()" ); + if(DEFAULT_SCROLL_DIRECTION && GAMESTATE->m_pCurSong == NULL) /* check the song is null... incase they have just come back from a song and changed their PlayerOptions */ + { + for(int i=0; im_PlayerOptions[i].m_bReverseScroll = true; + } + + // update theme metric cache g_fItemSpacingY = ITEM_SPACING_Y; diff --git a/stepmania/src/ScreenEz2SelectMusic.cpp b/stepmania/src/ScreenEz2SelectMusic.cpp index 78276c13ff..991cdf947d 100644 --- a/stepmania/src/ScreenEz2SelectMusic.cpp +++ b/stepmania/src/ScreenEz2SelectMusic.cpp @@ -50,6 +50,8 @@ ScreenEz2SelectMusic::ScreenEz2SelectMusic() { i_ErrorDetected=0; CodeDetector::RefreshCacheItems(); + + m_Menu.Load( THEME->GetPathTo("BGAnimations","select music"), THEME->GetPathTo("Graphics","select music top edge"), diff --git a/stepmania/src/ScreenMusicScroll.cpp b/stepmania/src/ScreenMusicScroll.cpp index 00ecf845b0..73c995f4e8 100644 --- a/stepmania/src/ScreenMusicScroll.cpp +++ b/stepmania/src/ScreenMusicScroll.cpp @@ -104,6 +104,8 @@ const CString CREDIT_LINES[] = "BeMaNiRuler", "DDRLlama", "DDRManiaX", + "NMR", + "Random Hajile", "Lagged", "The Melting Pot", "DDRJamz Global BBS", diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 51a7ab3e13..6c7f65a851 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -90,7 +90,6 @@ ScreenSelectMusic::ScreenSelectMusic() CodeDetector::RefreshCacheItems(); - int p; m_Menu.Load( diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 96c2a94359..629cc1bbda 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -248,6 +248,7 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM ) case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break; case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break; case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break; + case GAME_BM: GAMESTATE->m_CurStyle = STYLE_BM_SINGLE; break; default: ASSERT(0); } diff --git a/stepmania/src/Style.h b/stepmania/src/Style.h index 3920c67744..cefcd84975 100644 --- a/stepmania/src/Style.h +++ b/stepmania/src/Style.h @@ -31,6 +31,7 @@ enum Style STYLE_EZ2_DOUBLE, STYLE_PARA_SINGLE, STYLE_DS3DDX_SINGLE, + STYLE_BM_SINGLE, NUM_STYLES, // leave this at the end STYLE_NONE, }; @@ -40,6 +41,7 @@ const int NUM_PUMP_STYLES = 5; const int NUM_EZ2_STYLES = 5; const int NUM_PARA_STYLES = 1; const int NUM_DS3DDX_STYLES = 1; +const int NUM_BM_STYLES = 1; // Ugh. This is needed for the style icon. // TODO: Find a more elegant way to handle this @@ -53,6 +55,7 @@ inline int GetStyleIndexRelativeToGame( int iGameIndex, Style style ) case 2: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES; break; // ez2 case 3: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES; break; // para case 4: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES+NUM_PARA_STYLES; break; // ds3ddx + case 5: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES+NUM_PARA_STYLES+NUM_DS3DDX_STYLES; break; // bm default: ASSERT(0); // invalid game index } return iStyleIndex;