Use constructors for input types instead of initialization lists to get rid of weird iterating and end markers. Allow joystick automappings from file (Data/AutoMappings/) so that a recompile is not necessary to a new controller.

This commit is contained in:
Chris Danford
2008-04-25 05:58:52 +00:00
parent c13a36e948
commit 68756648bd
4 changed files with 903 additions and 751 deletions
@@ -0,0 +1,28 @@
[AutoMapping]
;Intentional space at the end of the Device name
DeviceRegex=GamePad Pro USB
Description=GamePad Pro USB
[dance]
Controller1_Back=Joy1_B9
Controller1_Down=Joy1_Down1:Joy1_B2
Controller1_Left=Joy1_Left1:Joy1_B1
Controller1_Right=Joy1_Right1:Joy1_B3
Controller1_Start=Joy1_B10
Controller1_Up=Joy1_Up1:Joy1_B4
Controller1_UpLeft=Joy1_B5
Controller1_UpRight=Joy1_B6
[pump]
Controller1_Back=Joy1_B9
Controller1_Center=Joy1_B1
Controller1_DownLeft=Joy1_B7
Controller1_DownRight=Joy1_B8
Controller1_MenuDown=Joy1_Down1
Controller1_MenuLeft=Joy1_Left1
Controller1_MenuRight=Joy1_Right1
Controller1_MenuUp=Joy1_Up1
Controller1_Start=Joy1_B10
Controller1_UpLeft=Joy1_B5
Controller1_UpRight=Joy1_B6
+170 -160
View File
@@ -77,28 +77,29 @@ static const StepsTypeInfo g_StepsTypeInfos[] = {
//
// Important: Every game must define the buttons: "Start", "Back", "MenuLeft", "Operator" and "MenuRight"
//
const InputMapping g_AutoKeyMappings_Dance[] =
{
{ 0, KEY_DEL, GAME_BUTTON_MENULEFT, false },
{ 0, KEY_PGDN, GAME_BUTTON_MENURIGHT, false },
{ 0, KEY_HOME, GAME_BUTTON_MENUUP, false },
{ 0, KEY_END, GAME_BUTTON_MENUDOWN, false },
{ 0, KEY_LEFT, DANCE_BUTTON_LEFT, false },
{ 0, KEY_RIGHT, DANCE_BUTTON_RIGHT, false },
{ 0, KEY_UP, DANCE_BUTTON_UP, false },
{ 0, KEY_DOWN, DANCE_BUTTON_DOWN, false },
{ 0, KEY_KP_SLASH, GAME_BUTTON_MENULEFT, true },
{ 0, KEY_KP_ASTERISK, GAME_BUTTON_MENURIGHT, true },
{ 0, KEY_KP_HYPHEN, GAME_BUTTON_MENUUP, true },
{ 0, KEY_KP_PLUS, GAME_BUTTON_MENUDOWN, true },
{ 0, KEY_KP_C4, DANCE_BUTTON_LEFT, true },
{ 0, KEY_KP_C6, DANCE_BUTTON_RIGHT, true },
{ 0, KEY_KP_C7, DANCE_BUTTON_UP, true },
{ 0, KEY_KP_C9, DANCE_BUTTON_DOWN, true },
{ 0, KEY_KP_C7, DANCE_BUTTON_UPLEFT, true },
{ 0, KEY_KP_C9, DANCE_BUTTON_UPRIGHT, true },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Dance = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_DEL, GAME_BUTTON_MENULEFT, false ),
AutoMappingEntry( 0, KEY_PGDN, GAME_BUTTON_MENURIGHT, false ),
AutoMappingEntry( 0, KEY_HOME, GAME_BUTTON_MENUUP, false ),
AutoMappingEntry( 0, KEY_END, GAME_BUTTON_MENUDOWN, false ),
AutoMappingEntry( 0, KEY_LEFT, DANCE_BUTTON_LEFT, false ),
AutoMappingEntry( 0, KEY_RIGHT, DANCE_BUTTON_RIGHT, false ),
AutoMappingEntry( 0, KEY_UP, DANCE_BUTTON_UP, false ),
AutoMappingEntry( 0, KEY_DOWN, DANCE_BUTTON_DOWN, false ),
AutoMappingEntry( 0, KEY_KP_SLASH, GAME_BUTTON_MENULEFT, true ),
AutoMappingEntry( 0, KEY_KP_ASTERISK, GAME_BUTTON_MENURIGHT, true ),
AutoMappingEntry( 0, KEY_KP_HYPHEN, GAME_BUTTON_MENUUP, true ),
AutoMappingEntry( 0, KEY_KP_PLUS, GAME_BUTTON_MENUDOWN, true ),
AutoMappingEntry( 0, KEY_KP_C4, DANCE_BUTTON_LEFT, true ),
AutoMappingEntry( 0, KEY_KP_C6, DANCE_BUTTON_RIGHT, true ),
AutoMappingEntry( 0, KEY_KP_C7, DANCE_BUTTON_UP, true ),
AutoMappingEntry( 0, KEY_KP_C9, DANCE_BUTTON_DOWN, true ),
AutoMappingEntry( 0, KEY_KP_C7, DANCE_BUTTON_UPLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C9, DANCE_BUTTON_UPRIGHT, true )
);
static const int DANCE_COL_SPACING = 64;
@@ -450,7 +451,7 @@ static const Game g_Game_Dance =
{ "UpLeft", GameButton_Invalid },
{ "UpRight", GameButton_Invalid },
},
g_AutoKeyMappings_Dance
&g_AutoKeyMappings_Dance
},
{
{ GameButtonType_Step },
@@ -467,27 +468,27 @@ static const Game g_Game_Dance =
TNS_W5, // m_mapW5To
};
const InputMapping g_AutoKeyMappings_Pump[] =
{
{ 0, KEY_Cq, PUMP_BUTTON_UPLEFT, false },
{ 0, KEY_Ce, PUMP_BUTTON_UPRIGHT, false },
{ 0, KEY_Cs, PUMP_BUTTON_CENTER, false },
{ 0, KEY_Cz, PUMP_BUTTON_DOWNLEFT, false },
{ 0, KEY_Cc, PUMP_BUTTON_DOWNRIGHT, false },
{ 0, KEY_KP_C7, PUMP_BUTTON_UPLEFT, true },
{ 0, KEY_KP_C9, PUMP_BUTTON_UPRIGHT, true },
{ 0, KEY_KP_C5, PUMP_BUTTON_CENTER, true },
{ 0, KEY_KP_C1, PUMP_BUTTON_DOWNLEFT, true },
{ 0, KEY_KP_C3, PUMP_BUTTON_DOWNRIGHT, true },
static const AutoMappings g_AutoKeyMappings_Pump = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cq, PUMP_BUTTON_UPLEFT, false ),
AutoMappingEntry( 0, KEY_Ce, PUMP_BUTTON_UPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cs, PUMP_BUTTON_CENTER, false ),
AutoMappingEntry( 0, KEY_Cz, PUMP_BUTTON_DOWNLEFT, false ),
AutoMappingEntry( 0, KEY_Cc, PUMP_BUTTON_DOWNRIGHT, false ),
AutoMappingEntry( 0, KEY_KP_C7, PUMP_BUTTON_UPLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C9, PUMP_BUTTON_UPRIGHT, true ),
AutoMappingEntry( 0, KEY_KP_C5, PUMP_BUTTON_CENTER, true ),
AutoMappingEntry( 0, KEY_KP_C1, PUMP_BUTTON_DOWNLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C3, PUMP_BUTTON_DOWNRIGHT, true ),
// unmap confusing default MenuButtons
{ 0, KEY_KP_C8, GameButton_Invalid, false },
{ 0, KEY_KP_C2, GameButton_Invalid, false },
{ 0, KEY_KP_C4, GameButton_Invalid, false },
{ 0, KEY_KP_C6, GameButton_Invalid, false },
InputMapping_END
};
AutoMappingEntry( 0, KEY_KP_C8, GameButton_Invalid, false ),
AutoMappingEntry( 0, KEY_KP_C2, GameButton_Invalid, false ),
AutoMappingEntry( 0, KEY_KP_C4, GameButton_Invalid, false ),
AutoMappingEntry( 0, KEY_KP_C6, GameButton_Invalid, false )
);
static const int PUMP_COL_SPACING = 50;
static const Style g_Style_Pump_Single =
@@ -762,7 +763,7 @@ static const Game g_Game_Pump =
{ "DownLeft", MENU_BUTTON_LEFT },
{ "DownRight", MENU_BUTTON_RIGHT },
},
g_AutoKeyMappings_Pump
&g_AutoKeyMappings_Pump
},
{
{ GameButtonType_Step },
@@ -998,17 +999,18 @@ static const Style *g_apGame_Ez2_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Ez2[] =
{
{ 0, KEY_Cz, EZ2_BUTTON_FOOTUPLEFT, false },
{ 0, KEY_Cb, EZ2_BUTTON_FOOTUPRIGHT, false },
{ 0, KEY_Cc, EZ2_BUTTON_FOOTDOWN, false },
{ 0, KEY_Cx, EZ2_BUTTON_HANDUPLEFT, false },
{ 0, KEY_Cv, EZ2_BUTTON_HANDUPRIGHT, false },
{ 0, KEY_Cs, EZ2_BUTTON_HANDLRLEFT, false },
{ 0, KEY_Cf, EZ2_BUTTON_HANDLRRIGHT, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Ez2 = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cz, EZ2_BUTTON_FOOTUPLEFT, false ),
AutoMappingEntry( 0, KEY_Cb, EZ2_BUTTON_FOOTUPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cc, EZ2_BUTTON_FOOTDOWN, false ),
AutoMappingEntry( 0, KEY_Cx, EZ2_BUTTON_HANDUPLEFT, false ),
AutoMappingEntry( 0, KEY_Cv, EZ2_BUTTON_HANDUPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cs, EZ2_BUTTON_HANDLRLEFT, false ),
AutoMappingEntry( 0, KEY_Cf, EZ2_BUTTON_HANDLRRIGHT, false )
);
static const Game g_Game_Ez2 =
{
@@ -1028,7 +1030,7 @@ static const Game g_Game_Ez2 =
{ "HandLrLeft", GameButton_Invalid },
{ "HandLrRight", GameButton_Invalid },
},
g_AutoKeyMappings_Ez2
&g_AutoKeyMappings_Ez2
},
{
{ GameButtonType_Step },
@@ -1129,15 +1131,16 @@ static const Style *g_apGame_Para_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Para[] =
{
{ 0, KEY_Cz, PARA_BUTTON_LEFT, false },
{ 0, KEY_Cx, PARA_BUTTON_UPLEFT, false },
{ 0, KEY_Cc, PARA_BUTTON_UP, false },
{ 0, KEY_Cv, PARA_BUTTON_UPRIGHT, false },
{ 0, KEY_Cb, PARA_BUTTON_RIGHT, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Para = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cz, PARA_BUTTON_LEFT, false ),
AutoMappingEntry( 0, KEY_Cx, PARA_BUTTON_UPLEFT, false ),
AutoMappingEntry( 0, KEY_Cc, PARA_BUTTON_UP, false ),
AutoMappingEntry( 0, KEY_Cv, PARA_BUTTON_UPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cb, PARA_BUTTON_RIGHT, false )
);
static const Game g_Game_Para =
{
@@ -1155,7 +1158,7 @@ static const Game g_Game_Para =
{ "UpRight", MENU_BUTTON_UP },
{ "Right", MENU_BUTTON_RIGHT },
},
g_AutoKeyMappings_Para
&g_AutoKeyMappings_Para
},
{
{ GameButtonType_Step },
@@ -1222,18 +1225,19 @@ static const Style *g_apGame_DS3DDX_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_DS3DDX[] =
{
{ 0, KEY_Ca, DS3DDX_BUTTON_HANDLEFT, false },
{ 0, KEY_Cz, DS3DDX_BUTTON_FOOTDOWNLEFT, false },
{ 0, KEY_Cq, DS3DDX_BUTTON_FOOTUPLEFT, false },
{ 0, KEY_Cw, DS3DDX_BUTTON_HANDUP, false },
{ 0, KEY_Cx, DS3DDX_BUTTON_HANDDOWN, false },
{ 0, KEY_Ce, DS3DDX_BUTTON_FOOTUPRIGHT, false },
{ 0, KEY_Cc, DS3DDX_BUTTON_FOOTDOWNRIGHT, false },
{ 0, KEY_Cd, DS3DDX_BUTTON_HANDRIGHT, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_DS3DDX = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Ca, DS3DDX_BUTTON_HANDLEFT, false ),
AutoMappingEntry( 0, KEY_Cz, DS3DDX_BUTTON_FOOTDOWNLEFT, false ),
AutoMappingEntry( 0, KEY_Cq, DS3DDX_BUTTON_FOOTUPLEFT, false ),
AutoMappingEntry( 0, KEY_Cw, DS3DDX_BUTTON_HANDUP, false ),
AutoMappingEntry( 0, KEY_Cx, DS3DDX_BUTTON_HANDDOWN, false ),
AutoMappingEntry( 0, KEY_Ce, DS3DDX_BUTTON_FOOTUPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cc, DS3DDX_BUTTON_FOOTDOWNRIGHT, false ),
AutoMappingEntry( 0, KEY_Cd, DS3DDX_BUTTON_HANDRIGHT, false )
);
static const Game g_Game_DS3DDX =
{
@@ -1254,7 +1258,7 @@ static const Game g_Game_DS3DDX =
{ "FootDownRight", GameButton_Invalid },
{ "HandRight", MENU_BUTTON_RIGHT },
},
g_AutoKeyMappings_DS3DDX
&g_AutoKeyMappings_DS3DDX
},
{
{ GameButtonType_Step },
@@ -1479,18 +1483,19 @@ static const Style *g_apGame_Beat_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Beat[] =
{
{ 0, KEY_Cm, BEAT_BUTTON_KEY1, false },
{ 0, KEY_Ck, BEAT_BUTTON_KEY2, false },
{ 0, KEY_COMMA, BEAT_BUTTON_KEY3, false },
{ 0, KEY_Cl, BEAT_BUTTON_KEY4, false },
{ 0, KEY_PERIOD, BEAT_BUTTON_KEY5, false },
{ 0, KEY_SEMICOLON, BEAT_BUTTON_KEY6, false },
{ 0, KEY_SLASH, BEAT_BUTTON_KEY7, false },
{ 0, KEY_LSHIFT, BEAT_BUTTON_SCRATCHUP, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Beat = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cm, BEAT_BUTTON_KEY1, false ),
AutoMappingEntry( 0, KEY_Ck, BEAT_BUTTON_KEY2, false ),
AutoMappingEntry( 0, KEY_COMMA, BEAT_BUTTON_KEY3, false ),
AutoMappingEntry( 0, KEY_Cl, BEAT_BUTTON_KEY4, false ),
AutoMappingEntry( 0, KEY_PERIOD, BEAT_BUTTON_KEY5, false ),
AutoMappingEntry( 0, KEY_SEMICOLON, BEAT_BUTTON_KEY6, false ),
AutoMappingEntry( 0, KEY_SLASH, BEAT_BUTTON_KEY7, false ),
AutoMappingEntry( 0, KEY_LSHIFT, BEAT_BUTTON_SCRATCHUP, false )
);
static const Game g_Game_Beat =
{
@@ -1512,7 +1517,7 @@ static const Game g_Game_Beat =
{ "Scratch up", MENU_BUTTON_UP },
{ "Scratch down", MENU_BUTTON_DOWN },
},
g_AutoKeyMappings_Beat
&g_AutoKeyMappings_Beat
},
{
{ GameButtonType_Step },
@@ -1657,18 +1662,19 @@ static const Style *g_apGame_Maniax_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Maniax[] =
{
{ 0, KEY_Ca, MANIAX_BUTTON_HANDUPLEFT, false },
{ 0, KEY_Cs, MANIAX_BUTTON_HANDUPRIGHT, false },
{ 0, KEY_Cz, MANIAX_BUTTON_HANDLRLEFT, false },
{ 0, KEY_Cx, MANIAX_BUTTON_HANDLRRIGHT, false },
{ 0, KEY_KP_C4, MANIAX_BUTTON_HANDUPLEFT, true },
{ 0, KEY_KP_C5, MANIAX_BUTTON_HANDUPRIGHT, true },
{ 0, KEY_KP_C1, MANIAX_BUTTON_HANDLRLEFT, true },
{ 0, KEY_KP_C2, MANIAX_BUTTON_HANDLRRIGHT, true },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Maniax = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Ca, MANIAX_BUTTON_HANDUPLEFT, false ),
AutoMappingEntry( 0, KEY_Cs, MANIAX_BUTTON_HANDUPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cz, MANIAX_BUTTON_HANDLRLEFT, false ),
AutoMappingEntry( 0, KEY_Cx, MANIAX_BUTTON_HANDLRRIGHT, false ),
AutoMappingEntry( 0, KEY_KP_C4, MANIAX_BUTTON_HANDUPLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C5, MANIAX_BUTTON_HANDUPRIGHT, true ),
AutoMappingEntry( 0, KEY_KP_C1, MANIAX_BUTTON_HANDLRLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C2, MANIAX_BUTTON_HANDLRRIGHT, true )
);
static const Game g_Game_Maniax =
{
@@ -1685,7 +1691,7 @@ static const Game g_Game_Maniax =
{ "HandLrLeft", MENU_BUTTON_DOWN },
{ "HandLrRight", MENU_BUTTON_UP },
},
g_AutoKeyMappings_Maniax
&g_AutoKeyMappings_Maniax
},
{
{ GameButtonType_Step },
@@ -2051,28 +2057,29 @@ static const Style *g_apGame_Techno_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Techno[] =
{
{ 0, KEY_Ca, TECHNO_BUTTON_LEFT, false },
{ 0, KEY_Cd, TECHNO_BUTTON_RIGHT, false },
{ 0, KEY_Cw, TECHNO_BUTTON_UP, false },
{ 0, KEY_Cx, TECHNO_BUTTON_DOWN, false },
{ 0, KEY_Cq, TECHNO_BUTTON_UPLEFT, false },
{ 0, KEY_Ce, TECHNO_BUTTON_UPRIGHT, false },
{ 0, KEY_Cs, TECHNO_BUTTON_CENTER, false },
{ 0, KEY_Cz, TECHNO_BUTTON_DOWNLEFT, false },
{ 0, KEY_Cc, TECHNO_BUTTON_DOWNRIGHT,false },
{ 0, KEY_KP_C4, TECHNO_BUTTON_LEFT, true },
{ 0, KEY_KP_C6, TECHNO_BUTTON_RIGHT, true },
{ 0, KEY_KP_C8, TECHNO_BUTTON_UP, true },
{ 0, KEY_KP_C2, TECHNO_BUTTON_DOWN, true },
{ 0, KEY_KP_C7, TECHNO_BUTTON_UPLEFT, true },
{ 0, KEY_KP_C9, TECHNO_BUTTON_UPRIGHT, true },
{ 0, KEY_KP_C5, TECHNO_BUTTON_CENTER, true },
{ 0, KEY_KP_C1, TECHNO_BUTTON_DOWNLEFT, true },
{ 0, KEY_KP_C3, TECHNO_BUTTON_DOWNRIGHT,true },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Techno = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Ca, TECHNO_BUTTON_LEFT, false ),
AutoMappingEntry( 0, KEY_Cd, TECHNO_BUTTON_RIGHT, false ),
AutoMappingEntry( 0, KEY_Cw, TECHNO_BUTTON_UP, false ),
AutoMappingEntry( 0, KEY_Cx, TECHNO_BUTTON_DOWN, false ),
AutoMappingEntry( 0, KEY_Cq, TECHNO_BUTTON_UPLEFT, false ),
AutoMappingEntry( 0, KEY_Ce, TECHNO_BUTTON_UPRIGHT, false ),
AutoMappingEntry( 0, KEY_Cs, TECHNO_BUTTON_CENTER, false ),
AutoMappingEntry( 0, KEY_Cz, TECHNO_BUTTON_DOWNLEFT, false ),
AutoMappingEntry( 0, KEY_Cc, TECHNO_BUTTON_DOWNRIGHT,false ),
AutoMappingEntry( 0, KEY_KP_C4, TECHNO_BUTTON_LEFT, true ),
AutoMappingEntry( 0, KEY_KP_C6, TECHNO_BUTTON_RIGHT, true ),
AutoMappingEntry( 0, KEY_KP_C8, TECHNO_BUTTON_UP, true ),
AutoMappingEntry( 0, KEY_KP_C2, TECHNO_BUTTON_DOWN, true ),
AutoMappingEntry( 0, KEY_KP_C7, TECHNO_BUTTON_UPLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C9, TECHNO_BUTTON_UPRIGHT, true ),
AutoMappingEntry( 0, KEY_KP_C5, TECHNO_BUTTON_CENTER, true ),
AutoMappingEntry( 0, KEY_KP_C1, TECHNO_BUTTON_DOWNLEFT, true ),
AutoMappingEntry( 0, KEY_KP_C3, TECHNO_BUTTON_DOWNRIGHT,true )
);
static const Game g_Game_Techno =
{
@@ -2094,7 +2101,7 @@ static const Game g_Game_Techno =
{ "DownLeft", GameButton_Invalid },
{ "DownRight", GameButton_Invalid },
},
g_AutoKeyMappings_Techno
&g_AutoKeyMappings_Techno
},
{
{ GameButtonType_Step },
@@ -2207,19 +2214,20 @@ static const Style *g_apGame_Popn_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Popn[] =
{
{ 0, KEY_Cz, POPN_BUTTON_LEFT_WHITE, false },
{ 0, KEY_Cs, POPN_BUTTON_LEFT_YELLOW,false },
{ 0, KEY_Cx, POPN_BUTTON_LEFT_GREEN, false },
{ 0, KEY_Cd, POPN_BUTTON_LEFT_BLUE, false },
{ 0, KEY_Cc, POPN_BUTTON_RED, false },
{ 0, KEY_Cf, POPN_BUTTON_RIGHT_BLUE, false },
{ 0, KEY_Cv, POPN_BUTTON_RIGHT_GREEN,false },
{ 0, KEY_Cg, POPN_BUTTON_RIGHT_YELLOW,false },
{ 0, KEY_Cb, POPN_BUTTON_RIGHT_WHITE,false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Popn = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cz, POPN_BUTTON_LEFT_WHITE, false ),
AutoMappingEntry( 0, KEY_Cs, POPN_BUTTON_LEFT_YELLOW,false ),
AutoMappingEntry( 0, KEY_Cx, POPN_BUTTON_LEFT_GREEN, false ),
AutoMappingEntry( 0, KEY_Cd, POPN_BUTTON_LEFT_BLUE, false ),
AutoMappingEntry( 0, KEY_Cc, POPN_BUTTON_RED, false ),
AutoMappingEntry( 0, KEY_Cf, POPN_BUTTON_RIGHT_BLUE, false ),
AutoMappingEntry( 0, KEY_Cv, POPN_BUTTON_RIGHT_GREEN,false ),
AutoMappingEntry( 0, KEY_Cg, POPN_BUTTON_RIGHT_YELLOW,false ),
AutoMappingEntry( 0, KEY_Cb, POPN_BUTTON_RIGHT_WHITE,false )
);
static const Game g_Game_Popn =
{
@@ -2241,7 +2249,7 @@ static const Game g_Game_Popn =
{ "Right Yellow", MENU_BUTTON_DOWN },
{ "Right White", GameButton_Invalid },
},
g_AutoKeyMappings_Popn
&g_AutoKeyMappings_Popn
},
{
{ GameButtonType_Step },
@@ -2297,11 +2305,12 @@ static const Style *g_apGame_Karaoke_Styles[] =
NULL
};
const InputMapping g_AutoKeyMappings_Karaoke[] =
{
{ 0, KEY_LEFT, KARAOKE_BUTTON_LEFT, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Karaoke = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_LEFT, KARAOKE_BUTTON_LEFT, false )
);
static const Game g_Game_Karaoke =
{
@@ -2315,7 +2324,7 @@ static const Game g_Game_Karaoke =
{ // m_szButtonNames
{ "Left", MENU_BUTTON_LEFT },
},
g_AutoKeyMappings_Karaoke
&g_AutoKeyMappings_Karaoke
},
{
{ GameButtonType_Step },
@@ -2327,18 +2336,19 @@ static const Game g_Game_Karaoke =
TNS_W5, // m_mapW5To
};
const InputMapping g_AutoKeyMappings_Lights[] =
{
{ 0, KEY_Cq, LIGHTS_BUTTON_MARQUEE_UP_LEFT, false },
{ 0, KEY_Cw, LIGHTS_BUTTON_MARQUEE_UP_RIGHT, false },
{ 0, KEY_Ce, LIGHTS_BUTTON_MARQUEE_LR_LEFT, false },
{ 0, KEY_Cr, LIGHTS_BUTTON_MARQUEE_LR_RIGHT, false },
{ 0, KEY_Ct, LIGHTS_BUTTON_BUTTONS_LEFT, false },
{ 0, KEY_Cy, LIGHTS_BUTTON_BUTTONS_RIGHT, false },
{ 0, KEY_Cu, LIGHTS_BUTTON_BASS_LEFT, false },
{ 0, KEY_Ci, LIGHTS_BUTTON_BASS_RIGHT, false },
InputMapping_END
};
static const AutoMappings g_AutoKeyMappings_Lights = AutoMappings (
"",
"",
"",
AutoMappingEntry( 0, KEY_Cq, LIGHTS_BUTTON_MARQUEE_UP_LEFT, false ),
AutoMappingEntry( 0, KEY_Cw, LIGHTS_BUTTON_MARQUEE_UP_RIGHT, false ),
AutoMappingEntry( 0, KEY_Ce, LIGHTS_BUTTON_MARQUEE_LR_LEFT, false ),
AutoMappingEntry( 0, KEY_Cr, LIGHTS_BUTTON_MARQUEE_LR_RIGHT, false ),
AutoMappingEntry( 0, KEY_Ct, LIGHTS_BUTTON_BUTTONS_LEFT, false ),
AutoMappingEntry( 0, KEY_Cy, LIGHTS_BUTTON_BUTTONS_RIGHT, false ),
AutoMappingEntry( 0, KEY_Cu, LIGHTS_BUTTON_BASS_LEFT, false ),
AutoMappingEntry( 0, KEY_Ci, LIGHTS_BUTTON_BASS_RIGHT, false )
);
static const Style g_Style_Lights_Cabinet =
{ // STYLE_LIGHTS_CABINET
@@ -2409,7 +2419,7 @@ static const Game g_Game_Lights =
{ "BassLeft", GameButton_Invalid },
{ "BassRight", GameButton_Invalid },
},
g_AutoKeyMappings_Lights
&g_AutoKeyMappings_Lights
},
{
{ GameButtonType_Step },
File diff suppressed because it is too large Load Diff
+108 -12
View File
@@ -6,20 +6,33 @@
#include "RageInputDevice.h"
#include "GameInput.h"
#include "PlayerNumber.h"
class Game;
const int NUM_GAME_TO_DEVICE_SLOTS = 5; // five device inputs may map to one game input
const int NUM_SHOWN_GAME_TO_DEVICE_SLOTS = 3;
const int NUM_USER_GAME_TO_DEVICE_SLOTS = 2;
#define InputMapping_END {-1, DeviceButton_Invalid, GameButton_Invalid, false }, // end marker
struct InputMapping
struct AutoMappingEntry
{
bool IsEndMarker() const { return deviceButton == deviceButton && gb == GameButton_Invalid; }
int iSlotIndex;
DeviceButton deviceButton;
GameButton gb; // GameButton_Invalid == end marker
AutoMappingEntry( int i, DeviceButton db, GameButton gb, bool b )
{
m_iSlotIndex = i;
m_deviceButton = db;
m_gb = gb;
m_bSecondController = b;
}
AutoMappingEntry()
{
m_iSlotIndex = -1;
m_deviceButton = DeviceButton_Invalid;
m_gb = GameButton_Invalid;
m_bSecondController = false;
}
bool IsEmpty() const { return m_deviceButton == DeviceButton_Invalid && m_gb == GameButton_Invalid; }
int m_iSlotIndex;
DeviceButton m_deviceButton;
GameButton m_gb; // GameButton_Invalid == end marker
/*
* If this is true, this is an auxilliary mapping assigned to the second
* player. If two of the same device are found, and the device has secondary
@@ -28,7 +41,71 @@ struct InputMapping
* (We can't tell if a slave pad is actually there.) Then, if a second primary
* is found (DEVICE_PUMP2), 2P will be mapped to it.
*/
bool SecondController;
bool m_bSecondController;
};
struct AutoMappings
{
AutoMappings(
RString s1,
RString s2,
RString s3,
AutoMappingEntry im0 = AutoMappingEntry(),
AutoMappingEntry im1 = AutoMappingEntry(),
AutoMappingEntry im2 = AutoMappingEntry(),
AutoMappingEntry im3 = AutoMappingEntry(),
AutoMappingEntry im4 = AutoMappingEntry(),
AutoMappingEntry im5 = AutoMappingEntry(),
AutoMappingEntry im6 = AutoMappingEntry(),
AutoMappingEntry im7 = AutoMappingEntry(),
AutoMappingEntry im8 = AutoMappingEntry(),
AutoMappingEntry im9 = AutoMappingEntry(),
AutoMappingEntry im10 = AutoMappingEntry(),
AutoMappingEntry im11 = AutoMappingEntry(),
AutoMappingEntry im12 = AutoMappingEntry(),
AutoMappingEntry im13 = AutoMappingEntry(),
AutoMappingEntry im14 = AutoMappingEntry(),
AutoMappingEntry im15 = AutoMappingEntry(),
AutoMappingEntry im16 = AutoMappingEntry(),
AutoMappingEntry im17 = AutoMappingEntry(),
AutoMappingEntry im18 = AutoMappingEntry(),
AutoMappingEntry im19 = AutoMappingEntry(),
AutoMappingEntry im20 = AutoMappingEntry(),
AutoMappingEntry im21 = AutoMappingEntry(),
AutoMappingEntry im22 = AutoMappingEntry(),
AutoMappingEntry im23 = AutoMappingEntry(),
AutoMappingEntry im24 = AutoMappingEntry(),
AutoMappingEntry im25 = AutoMappingEntry(),
AutoMappingEntry im26 = AutoMappingEntry(),
AutoMappingEntry im27 = AutoMappingEntry(),
AutoMappingEntry im28 = AutoMappingEntry(),
AutoMappingEntry im29 = AutoMappingEntry(),
AutoMappingEntry im30 = AutoMappingEntry(),
AutoMappingEntry im31 = AutoMappingEntry(),
AutoMappingEntry im32 = AutoMappingEntry(),
AutoMappingEntry im33 = AutoMappingEntry(),
AutoMappingEntry im34 = AutoMappingEntry(),
AutoMappingEntry im35 = AutoMappingEntry(),
AutoMappingEntry im36 = AutoMappingEntry(),
AutoMappingEntry im37 = AutoMappingEntry(),
AutoMappingEntry im38 = AutoMappingEntry(),
AutoMappingEntry im39 = AutoMappingEntry() )
{
m_sGame = s1;
m_sDriverRegex = s2;
m_sControllerName = s3;
#define PUSH( im ) if(!im.IsEmpty()) m_vMaps.push_back(im);
PUSH(im0);PUSH(im1);PUSH(im2);PUSH(im3);PUSH(im4);PUSH(im5);PUSH(im6);PUSH(im7);PUSH(im8);PUSH(im9);PUSH(im10);PUSH(im11);PUSH(im12);PUSH(im13);PUSH(im14);PUSH(im15);PUSH(im16);PUSH(im17);PUSH(im18);PUSH(im19);
PUSH(im20);PUSH(im21);PUSH(im22);PUSH(im23);PUSH(im24);PUSH(im25);PUSH(im26);PUSH(im27);PUSH(im28);PUSH(im29);PUSH(im30);PUSH(im31);PUSH(im32);PUSH(im33);PUSH(im34);PUSH(im35);PUSH(im36);PUSH(im37);PUSH(im38);PUSH(im39);
#undef PUSH
}
/* Strings used by automatic joystick mappings. */
RString m_sGame; // only used
RString m_sDriverRegex; // reported by InputHandler
RString m_sControllerName; // the product name of the controller
vector<AutoMappingEntry> m_vMaps;
};
class InputScheme
@@ -43,7 +120,7 @@ public:
};
/* Data for each Game-specific GameButton. This starts at GAME_BUTTON_NEXT. */
GameButtonInfo m_GameButtonInfo[NUM_GameButton];
const InputMapping *m_Maps;
const AutoMappings *m_pAutoMappings;
GameButton ButtonNameToIndex( const RString &sButtonName ) const;
GameButton GameButtonToMenuButton( GameButton gb ) const;
@@ -54,6 +131,26 @@ public:
};
#define FOREACH_GameButtonInScheme( s, var ) for( GameButton var=(GameButton)0; var<s->m_iButtonsPerController; enum_add<GameButton>( var, +1 ) )
class InputMappings
{
public:
// only filled for automappings
RString m_sDeviceRegex;
RString m_sDescription;
// map from a GameInput to multiple DeviceInputs
DeviceInput m_GItoDI[NUM_GameController][NUM_GameButton][NUM_GAME_TO_DEVICE_SLOTS];
void Clear();
void Unmap( InputDevice id );
void WriteMappings( const InputScheme *pInputScheme, RString sFilePath );
void ReadMappings( const InputScheme *pInputScheme, RString sFilePath, bool bIsAutoMapping );
void SetInputMap( const DeviceInput &DeviceI, const GameInput &GameI, int iSlotIndex );
void ClearFromInputMap( const DeviceInput &DeviceI );
bool ClearFromInputMap( const GameInput &GameI, int iSlotIndex );
};
class InputMapper
{
public:
@@ -105,11 +202,10 @@ public:
static MultiPlayer InputDeviceToMultiPlayer( InputDevice id );
void Unmap( InputDevice device );
void ApplyMapping( const InputMapping *maps, GameController gc, InputDevice device );
void ApplyMapping( const vector<AutoMappingEntry> &vMmaps, GameController gc, InputDevice id );
protected:
// all the DeviceInputs that map to a GameInput
DeviceInput m_GItoDI[NUM_GameController][NUM_GameButton][NUM_GAME_TO_DEVICE_SLOTS];
InputMappings m_mappings;
void UpdateTempDItoGI();
const InputScheme *m_pInputScheme;