BM Gametype (no keysounds yet, its just DDR with BM keys :D) + Metricable default scrolling direction support
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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]);
|
||||
|
||||
|
||||
@@ -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; i<NUM_PLAYERS; i++)
|
||||
GAMESTATE->m_PlayerOptions[i].m_bReverseScroll = true;
|
||||
}
|
||||
|
||||
m_ScrollingList.UseSpriteType(BANNERTYPE);
|
||||
m_ScrollingList.SetXY( 0, 0 );
|
||||
m_ScrollingList.SetSpacing( BANNERSPACING );
|
||||
|
||||
@@ -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; i<NUM_PLAYERS; i++)
|
||||
GAMESTATE->m_PlayerOptions[i].m_bReverseScroll = true;
|
||||
}
|
||||
|
||||
|
||||
// update theme metric cache
|
||||
g_fItemSpacingY = ITEM_SPACING_Y;
|
||||
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -104,6 +104,8 @@ const CString CREDIT_LINES[] =
|
||||
"BeMaNiRuler",
|
||||
"DDRLlama",
|
||||
"DDRManiaX",
|
||||
"NMR",
|
||||
"Random Hajile",
|
||||
"Lagged",
|
||||
"The Melting Pot",
|
||||
"DDRJamz Global BBS",
|
||||
|
||||
@@ -90,7 +90,6 @@ ScreenSelectMusic::ScreenSelectMusic()
|
||||
|
||||
CodeDetector::RefreshCacheItems();
|
||||
|
||||
|
||||
int p;
|
||||
|
||||
m_Menu.Load(
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user