diff options
author | _AG <gennariarmando@outlook.com> | 2019-07-02 21:22:16 +0200 |
---|---|---|
committer | _AG <gennariarmando@outlook.com> | 2019-07-02 21:28:57 +0200 |
commit | 5afa330e7da88c6da7eb600d545be0bd722b7f1f (patch) | |
tree | 5528c867887149a951ca73ec2492d05a8c7f5a46 | |
parent | Implemented frontend inputs. (diff) | |
download | re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar.gz re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar.bz2 re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar.lz re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar.xz re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.tar.zst re3-5afa330e7da88c6da7eb600d545be0bd722b7f1f.zip |
-rw-r--r-- | src/Frontend.cpp | 154 | ||||
-rw-r--r-- | src/Pad.h | 17 |
2 files changed, 136 insertions, 35 deletions
diff --git a/src/Frontend.cpp b/src/Frontend.cpp index 8bff985b..c16c8c25 100644 --- a/src/Frontend.cpp +++ b/src/Frontend.cpp @@ -66,6 +66,21 @@ int8 DisplayComboButtonErrMsg; bool MouseButtonJustClicked; bool JoyButtonJustClicked; +// Frontend inputs. +bool GetPadBack(); +bool GetPadForward(); +bool GetPadMoveUp(); +bool GetPadMoveDown(); +bool GetPadMoveLeft(); +bool GetPadMoveRight(); +bool GetMouseForward(); +bool GetMouseBack(); +bool GetMousePos(); +bool GetMouseMoveLeft(); +bool GetMouseMoveRight(); +bool GetPadInput(); +bool GetMouseInput(); + char *FrontendFilenames[] = { "fe2_mainpanel_ul", "fe2_mainpanel_ur", @@ -696,13 +711,16 @@ void CMenuManager::Draw() CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(SavePageSlot ? MENUCOLUMN_SAVE_X : MENUCOLUMN_POS_X), vecPositions.y, textToPrint[MENUCOLUMN_RIGHT]); } - // Mouse support. - if (m_nCurrScreen == MENUPAGE_SKIN_SELECT || m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) { - //TODO: inputs for these pages. + // Mouse support. + // TODO: inputs for these pages. + if (m_nCurrScreen == MENUPAGE_SKIN_SELECT) { + } + else if (m_nCurrScreen == MENUPAGE_KEYBOARD_CONTROLS) { + } else { static bool bIsMouseInPosition = false; - if (m_nMenuFadeAlpha >= 255 && MOUSE_INPUT) { + if (m_nMenuFadeAlpha >= 255 && GetMouseInput()) { CVector2D vecInputSize = { SCREEN_SCALE_X(20.0f), SCREEN_SCALE_FROM_RIGHT(20.0f) }; if (m_bShowMouse && ((CheckHover(vecInputSize.x, vecInputSize.y, vecPositions.y, vecPositions.y + SCREEN_STRETCH_Y(20.0f))))) @@ -718,7 +736,7 @@ void CMenuManager::Draw() m_nPrevOption = m_nCurrOption; - if (MOUSE_LMB) + if (GetMouseForward()) m_nHoverOption = IGNORE_OPTION; else m_nHoverOption = ACTIVATE_OPTION; @@ -1360,7 +1378,7 @@ void CMenuManager::Process(void) m_nScreenChangeDelayTimer = CTimer::GetTimeInMillisecondsPauseMode(); } else { - if (PAD_ESC) + if (GetPadBack()) RequestFrontEndStartUp(); UnloadTextures(); @@ -1394,16 +1412,16 @@ void CMenuManager::ProcessButtonPresses() m_nMousePosY = SCREEN_HEIGHT; // Show/hide mouse cursor. - if (MOUSE_INPUT) + if (GetMouseInput()) m_bShowMouse = true; - else if (PAD_INPUT) + else if (GetPadInput()) m_bShowMouse = false; // Get number of menu options. uint8 NumberOfMenuOptions = GetNumberOfMenuOptions(); // Select next/previous option with pad. Mouse is done in drawing function. - if (PAD_UP) { + if (GetPadMoveUp()) { m_nPrevOption = m_nCurrOption; m_nCurrOption -= 1; @@ -1418,7 +1436,7 @@ void CMenuManager::ProcessButtonPresses() DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0); } - else if (PAD_DOWN) { + else if (GetPadMoveDown()) { m_nPrevOption = m_nCurrOption; m_nCurrOption += 1; @@ -1435,7 +1453,7 @@ void CMenuManager::ProcessButtonPresses() } // Set what happens if ESC is pressed. - if (PAD_ESC) { + if (GetPadBack()) { bool PlayEscSound = false; switch (m_nCurrScreen) { case MENUPAGE_START_MENU: @@ -1457,7 +1475,7 @@ void CMenuManager::ProcessButtonPresses() // TODO: finish hover options. // Set mouse buttons. - if (MOUSE_LMB) { + if (GetMouseForward()) { switch (m_nHoverOption) { case ACTIVATE_OPTION: if (m_nCurrOption || m_nCurrScreen != MENUPAGE_PAUSE_MENU) @@ -1472,8 +1490,8 @@ void CMenuManager::ProcessButtonPresses() // Process all menu options here, but first check if it's an option or a redirect. int32 CurrAction = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action; - if ((PAD_ENTER || MOUSE_LMB) || - ((PAD_LEFT || MOUSE_WHU) || (PAD_RIGHT || MOUSE_WHD)) && + if ((GetPadForward() || GetMouseForward()) || + ((GetPadMoveLeft() || GetMouseMoveRight()) || (GetPadMoveRight() || GetMouseMoveLeft())) && (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_TargetMenu == m_nCurrScreen && CurrAction != MENUACTION_CHANGEMENU && CurrAction != MENUACTION_LOADRADIO && @@ -1520,8 +1538,8 @@ WRAPPER void CMenuManager::ProcessOnOffMenuOptions() { EAXJMP(0x48AE60); } #else void CMenuManager::ProcessOnOffMenuOptions() { - int8 InputDirection = (PAD_LEFT || MOUSE_WHD) && (!PAD_ENTER && !MOUSE_LMB) ? -1 : 1; - int8 InputEnter = PAD_ENTER; + int8 InputDirection = (GetPadMoveLeft() || GetMouseMoveLeft()) && (!GetPadForward() && !GetMouseForward()) ? -1 : 1; + int8 InputEnter = GetPadForward(); uint8 NumberOfMenuOptions = GetNumberOfMenuOptions(); @@ -2078,7 +2096,7 @@ WRAPPER void CMenuManager::SwitchMenuOnAndOff() { EAXJMP(0x488790); } void CMenuManager::SwitchMenuOnAndOff() { // Just what the function name says. - if (PAD_START || m_bShutDownFrontEndRequested || m_bStartUpFrontEndRequested) { + if (m_bShutDownFrontEndRequested || m_bStartUpFrontEndRequested) { if (!m_bMenuActive) m_bMenuActive = true; @@ -2154,7 +2172,7 @@ void CMenuManager::WaitForUserCD() CPad::UpdatePads(); MessageScreen("NO_PCCD"); - if (PAD_ESC) { + if (GetPadBack()) { m_bQuitGameNoCD = true; RsEventHandler(rsQUITAPP, 0); } @@ -2270,6 +2288,106 @@ void CMenuManager::SetDefaultPreferences(int8 screen) }; } +// Frontend inputs. +bool GetPadBack() +{ + return + (CPad::GetPad(0)->NewKeyState.ESC && !CPad::GetPad(0)->OldKeyState.ESC) || + (CPad::GetPad(0)->NewState.Start && !CPad::GetPad(0)->OldState.Start) || + (CPad::GetPad(0)->NewState.Triangle && !CPad::GetPad(0)->OldState.Triangle); +} + +bool GetPadForward() +{ + return + (CPad::GetPad(0)->NewKeyState.EXTENTER && !CPad::GetPad(0)->OldKeyState.EXTENTER) || + (CPad::GetPad(0)->NewKeyState.ENTER && !CPad::GetPad(0)->OldKeyState.ENTER) || + (CPad::GetPad(0)->NewState.Cross && !CPad::GetPad(0)->OldState.Cross); +} + +bool GetPadMoveUp() +{ + return + (CPad::GetPad(0)->NewState.DPadUp && !CPad::GetPad(0)->OldState.DPadUp) || + (CPad::GetPad(0)->NewKeyState.UP && !CPad::GetPad(0)->OldKeyState.UP) || + (CPad::GetPad(0)->NewState.LeftStickY < 0 && !CPad::GetPad(0)->OldState.LeftStickY < 0); +} + +bool GetPadMoveDown() +{ + return + (CPad::GetPad(0)->NewState.DPadDown && !CPad::GetPad(0)->OldState.DPadDown) || + (CPad::GetPad(0)->NewKeyState.DOWN && !CPad::GetPad(0)->OldKeyState.DOWN) || + (CPad::GetPad(0)->NewState.LeftStickY > 0 && !CPad::GetPad(0)->OldState.LeftStickY > 0); +} + +bool GetPadMoveLeft() +{ + return + (CPad::GetPad(0)->NewState.DPadLeft && !CPad::GetPad(0)->OldState.DPadLeft) || + (CPad::GetPad(0)->NewKeyState.LEFT && !CPad::GetPad(0)->OldKeyState.LEFT) || + (CPad::GetPad(0)->NewState.LeftStickX < 0 && !CPad::GetPad(0)->OldState.LeftStickX < 0); +} + +bool GetPadMoveRight() +{ + return + (CPad::GetPad(0)->NewState.DPadRight && !CPad::GetPad(0)->OldState.DPadRight) || + (CPad::GetPad(0)->NewKeyState.RIGHT && !CPad::GetPad(0)->OldKeyState.RIGHT) || + (CPad::GetPad(0)->NewState.LeftStickX > 0 && !CPad::GetPad(0)->OldState.LeftStickX > 0); +} + +bool GetMouseForward() +{ + return + (CPad::GetPad(0)->NewMouseControllerState.LMB && !CPad::GetPad(0)->OldMouseControllerState.LMB); +} + +bool GetMouseBack() +{ + return + (CPad::GetPad(0)->NewMouseControllerState.RMB && !CPad::GetPad(0)->OldMouseControllerState.RMB); +} + +bool GetMousePos() +{ + return + (CPad::GetPad(0)->NewMouseControllerState.x != 0.0f || CPad::GetPad(0)->OldMouseControllerState.y != 0.0f); +} + +bool GetMouseMoveLeft() +{ + return + (CPad::GetPad(0)->NewMouseControllerState.WHEELDN && !CPad::GetPad(0)->OldMouseControllerState.WHEELDN != 0.0f); +} + +bool GetMouseMoveRight() +{ + return + (CPad::GetPad(0)->NewMouseControllerState.WHEELUP && !CPad::GetPad(0)->OldMouseControllerState.WHEELUP != 0.0f); +} + +bool GetPadInput() +{ + return + GetPadBack() || + GetPadForward() || + GetPadMoveUp() || + GetPadMoveDown() || + GetPadMoveLeft() || + GetPadMoveRight(); +} + +bool GetMouseInput() +{ + return + GetMouseForward() || + GetMouseBack() || + GetMousePos() || + GetMouseMoveLeft() || + GetMouseMoveRight(); +} + STARTPATCHES InjectHook(0x47A230, &CMenuManager::LoadAllTextures, PATCH_JUMP); InjectHook(0x47A440, &CMenuManager::UnloadTextures, PATCH_JUMP); @@ -1,22 +1,5 @@ #pragma once -// Some macros for frontend stuff. -#define PAD_START (CPad::GetPad(0)->NewState.Start && !CPad::GetPad(0)->NewState.Start) -#define PAD_ESC (CPad::GetPad(0)->NewKeyState.ESC && !CPad::GetPad(0)->OldKeyState.ESC) || (CPad::GetPad(0)->NewState.Triangle && !CPad::GetPad(0)->NewState.Triangle) -#define PAD_ENTER (CPad::GetPad(0)->NewKeyState.EXTENTER && !CPad::GetPad(0)->OldKeyState.EXTENTER) || (CPad::GetPad(0)->NewKeyState.ENTER && !CPad::GetPad(0)->OldKeyState.ENTER) || (CPad::GetPad(0)->NewState.Cross && !CPad::GetPad(0)->NewState.Cross) -#define PAD_UP (CPad::GetPad(0)->NewState.DPadUp && !CPad::GetPad(0)->OldState.DPadUp) || (CPad::GetPad(0)->NewKeyState.UP && !CPad::GetPad(0)->OldKeyState.UP) || (CPad::GetPad(0)->NewState.LeftStickY < 0 && !CPad::GetPad(0)->OldState.LeftStickY < 0) -#define PAD_DOWN (CPad::GetPad(0)->NewState.DPadDown && !CPad::GetPad(0)->OldState.DPadDown) || (CPad::GetPad(0)->NewKeyState.DOWN && !CPad::GetPad(0)->OldKeyState.DOWN) || (CPad::GetPad(0)->NewState.LeftStickY > 0 && !CPad::GetPad(0)->OldState.LeftStickY > 0) -#define PAD_LEFT (CPad::GetPad(0)->NewState.DPadLeft && !CPad::GetPad(0)->OldState.DPadLeft) || (CPad::GetPad(0)->NewKeyState.LEFT && !CPad::GetPad(0)->OldKeyState.LEFT) || (CPad::GetPad(0)->NewState.LeftStickX < 0 && !CPad::GetPad(0)->OldState.LeftStickX < 0) -#define PAD_RIGHT (CPad::GetPad(0)->NewState.DPadRight && !CPad::GetPad(0)->OldState.DPadRight) || (CPad::GetPad(0)->NewKeyState.RIGHT && !CPad::GetPad(0)->OldKeyState.RIGHT) || (CPad::GetPad(0)->NewState.LeftStickX > 0 && !CPad::GetPad(0)->OldState.LeftStickX > 0) -#define MOUSE_LMB (CPad::GetPad(0)->NewMouseControllerState.LMB && !CPad::GetPad(0)->OldMouseControllerState.LMB) -#define MOUSE_RMB (CPad::GetPad(0)->NewMouseControllerState.RMB && !CPad::GetPad(0)->OldMouseControllerState.RMB) -#define MOUSE_POS (CPad::GetPad(0)->NewMouseControllerState.x != 0.0f || CPad::GetPad(0)->NewMouseControllerState.y != 0.0f) -#define MOUSE_WHU (CPad::GetPad(0)->NewMouseControllerState.WHEELUP && !CPad::GetPad(0)->OldMouseControllerState.WHEELUP != 0.0f) -#define MOUSE_WHD (CPad::GetPad(0)->NewMouseControllerState.WHEELDN && !CPad::GetPad(0)->OldMouseControllerState.WHEELDN != 0.0f) - -#define PAD_INPUT (PAD_ESC || PAD_ENTER || PAD_UP || PAD_DOWN || PAD_LEFT || PAD_RIGHT) -#define MOUSE_INPUT (MOUSE_LMB || MOUSE_RMB || MOUSE_POS || MOUSE_WHU || MOUSE_WHD) - // same as RW skeleton /* enum Key |