Merge pull request #1019 from Sergeanur/ControllerMenu2
Controller menu
This commit is contained in:
commit
91c3bdfa15
Binary file not shown.
BIN
gamefiles/models/frontend_ds3.txd
Normal file
BIN
gamefiles/models/frontend_ds3.txd
Normal file
Binary file not shown.
BIN
gamefiles/models/frontend_ds4.txd
Normal file
BIN
gamefiles/models/frontend_ds4.txd
Normal file
Binary file not shown.
BIN
gamefiles/models/frontend_x360.txd
Normal file
BIN
gamefiles/models/frontend_x360.txd
Normal file
Binary file not shown.
BIN
gamefiles/models/frontend_xone.txd
Normal file
BIN
gamefiles/models/frontend_xone.txd
Normal file
Binary file not shown.
BIN
gamefiles/models/ps3btns.txd
Normal file
BIN
gamefiles/models/ps3btns.txd
Normal file
Binary file not shown.
@ -2619,11 +2619,6 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O
|
||||
#define PS2_CIRCLE "|"
|
||||
#define PS2_CROSS "/"
|
||||
#define PS2_SQUARE "^"
|
||||
#elif defined(BUTTON_ICONS)
|
||||
#define PS2_TRIANGLE "~T~"
|
||||
#define PS2_CIRCLE "~O~"
|
||||
#define PS2_CROSS "~X~"
|
||||
#define PS2_SQUARE "~Q~"
|
||||
#else
|
||||
#define PS2_TRIANGLE "TRIANGLE"
|
||||
#define PS2_CIRCLE "CIRCLE"
|
||||
@ -2636,7 +2631,7 @@ const char *PlayStationButtons_noIcons[][MAX_CONTROLLERACTIONS] =
|
||||
|
||||
#ifdef BUTTON_ICONS
|
||||
const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] =
|
||||
CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT");
|
||||
CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT");
|
||||
#endif
|
||||
|
||||
#undef PS2_TRIANGLE
|
||||
@ -2653,11 +2648,36 @@ void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar *
|
||||
if (CPad::GetPad(0)->IsAffectedByController) {
|
||||
wchar wstr[16];
|
||||
|
||||
// TODO: INI and/or menu setting for Xbox/PS switch
|
||||
const char* (*Buttons)[MAX_CONTROLLERACTIONS];
|
||||
|
||||
#ifdef BUTTON_ICONS
|
||||
const char *(*Buttons)[MAX_CONTROLLERACTIONS] = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons;
|
||||
#ifdef GAMEPAD_MENU
|
||||
switch (FrontEndMenuManager.m_PrefsControllerType)
|
||||
{
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK2:
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK3:
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK4:
|
||||
Buttons = CFont::ButtonsSlot != -1 ? PlayStationButtons : PlayStationButtons_noIcons;
|
||||
break;
|
||||
default:
|
||||
#endif
|
||||
Buttons = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons;
|
||||
#ifdef GAMEPAD_MENU
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
const char *(*Buttons)[MAX_CONTROLLERACTIONS] = XboxButtons_noIcons;
|
||||
switch (FrontEndMenuManager.m_PrefsControllerType)
|
||||
{
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK2:
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK3:
|
||||
case CMenuManager::CONTROLLER_DUALSHOCK4:
|
||||
Buttons = PlayStationButtons_noIcons;
|
||||
break;
|
||||
default:
|
||||
Buttons = XboxButtons_noIcons;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
assert(Buttons[CPad::GetPad(0)->Mode][action] != nil); // we cannot use these
|
||||
|
@ -141,6 +141,10 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0;
|
||||
int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW;
|
||||
#endif
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
int8 CMenuManager::m_PrefsControllerType = CONTROLLER_XBOXONE;
|
||||
#endif
|
||||
|
||||
int32 CMenuManager::OS_Language = LANG_ENGLISH;
|
||||
int8 CMenuManager::m_PrefsUseVibration;
|
||||
int8 CMenuManager::m_DisplayControllerOnFoot;
|
||||
@ -1161,6 +1165,16 @@ CMenuManager::Draw()
|
||||
CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE));
|
||||
CFont::SetCentreOn();
|
||||
break;
|
||||
#ifdef FIX_BUGS
|
||||
case MENUPAGE_CONTROLLER_SETTINGS:
|
||||
columnWidth = 50;
|
||||
headerHeight = -50;
|
||||
lineHeight = 20;
|
||||
CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
|
||||
CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = MEDIUMTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = MEDIUMTEXT_Y_SCALE));
|
||||
CFont::SetRightJustifyOff();
|
||||
break;
|
||||
#endif
|
||||
case MENUPAGE_SOUND_SETTINGS:
|
||||
case MENUPAGE_DISPLAY_SETTINGS:
|
||||
case MENUPAGE_MULTIPLAYER_CREATE:
|
||||
@ -3622,6 +3636,10 @@ CMenuManager::LoadAllTextures()
|
||||
m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER);
|
||||
}
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
LoadController(m_PrefsControllerType);
|
||||
#endif
|
||||
|
||||
int menuTxdSlot = CTxdStore::FindTxdSlot("menu");
|
||||
|
||||
if (menuTxdSlot == -1)
|
||||
@ -3653,6 +3671,71 @@ CMenuManager::LoadAllTextures()
|
||||
CTxdStore::PopCurrentTxd();
|
||||
}
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
const char* controllerTypesPaths[] = {
|
||||
nil,
|
||||
"MODELS/FRONTEND_DS3.TXD",
|
||||
"MODELS/FRONTEND_DS4.TXD",
|
||||
"MODELS/FRONTEND_X360.TXD",
|
||||
"MODELS/FRONTEND_XONE.TXD",
|
||||
};
|
||||
|
||||
void
|
||||
CMenuManager::LoadController(int8 type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case CONTROLLER_DUALSHOCK2:
|
||||
case CONTROLLER_DUALSHOCK3:
|
||||
case CONTROLLER_DUALSHOCK4:
|
||||
CFont::LoadButtons("MODELS/PS3BTNS.TXD");
|
||||
break;
|
||||
default:
|
||||
CFont::LoadButtons("MODELS/X360BTNS.TXD");
|
||||
break;
|
||||
}
|
||||
|
||||
// Unload current textures
|
||||
for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++)
|
||||
m_aFrontEndSprites[i].Delete();
|
||||
|
||||
// Unload txd
|
||||
int frontend_controller = CTxdStore::FindTxdSlot("frontend_controller");
|
||||
if (frontend_controller != -1)
|
||||
CTxdStore::RemoveTxd(frontend_controller);
|
||||
|
||||
// Find the new txd to load
|
||||
bool bTxdMissing = true;
|
||||
if (controllerTypesPaths[type])
|
||||
if (int file = CFileMgr::OpenFile(controllerTypesPaths[type])) {
|
||||
CFileMgr::CloseFile(file);
|
||||
bTxdMissing = false;
|
||||
}
|
||||
|
||||
int txdSlot = -1;
|
||||
|
||||
if (bTxdMissing)
|
||||
// Not found, fall back to original textures
|
||||
txdSlot = CTxdStore::FindTxdSlot("frontend");
|
||||
else {
|
||||
// Found, load txd
|
||||
txdSlot = frontend_controller;
|
||||
if (txdSlot == -1)
|
||||
txdSlot = CTxdStore::AddTxdSlot("frontend_controller");
|
||||
CTxdStore::LoadTxd(txdSlot, controllerTypesPaths[type]);
|
||||
CTxdStore::AddRef(txdSlot);
|
||||
}
|
||||
|
||||
assert(txdSlot != -1);
|
||||
// Load new textures
|
||||
CTxdStore::SetCurrentTxd(txdSlot);
|
||||
for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++) {
|
||||
m_aFrontEndSprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]);
|
||||
m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER);
|
||||
}
|
||||
}
|
||||
#endif // GAMEPAD_MENU
|
||||
|
||||
void
|
||||
CMenuManager::LoadSettings()
|
||||
{
|
||||
@ -5262,6 +5345,17 @@ CMenuManager::ProcessButtonPresses(void)
|
||||
|
||||
if (changeValueBy != 0) {
|
||||
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
|
||||
#ifdef FIX_BUGS
|
||||
case MENUACTION_CTRLCONFIG:
|
||||
CPad::GetPad(0)->Mode += changeValueBy;
|
||||
if (CPad::GetPad(0)->Mode > 3)
|
||||
CPad::GetPad(0)->Mode = 0;
|
||||
else if (CPad::GetPad(0)->Mode < 0)
|
||||
CPad::GetPad(0)->Mode = 3;
|
||||
SaveSettings();
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
|
||||
break;
|
||||
#endif
|
||||
case MENUACTION_RADIO:
|
||||
m_PrefsRadioStation += changeValueBy;
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
|
||||
@ -5400,13 +5494,18 @@ CMenuManager::ProcessOnOffMenuOptions()
|
||||
TimeToStopPadShaking = CTimer::GetTimeInMillisecondsPauseMode() + 500;
|
||||
}
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
|
||||
#ifdef FIX_BUGS
|
||||
SaveSettings();
|
||||
#endif // !FIX_BUGS
|
||||
break;
|
||||
#ifndef FIX_BUGS
|
||||
case MENUACTION_CTRLCONFIG:
|
||||
CPad::GetPad(0)->Mode++;
|
||||
if (CPad::GetPad(0)->Mode > 3)
|
||||
CPad::GetPad(0)->Mode = 0;
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
|
||||
break;
|
||||
#endif // !FIX_BUGS
|
||||
case MENUACTION_CTRLDISPLAY:
|
||||
m_DisplayControllerOnFoot = !m_DisplayControllerOnFoot;
|
||||
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0);
|
||||
@ -5676,6 +5775,12 @@ CMenuManager::UnloadTextures()
|
||||
int frontend = CTxdStore::FindTxdSlot("frontend");
|
||||
CTxdStore::RemoveTxd(frontend);
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
int frontend_controllerTxdSlot = CTxdStore::FindTxdSlot("frontend_controller");
|
||||
if (frontend_controllerTxdSlot != -1)
|
||||
CTxdStore::RemoveTxd(frontend_controllerTxdSlot);
|
||||
#endif
|
||||
|
||||
printf("REMOVE menu textures\n");
|
||||
for (int i = 0; i < ARRAY_SIZE(MenuFilenames); ++i)
|
||||
m_aMenuSprites[i].Delete();
|
||||
@ -5717,6 +5822,301 @@ CMenuManager::WaitForUserCD()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
void
|
||||
CMenuManager::PrintController(void)
|
||||
{
|
||||
const float scale = 0.9f;
|
||||
const float CONTROLLER_SIZE_X = 235.2f;
|
||||
const float CONTROLLER_SIZE_Y = 175.2f;
|
||||
const float CONTROLLER_POS_X = (DEFAULT_SCREEN_WIDTH - CONTROLLER_SIZE_X) / 2.0f;
|
||||
const float CONTROLLER_POS_Y = 160.0f;
|
||||
|
||||
float centerX = CONTROLLER_POS_X + CONTROLLER_SIZE_X / 2;
|
||||
float centerY = CONTROLLER_POS_Y + CONTROLLER_SIZE_Y / 2;
|
||||
|
||||
#define X(f) ((f)*scale + centerX)
|
||||
#define Y(f) ((f)*scale + centerY)
|
||||
|
||||
m_aFrontEndSprites[FE_CONTROLLERSH].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X((CONTROLLER_SIZE_X + 4.8f) * scale), MENU_Y((CONTROLLER_SIZE_Y + 4.8f) * scale), CRGBA(0, 0, 0, 255));
|
||||
m_aFrontEndSprites[FE_CONTROLLER].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255));
|
||||
if (m_DisplayControllerOnFoot) {
|
||||
if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400)
|
||||
m_aFrontEndSprites[FE_ARROWS1].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255));
|
||||
else
|
||||
m_aFrontEndSprites[FE_ARROWS3].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255));
|
||||
} else {
|
||||
if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400)
|
||||
m_aFrontEndSprites[FE_ARROWS2].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255));
|
||||
else
|
||||
m_aFrontEndSprites[FE_ARROWS4].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255));
|
||||
}
|
||||
|
||||
CFont::SetFontStyle(FONT_LOCALE(FONT_BANK));
|
||||
CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * scale), MENU_Y(SMALLESTTEXT_Y_SCALE * scale)); // X
|
||||
|
||||
// CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255)));
|
||||
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255)));
|
||||
CFont::SetDropShadowPosition(1);
|
||||
CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255)));
|
||||
CFont::SetWrapx(SCREEN_WIDTH);
|
||||
|
||||
float TEXT_L2_X = 50.0f + CONTROLLER_POS_X - centerX, TEXT_L2_Y = -14.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_L1_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_L1_Y = 25.0f + CONTROLLER_POS_Y - centerY, TEXT_L1_Y_VEH = 3.0f + TEXT_L1_Y;
|
||||
float TEXT_DPAD_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_DPAD_Y = 65.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_LSTICK_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_LSTICK_Y = 97.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_SELECT_X = 103.0f + CONTROLLER_POS_X - centerX, TEXT_SELECT_Y = 141.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_START_X = 130.0f + CONTROLLER_POS_X - centerX, TEXT_START_Y = 128.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_R2_X = 184.0F + CONTROLLER_POS_X - centerX, TEXT_R2_Y = -14.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_R1_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R1_Y = 25.0f + CONTROLLER_POS_Y - centerY;
|
||||
|
||||
float TEXT_SQUARE_X = 144.0f + CONTROLLER_POS_X - centerX, TEXT_SQUARE_Y = 18.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_TRIANGLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_TRIANGLE_Y = 52.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_CIRCLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CIRCLE_Y = 65.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_CROSS_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CROSS_Y = 78.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_RSTICK_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_RSTICK_Y = 94.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_R3_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R3_Y = 109.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_L3_X = 84.0f + CONTROLLER_POS_X - centerX, TEXT_L3_Y = 162.0f + CONTROLLER_POS_Y - centerY;
|
||||
float TEXT_L2R2_X = 74.0f + CONTROLLER_POS_X - centerX, TEXT_L2R2_Y = -6.0f + CONTROLLER_POS_Y - centerY;
|
||||
|
||||
switch (m_PrefsControllerType)
|
||||
{
|
||||
case CONTROLLER_DUALSHOCK4:
|
||||
TEXT_L1_Y += 7.0f;
|
||||
TEXT_L1_Y_VEH = TEXT_L1_Y;
|
||||
TEXT_R1_Y += 7.0f;
|
||||
TEXT_TRIANGLE_Y -= 1.0f;
|
||||
TEXT_CIRCLE_Y -= 1.0f;
|
||||
TEXT_CROSS_Y -= 1.0f;
|
||||
TEXT_RSTICK_Y -= 4.0f;
|
||||
TEXT_R3_Y -= 4.0f;
|
||||
TEXT_DPAD_Y -= 1.0f;
|
||||
TEXT_LSTICK_Y -= 6.0f;
|
||||
TEXT_L3_X -= 2.0f;
|
||||
break;
|
||||
case CONTROLLER_XBOXONE:
|
||||
TEXT_L2_X -= 2.0f;
|
||||
TEXT_R2_X += 2.0f;
|
||||
TEXT_L1_Y += 15.0f;
|
||||
TEXT_L1_Y_VEH = TEXT_L1_Y;
|
||||
TEXT_R1_Y += 15.0f;
|
||||
TEXT_TRIANGLE_Y += 4.0f;
|
||||
TEXT_CIRCLE_Y += 4.0f;
|
||||
TEXT_CROSS_Y += 4.0f;
|
||||
TEXT_RSTICK_Y += 1.0f;
|
||||
TEXT_R3_Y += 1.0f;
|
||||
TEXT_DPAD_Y += 29.0f;
|
||||
TEXT_LSTICK_Y -= 22.0f;
|
||||
TEXT_L3_X -= 36.0f;
|
||||
TEXT_L2R2_Y += 5.0f;
|
||||
TEXT_SELECT_X += 4.0f;
|
||||
break;
|
||||
case CONTROLLER_XBOX360:
|
||||
TEXT_L2_X += 8.0f;
|
||||
TEXT_R2_X -= 8.0f;
|
||||
TEXT_L1_Y += 15.0f;
|
||||
TEXT_L1_Y_VEH = TEXT_L1_Y;
|
||||
TEXT_R1_Y += 15.0f;
|
||||
TEXT_TRIANGLE_Y += 4.0f;
|
||||
TEXT_CIRCLE_Y += 4.0f;
|
||||
TEXT_CROSS_Y += 4.0f;
|
||||
TEXT_RSTICK_Y += 4.0f;
|
||||
TEXT_R3_Y += 4.0f;
|
||||
TEXT_DPAD_Y += 30.0f;
|
||||
TEXT_LSTICK_Y -= 21.0f;
|
||||
TEXT_L3_X -= 36.0f;
|
||||
TEXT_L2R2_Y += 5.0f;
|
||||
TEXT_SELECT_X += 3.0f;
|
||||
break;
|
||||
};
|
||||
|
||||
if (m_DisplayControllerOnFoot) {
|
||||
switch (CPad::GetPad(0)->Mode) {
|
||||
case 0:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
|
||||
break;
|
||||
case 1:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_NA"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
|
||||
break;
|
||||
case 2:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_ENV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
|
||||
break;
|
||||
case 3:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_TAR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_NA"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2R2_X)), MENU_Y(Y(TEXT_L2R2_Y)), TheText.Get("FEC_LB"));
|
||||
switch (CPad::GetPad(0)->Mode) {
|
||||
case 0:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_RSC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
|
||||
break;
|
||||
case 1:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HOR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_NA"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_RSC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
|
||||
break;
|
||||
case 2:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_EXV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_RS3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HOR"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_HAB"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
|
||||
break;
|
||||
case 3:
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HAB"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_TUC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_CAW"));
|
||||
CFont::SetRightJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT"));
|
||||
CFont::SetJustifyOn(); // X
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RSC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_NA"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_ACC"));
|
||||
CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_BRA"));
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CFont::SetDropShadowPosition(0); // X
|
||||
|
||||
#undef X
|
||||
#undef Y
|
||||
}
|
||||
#else
|
||||
void
|
||||
CMenuManager::PrintController(void)
|
||||
{
|
||||
@ -5937,6 +6337,7 @@ CMenuManager::PrintController(void)
|
||||
|
||||
CFont::SetDropShadowPosition(0); // X
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MENU_MAP
|
||||
|
||||
|
@ -725,6 +725,19 @@ public:
|
||||
#define ISLAND_LOADING_ISNT(p)
|
||||
#endif
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
enum
|
||||
{
|
||||
CONTROLLER_DUALSHOCK2 = 0,
|
||||
CONTROLLER_DUALSHOCK3,
|
||||
CONTROLLER_DUALSHOCK4,
|
||||
CONTROLLER_XBOX360,
|
||||
CONTROLLER_XBOXONE,
|
||||
};
|
||||
|
||||
static int8 m_PrefsControllerType;
|
||||
#endif
|
||||
|
||||
public:
|
||||
static void BuildStatLine(Const char *text, void *stat, bool itsFloat, void *stat2);
|
||||
static void CentreMousePointer();
|
||||
@ -784,6 +797,9 @@ public:
|
||||
void PageDownList(bool);
|
||||
int8 GetPreviousPageOption();
|
||||
void ProcessList(bool &goBack, bool &optionSelected);
|
||||
#ifdef GAMEPAD_MENU
|
||||
void LoadController(int8 type);
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifndef IMPROVED_VIDEOMODE
|
||||
|
@ -74,6 +74,12 @@
|
||||
#define INVERT_PAD_SELECTOR
|
||||
#endif
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
#define SELECT_CONTROLLER_TYPE MENUACTION_CFO_SELECT, "FEC_TYP", { new CCFOSelect((int8*)&CMenuManager::m_PrefsControllerType, "Controller", "Type", controllerTypes, ARRAY_SIZE(controllerTypes), false, ControllerTypeAfterChange) },
|
||||
#else
|
||||
#define SELECT_CONTROLLER_TYPE
|
||||
#endif
|
||||
|
||||
const char *filterNames[] = { "FEM_NON", "FEM_SIM", "FEM_NRM", "FEM_MOB" };
|
||||
const char *off_on[] = { "FEM_OFF", "FEM_ON" };
|
||||
|
||||
@ -346,6 +352,14 @@ void DetectJoystickGoBack() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GAMEPAD_MENU
|
||||
const char* controllerTypes[] = { "FEC_DS2", "FEC_DS3", "FEC_DS4", "FEC_360", "FEC_ONE" };
|
||||
void ControllerTypeAfterChange(int8 before, int8 after)
|
||||
{
|
||||
FrontEndMenuManager.LoadController(after);
|
||||
}
|
||||
#endif
|
||||
|
||||
CMenuScreenCustom aScreens[MENUPAGES] = {
|
||||
// MENUPAGE_NONE = 0
|
||||
{ "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, nil, nil, },
|
||||
@ -369,10 +383,16 @@ CMenuScreenCustom aScreens[MENUPAGES] = {
|
||||
},
|
||||
|
||||
// MENUPAGE_CONTROLLER_SETTINGS = 4
|
||||
#ifdef GAMEPAD_MENU
|
||||
{ "FET_AGS", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
#else
|
||||
{ "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil,
|
||||
#endif
|
||||
MENUACTION_CTRLCONFIG, "FEC_CCF", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS },
|
||||
MENUACTION_CTRLDISPLAY, "FEC_CDP", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS },
|
||||
INVERT_PAD_SELECTOR
|
||||
MENUACTION_CTRLVIBRATION, "FEC_VIB", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS },
|
||||
SELECT_CONTROLLER_TYPE
|
||||
MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE },
|
||||
},
|
||||
|
||||
@ -643,6 +663,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = {
|
||||
MENUACTION_CTRLMETHOD, "FET_CME", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC },
|
||||
#endif
|
||||
MENUACTION_KEYBOARDCTRLS,"FET_RDK", { nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS },
|
||||
#ifdef GAMEPAD_MENU
|
||||
MENUACTION_CHANGEMENU, "FET_AGS", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS },
|
||||
#endif
|
||||
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
|
||||
MENUACTION_CHANGEMENU, "FEC_JOD", { nil, SAVESLOT_NONE, MENUPAGE_DETECT_JOYSTICK },
|
||||
#endif
|
||||
@ -798,7 +821,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = {
|
||||
{ "FET_MTI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil,
|
||||
MENUACTION_MOUSESENS, "FEC_MSH", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS },
|
||||
MENUACTION_INVVERT, "FEC_IVV", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS },
|
||||
#ifndef GAMEPAD_MENU
|
||||
INVERT_PAD_SELECTOR
|
||||
#endif
|
||||
MENUACTION_MOUSESTEER, "FET_MST", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS },
|
||||
MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE },
|
||||
},
|
||||
|
116
src/core/Pad.cpp
116
src/core/Pad.cpp
@ -2336,6 +2336,121 @@ bool CPad::ShiftTargetRightJustDown(void)
|
||||
return !!(NewState.RightShoulder2 && !OldState.RightShoulder2);
|
||||
}
|
||||
|
||||
#ifdef FIX_BUGS
|
||||
// FIX: fixes from VC for the bug of double switching the controller setup
|
||||
bool CPad::GetAnaloguePadUp(void)
|
||||
{
|
||||
static int16 oldfStickY = 0;
|
||||
|
||||
int16 leftStickY = CPad::GetPad(0)->GetLeftStickY();
|
||||
|
||||
if ( leftStickY < -15 && oldfStickY >= -5 )
|
||||
{
|
||||
oldfStickY = leftStickY;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickY = leftStickY;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CPad::GetAnaloguePadDown(void)
|
||||
{
|
||||
static int16 oldfStickY = 0;
|
||||
|
||||
int16 leftStickY = CPad::GetPad(0)->GetLeftStickY();
|
||||
|
||||
if ( leftStickY > 15 && oldfStickY <= 5 )
|
||||
{
|
||||
oldfStickY = leftStickY;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickY = leftStickY;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CPad::GetAnaloguePadLeft(void)
|
||||
{
|
||||
static int16 oldfStickX = 0;
|
||||
|
||||
int16 leftStickX = CPad::GetPad(0)->GetLeftStickX();
|
||||
|
||||
if ( leftStickX < -15 && oldfStickX >= -5 )
|
||||
{
|
||||
oldfStickX = leftStickX;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickX = leftStickX;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CPad::GetAnaloguePadRight(void)
|
||||
{
|
||||
static int16 oldfStickX = 0;
|
||||
|
||||
int16 leftStickX = CPad::GetPad(0)->GetLeftStickX();
|
||||
|
||||
if ( leftStickX > 15 && oldfStickX <= 5 )
|
||||
{
|
||||
oldfStickX = leftStickX;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickX = leftStickX;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CPad::GetAnaloguePadLeftJustUp(void)
|
||||
{
|
||||
static int16 oldfStickX = 0;
|
||||
|
||||
int16 X = GetPad(0)->GetPedWalkLeftRight();
|
||||
|
||||
if ( X == 0 && oldfStickX < 0 )
|
||||
{
|
||||
oldfStickX = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickX = X;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CPad::GetAnaloguePadRightJustUp(void)
|
||||
{
|
||||
static int16 oldfStickX = 0;
|
||||
|
||||
int16 X = GetPad(0)->GetPedWalkLeftRight();
|
||||
|
||||
if ( X == 0 && oldfStickX > 0 )
|
||||
{
|
||||
oldfStickX = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oldfStickX = X;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
bool CPad::GetAnaloguePadUp(void)
|
||||
{
|
||||
static int16 oldfStickY = 0;
|
||||
@ -2447,6 +2562,7 @@ bool CPad::GetAnaloguePadRightJustUp(void)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CPad::ForceCameraBehindPlayer(void)
|
||||
{
|
||||
|
@ -313,6 +313,11 @@ enum Config {
|
||||
//# define PS2_MENU_USEALLPAGEICONS
|
||||
#else
|
||||
# define MENU_MAP // VC-like menu map. Make sure you have new menu.txd
|
||||
|
||||
# ifdef XINPUT
|
||||
# define GAMEPAD_MENU // Add gamepad menu
|
||||
# endif
|
||||
|
||||
# define SCROLLABLE_STATS_PAGE // only draggable by mouse atm
|
||||
# define TRIANGLE_BACK_BUTTON
|
||||
//# define CIRCLE_BACK_BUTTON
|
||||
@ -472,6 +477,7 @@ enum Config {
|
||||
#undef RADIO_OFF_TEXT
|
||||
|
||||
#undef MENU_MAP
|
||||
#undef GAMEPAD_MENU
|
||||
#undef SCROLLABLE_STATS_PAGE
|
||||
#undef CUSTOM_FRONTEND_OPTIONS
|
||||
|
||||
|
@ -369,6 +369,7 @@ bool LoadINISettings()
|
||||
ReadIniIfExists("Controller", "HorizantalMouseSens", &TheCamera.m_fMouseAccelHorzntl);
|
||||
ReadIniIfExists("Controller", "InvertMouseVertically", &MousePointerStateHelper.bInvertVertically);
|
||||
ReadIniIfExists("Controller", "DisableMouseSteering", &CVehicle::m_bDisableMouseSteering);
|
||||
ReadIniIfExists("Controller", "Vibration", &FrontEndMenuManager.m_PrefsUseVibration);
|
||||
ReadIniIfExists("Audio", "SfxVolume", &FrontEndMenuManager.m_PrefsSfxVolume);
|
||||
ReadIniIfExists("Audio", "MusicVolume", &FrontEndMenuManager.m_PrefsMusicVolume);
|
||||
ReadIniIfExists("Audio", "Radio", &FrontEndMenuManager.m_PrefsRadioStation);
|
||||
@ -455,6 +456,7 @@ void SaveINISettings()
|
||||
StoreIni("Controller", "HorizantalMouseSens", TheCamera.m_fMouseAccelHorzntl);
|
||||
StoreIni("Controller", "InvertMouseVertically", MousePointerStateHelper.bInvertVertically);
|
||||
StoreIni("Controller", "DisableMouseSteering", CVehicle::m_bDisableMouseSteering);
|
||||
StoreIni("Controller", "Vibration", FrontEndMenuManager.m_PrefsUseVibration);
|
||||
StoreIni("Audio", "SfxVolume", FrontEndMenuManager.m_PrefsSfxVolume);
|
||||
StoreIni("Audio", "MusicVolume", FrontEndMenuManager.m_PrefsMusicVolume);
|
||||
StoreIni("Audio", "Radio", FrontEndMenuManager.m_PrefsRadioStation);
|
||||
|
@ -348,11 +348,26 @@ CFont::Initialise(void)
|
||||
SetDropShadowPosition(0);
|
||||
CTxdStore::PopCurrentTxd();
|
||||
|
||||
#if !defined(GAMEPAD_MENU) && defined(BUTTON_ICONS)
|
||||
// loaded in CMenuManager with GAMEPAD_MENU defined
|
||||
LoadButtons("MODELS/X360BTNS.TXD");
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef BUTTON_ICONS
|
||||
if (int file = CFileMgr::OpenFile("MODELS/X360BTNS.TXD")) {
|
||||
void
|
||||
CFont::LoadButtons(const char* txdPath)
|
||||
{
|
||||
if (int file = CFileMgr::OpenFile(txdPath)) {
|
||||
CFileMgr::CloseFile(file);
|
||||
if (ButtonsSlot == -1)
|
||||
ButtonsSlot = CTxdStore::AddTxdSlot("buttons");
|
||||
CTxdStore::LoadTxd(ButtonsSlot, "MODELS/X360BTNS.TXD");
|
||||
else {
|
||||
for (int i = 0; i < MAX_BUTTON_ICONS; i++)
|
||||
ButtonSprite[i].Delete();
|
||||
CTxdStore::RemoveTxd(ButtonsSlot);
|
||||
}
|
||||
CTxdStore::LoadTxd(ButtonsSlot, txdPath);
|
||||
CTxdStore::AddRef(ButtonsSlot);
|
||||
CTxdStore::PushCurrentTxd();
|
||||
CTxdStore::SetCurrentTxd(ButtonsSlot);
|
||||
@ -374,8 +389,16 @@ CFont::Initialise(void)
|
||||
ButtonSprite[BUTTON_R3].SetTexture("r3");
|
||||
CTxdStore::PopCurrentTxd();
|
||||
}
|
||||
#endif // BUTTON_ICONS
|
||||
else {
|
||||
if (ButtonsSlot != -1) {
|
||||
for (int i = 0; i < MAX_BUTTON_ICONS; i++)
|
||||
ButtonSprite[i].Delete();
|
||||
CTxdStore::RemoveTxdSlot(ButtonsSlot);
|
||||
ButtonsSlot = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // BUTTON_ICONS
|
||||
|
||||
#ifdef MORE_LANGUAGES
|
||||
void
|
||||
|
@ -109,6 +109,7 @@ public:
|
||||
static CSprite2d ButtonSprite[MAX_BUTTON_ICONS];
|
||||
static int PS2Symbol;
|
||||
|
||||
static void LoadButtons(const char *txdPath);
|
||||
static void DrawButton(float x, float y);
|
||||
#endif // BUTTON_ICONS
|
||||
|
||||
|
@ -2440,33 +2440,6 @@ Accelerate
|
||||
[FEC_SMT]
|
||||
Special mission trigger
|
||||
|
||||
[FEC_CCF]
|
||||
Configuration:
|
||||
|
||||
[FEC_CF1]
|
||||
Setup1
|
||||
|
||||
[FEC_CF2]
|
||||
Setup2
|
||||
|
||||
[FEC_CF3]
|
||||
Setup3
|
||||
|
||||
[FEC_CF4]
|
||||
Setup4
|
||||
|
||||
[FEC_CDP]
|
||||
Controller Display:
|
||||
|
||||
[FEC_ONF]
|
||||
On Foot
|
||||
|
||||
[FEC_INC]
|
||||
In Car
|
||||
|
||||
[FEC_VIB]
|
||||
Vibration:
|
||||
|
||||
[FEA_OUT]
|
||||
Output:
|
||||
|
||||
@ -8073,6 +8046,54 @@ Toggle Waypoint
|
||||
[FEA_FMN]
|
||||
RADIO OFF
|
||||
|
||||
[FEC_DS2]
|
||||
DUALSHOCK 2
|
||||
|
||||
[FEC_DS3]
|
||||
DUALSHOCK 3
|
||||
|
||||
[FEC_DS4]
|
||||
DUALSHOCK 4
|
||||
|
||||
[FEC_360]
|
||||
XBOX 360 CONTROLLER
|
||||
|
||||
[FEC_ONE]
|
||||
XBOX ONE CONTROLLER
|
||||
|
||||
[FEC_TYP]
|
||||
GAMEPAD TYPE
|
||||
|
||||
[FEC_CCF]
|
||||
CONFIGURATION
|
||||
|
||||
[FEC_CF1]
|
||||
SETUP 1
|
||||
|
||||
[FEC_CF2]
|
||||
SETUP 2
|
||||
|
||||
[FEC_CF3]
|
||||
SETUP 3
|
||||
|
||||
[FEC_CF4]
|
||||
SETUP 4
|
||||
|
||||
[FEC_CDP]
|
||||
CONTROLLER DISPLAY
|
||||
|
||||
[FEC_ONF]
|
||||
ON FOOT
|
||||
|
||||
[FEC_INC]
|
||||
IN CAR
|
||||
|
||||
[FEC_VIB]
|
||||
VIBRATION
|
||||
|
||||
[FET_AGS]
|
||||
GAMEPAD SETTINGS
|
||||
|
||||
{ end of file }
|
||||
|
||||
[DUMMY]
|
||||
|
Loading…
Reference in New Issue
Block a user