Skip to content

Commit

Permalink
Allow using dpad left/right to navigate a whole page up or down, in t…
Browse files Browse the repository at this point in the history
…he toplevel menu.
  • Loading branch information
Daniel K. O. (dkosmari) committed Aug 6, 2024
1 parent 87bb3c5 commit 55aa50d
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions source/utils/config/ConfigRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ void ConfigRenderer::RenderStateMain() const {
// draw bottom bar
DrawUtils::drawRectFilled(8, SCREEN_HEIGHT - 24 - 8 - 4, SCREEN_WIDTH - 8 * 2, 3, COLOR_BLACK);
DrawUtils::setFontSize(18);
DrawUtils::print(16, SCREEN_HEIGHT - 10, "\ue07d Navigate ");
DrawUtils::print(16, SCREEN_HEIGHT - 10, "\ue07d/\ue07e Navigate ");
DrawUtils::print(SCREEN_WIDTH - 16, SCREEN_HEIGHT - 10, "\ue000 Select", true);

// draw scroll indicator
Expand Down Expand Up @@ -71,9 +71,19 @@ ConfigSubState ConfigRenderer::UpdateStateMain(const Input &input) {
}
auto prevSelectedItem = mCursorPos;

auto totalElementSize = mConfigs.size();
int32_t totalElementSize = mConfigs.size();
if (input.data.buttons_d & Input::eButtons::BUTTON_DOWN) {
mCursorPos++;
} else if (input.data.buttons_d & Input::eButtons::BUTTON_LEFT) {
mCursorPos -= MAX_BUTTONS_ON_SCREEN;
// avoid wraparound when moving whole page
if (mCursorPos < 0)
mCursorPos = 0;
} else if (input.data.buttons_d & Input::eButtons::BUTTON_RIGHT) {
mCursorPos += MAX_BUTTONS_ON_SCREEN;
// avoid wraparound when moving whole page
if (mCursorPos >= totalElementSize)
mCursorPos = totalElementSize - 1;
} else if (input.data.buttons_d & Input::eButtons::BUTTON_UP) {
mCursorPos--;
} else if (input.data.buttons_d & Input::eButtons::BUTTON_A) {
Expand All @@ -95,8 +105,8 @@ ConfigSubState ConfigRenderer::UpdateStateMain(const Input &input) {
}

if (mCursorPos < 0) {
mCursorPos = (int32_t) totalElementSize - 1;
} else if (mCursorPos > (int32_t) (totalElementSize - 1)) {
mCursorPos = totalElementSize - 1;
} else if (mCursorPos > totalElementSize - 1) {
mCursorPos = 0;
}

Expand Down

0 comments on commit 55aa50d

Please # to comment.