1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-20 16:16:36 +00:00

Use wrap helper function to simplify some controller handler logic

This commit is contained in:
Andrew Lanzone 2025-05-20 00:27:14 -07:00
parent f03f242e4a
commit 23c733ef94
6 changed files with 13 additions and 50 deletions

View file

@ -488,10 +488,7 @@ namespace MWGui
return true; return true;
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == 0) mControllerFocus = wrap(mControllerFocus - 1, mButtons.size());
mControllerFocus = mButtons.size() - 1;
else
mControllerFocus--;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN)
@ -502,10 +499,7 @@ namespace MWGui
return true; return true;
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == mButtons.size() - 1) mControllerFocus = wrap(mControllerFocus + 1, mButtons.size());
mControllerFocus = 0;
else
mControllerFocus++;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
@ -715,19 +709,13 @@ namespace MWGui
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT)
{ {
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == 0) mControllerFocus = wrap(mControllerFocus - 1, mButtons.size());
mControllerFocus = mButtons.size() - 1;
else
mControllerFocus--;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT)
{ {
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == mButtons.size() - 1) mControllerFocus = wrap(mControllerFocus + 1, mButtons.size());
mControllerFocus = 0;
else
mControllerFocus++;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
return true; return true;

View file

@ -183,19 +183,13 @@ namespace MWGui
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP)
{ {
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == 0) mControllerFocus = wrap(mControllerFocus - 1, mButtons.size());
mControllerFocus = mButtons.size() - 1;
else
mControllerFocus--;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN)
{ {
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == mButtons.size() - 1) mControllerFocus = wrap(mControllerFocus + 1, mButtons.size());
mControllerFocus = 0;
else
mControllerFocus++;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }

View file

@ -764,9 +764,7 @@ namespace
{ {
// Scroll through the list of quests or topics // Scroll through the list of quests or topics
mButtons[mSelectedQuest]->setStateSelected(false); mButtons[mSelectedQuest]->setStateSelected(false);
mSelectedQuest--; mSelectedQuest = MWGui::wrap(mSelectedQuest - 1, mButtons.size());
if (mSelectedQuest < 0)
mSelectedQuest = mButtons.size() - 1;
mButtons[mSelectedQuest]->setStateSelected(true); mButtons[mSelectedQuest]->setStateSelected(true);
} }
return true; return true;
@ -777,9 +775,7 @@ namespace
{ {
// Scroll through the list of quests or topics // Scroll through the list of quests or topics
mButtons[mSelectedQuest]->setStateSelected(false); mButtons[mSelectedQuest]->setStateSelected(false);
mSelectedQuest++; mSelectedQuest = MWGui::wrap(mSelectedQuest + 1, mButtons.size());
if (mSelectedQuest > mButtons.size() - 1)
mSelectedQuest = 0;
mButtons[mSelectedQuest]->setStateSelected(true); mButtons[mSelectedQuest]->setStateSelected(true);
} }
return true; return true;

View file

@ -461,10 +461,7 @@ namespace MWGui
return true; return true;
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == 0) mControllerFocus = wrap(mControllerFocus - 1, mButtons.size());
mControllerFocus = mButtons.size() - 1;
else
mControllerFocus--;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT) else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT)
@ -475,10 +472,7 @@ namespace MWGui
return true; return true;
mButtons[mControllerFocus]->setStateSelected(false); mButtons[mControllerFocus]->setStateSelected(false);
if (mControllerFocus == mButtons.size() - 1) mControllerFocus = wrap(mControllerFocus + 1, mButtons.size());
mControllerFocus = 0;
else
mControllerFocus++;
mButtons[mControllerFocus]->setStateSelected(true); mButtons[mControllerFocus]->setStateSelected(true);
} }

View file

@ -520,10 +520,7 @@ namespace MWGui
else if (arg.button == SDL_CONTROLLER_BUTTON_Y) else if (arg.button == SDL_CONTROLLER_BUTTON_Y)
{ {
uint32_t index = mCharacterSelection->getIndexSelected(); uint32_t index = mCharacterSelection->getIndexSelected();
if (index >= mCharacterSelection->getItemCount() - 1) index = wrap(index + 1, mCharacterSelection->getItemCount());
index = 0;
else
index++;
mCharacterSelection->setIndexSelected(index); mCharacterSelection->setIndexSelected(index);
onCharacterSelected(mCharacterSelection, index); onCharacterSelected(mCharacterSelection, index);
} }

View file

@ -1144,10 +1144,7 @@ namespace MWGui
else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER) else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER)
{ {
uint32_t index = mSettingsTab->getIndexSelected(); uint32_t index = mSettingsTab->getIndexSelected();
if (index <= 0) index = wrap(index - 1, mSettingsTab->getItemCount());
index = mSettingsTab->getItemCount() - 1;
else
index--;
mSettingsTab->setIndexSelected(index); mSettingsTab->setIndexSelected(index);
return true; return true;
@ -1155,10 +1152,7 @@ namespace MWGui
else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)
{ {
uint32_t index = mSettingsTab->getIndexSelected(); uint32_t index = mSettingsTab->getIndexSelected();
if (index >= mSettingsTab->getItemCount() - 1) index = wrap(index + 1, mSettingsTab->getItemCount());
index = 0;
else
index++;
mSettingsTab->setIndexSelected(index); mSettingsTab->setIndexSelected(index);
return true; return true;