From 9688f099e78aba61699cb75b2819037e4e6cb29b Mon Sep 17 00:00:00 2001 From: ENA <62568994+yannis-stefanelli@users.noreply.github.com> Date: Sun, 2 Apr 2023 02:50:43 +0200 Subject: [PATCH 1/3] LCTRL random button + SHIFT combo --- src/SSVOpenHexagon/Core/MenuGame.cpp | 49 ++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/SSVOpenHexagon/Core/MenuGame.cpp b/src/SSVOpenHexagon/Core/MenuGame.cpp index 4dcc6f7a..896eafe5 100644 --- a/src/SSVOpenHexagon/Core/MenuGame.cpp +++ b/src/SSVOpenHexagon/Core/MenuGame.cpp @@ -337,7 +337,6 @@ MenuGame::MenuGame(Steam::steam_manager& mSteamManager, lvlDrawer->YScrollTo = 0; } } - return; } @@ -1015,6 +1014,49 @@ void MenuGame::initInput() game.addInput( // hardcoded {{k::F4}}, [this](ssvu::FT /*unused*/) { reloadAssets(true); }, t::Once); + + game.addInput( // hardcoded + {{k::LControl}}, [this](ssvu::FT /*unused*/) { + int randomLevel; + + if (lvlDrawer->levelDataIds->size() == 1) + return; + + randomLevel = ssvu::getRndI(0, lvlDrawer->levelDataIds->size()); + + if (randomLevel >= lvlDrawer->levelDataIds->size()) + setIndex(0); + else + setIndex(randomLevel); + playSoundOverride("beep.ogg"); + }, + t::Once); + + game.addInput( // hardcoded + {{k::LControl, k::LShift}}, [this](ssvu::FT /*unused*/) { + int randomCollection; + + if (getSelectablePackInfosSize() == 1) + return; + randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); + + changePackTo(randomCollection); + playSoundOverride("beep.ogg"); + }, + t::Once); + + game.addInput( // hardcoded + {{k::LControl, k::RShift}}, [this](ssvu::FT /*unused*/) { + int randomCollection; + + if (getSelectablePackInfosSize() == 1) + return; + randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); + + changePackTo(randomCollection); + playSoundOverride("beep.ogg"); + }, + t::Once); } void MenuGame::runLuaFile(const std::string& mFileName) @@ -1932,7 +1974,7 @@ void MenuGame::upAction() // and scroll the menu to show it. if(prevIdx < 0) { - setIndex(lvlDrawer->levelDataIds->size() - 1); + setIndex(lvlDrawer->levelDataIds->size() - 1); //*/ calcScrollSpeed(); const float scroll{ @@ -4993,7 +5035,8 @@ void MenuGame::drawLevelSelectionRightSide( tempString = isFavoriteLevels() ? "PRESS F2 TO SHOW ALL LEVELS" : "PRESS F2 TO SHOW FAVORITE LEVELS"; renderTextCentered(tempString, txtSelectionSmall.font, topLeft); - tempString = "\nHOLD FOCUS TO JUMP BETWEEN PACKS"; + + tempString = "\nPRESS RCONTROL TO SELECT A RANDOM LEVEL\nHOLD FOCUS TO JUMP BETWEEN PACKS"; renderTextCentered(tempString, txtSelectionSmall.font, topLeft); //---------------------------------------- From 1c3d0beabaabda016599239289e44ceb17d346d1 Mon Sep 17 00:00:00 2001 From: ENA <62568994+yannis-stefanelli@users.noreply.github.com> Date: Sun, 2 Apr 2023 16:54:48 +0200 Subject: [PATCH 2/3] PR clean --- src/SSVOpenHexagon/Core/MenuGame.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SSVOpenHexagon/Core/MenuGame.cpp b/src/SSVOpenHexagon/Core/MenuGame.cpp index 896eafe5..efa92dcf 100644 --- a/src/SSVOpenHexagon/Core/MenuGame.cpp +++ b/src/SSVOpenHexagon/Core/MenuGame.cpp @@ -1974,7 +1974,7 @@ void MenuGame::upAction() // and scroll the menu to show it. if(prevIdx < 0) { - setIndex(lvlDrawer->levelDataIds->size() - 1); //*/ + setIndex(lvlDrawer->levelDataIds->size() - 1); calcScrollSpeed(); const float scroll{ @@ -5036,7 +5036,7 @@ void MenuGame::drawLevelSelectionRightSide( : "PRESS F2 TO SHOW FAVORITE LEVELS"; renderTextCentered(tempString, txtSelectionSmall.font, topLeft); - tempString = "\nPRESS RCONTROL TO SELECT A RANDOM LEVEL\nHOLD FOCUS TO JUMP BETWEEN PACKS"; + tempString = "\nPRESS LCONTROL TO SELECT A RANDOM LEVEL\nHOLD FOCUS TO JUMP BETWEEN PACKS"; renderTextCentered(tempString, txtSelectionSmall.font, topLeft); //---------------------------------------- From 3b56e0402c71654578fd7b008a821dbc225445f3 Mon Sep 17 00:00:00 2001 From: ENA <62568994+yannis-stefanelli@users.noreply.github.com> Date: Wed, 5 Apr 2023 23:59:58 +0200 Subject: [PATCH 3/3] Hardcoded KeyCombo Lambda / rework. New behavior now never goes back to same index (was annoying) --- src/SSVOpenHexagon/Core/MenuGame.cpp | 68 ++++++++++++++++------------ 1 file changed, 40 insertions(+), 28 deletions(-) diff --git a/src/SSVOpenHexagon/Core/MenuGame.cpp b/src/SSVOpenHexagon/Core/MenuGame.cpp index efa92dcf..309bb065 100644 --- a/src/SSVOpenHexagon/Core/MenuGame.cpp +++ b/src/SSVOpenHexagon/Core/MenuGame.cpp @@ -1014,49 +1014,61 @@ void MenuGame::initInput() game.addInput( // hardcoded {{k::F4}}, [this](ssvu::FT /*unused*/) { reloadAssets(true); }, t::Once); + + ////////// + // Will move to bindable keys shortly - game.addInput( // hardcoded - {{k::LControl}}, [this](ssvu::FT /*unused*/) { - int randomLevel; + game.addInput( // hardcoded + {{k::LControl}}, [this](ssvu::FT /*unused*/) { + int randomLevel; + int oldIndex = lvlDrawer->currentIndex; - if (lvlDrawer->levelDataIds->size() == 1) - return; + if (lvlDrawer->levelDataIds->size() == 1) //if there is only 1 index, skip + return; - randomLevel = ssvu::getRndI(0, lvlDrawer->levelDataIds->size()); + randomLevel = ssvu::getRndI(0, lvlDrawer->levelDataIds->size()); + + while (oldIndex == randomLevel) //prevents random from landing back on current index + randomLevel = ssvu::getRndI(0, lvlDrawer->levelDataIds->size()); - if (randomLevel >= lvlDrawer->levelDataIds->size()) - setIndex(0); - else setIndex(randomLevel); - playSoundOverride("beep.ogg"); - }, - t::Once); + playSoundOverride("beep.ogg"); + }, + t::Once); + + auto focusRandom = [this]() { //lambda for LCtrl + L/RShift (Focus) - game.addInput( // hardcoded - {{k::LControl, k::LShift}}, [this](ssvu::FT /*unused*/) { int randomCollection; + std::string oldIndex = currentPack->name; - if (getSelectablePackInfosSize() == 1) + if (getSelectablePackInfosSize() == 1) //if there is only 1 collection, skip return; - randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); + randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); changePackTo(randomCollection); - playSoundOverride("beep.ogg"); - }, - t::Once); - game.addInput( // hardcoded - {{k::LControl, k::RShift}}, [this](ssvu::FT /*unused*/) { - int randomCollection; + while (oldIndex == currentPack->name){ //prevents random from landing back on current collection - if (getSelectablePackInfosSize() == 1) - return; - randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); + randomCollection = ssvu::getRndI(0, getSelectablePackInfosSize()); + changePackTo(randomCollection); + } - changePackTo(randomCollection); playSoundOverride("beep.ogg"); - }, - t::Once); + }; + + game.addInput( // hardcoded + {{k::LControl, k::LShift}}, [this, focusRandom](ssvu::FT /*unused*/) { + focusRandom(); + }, + t::Once); + + game.addInput( // hardcoded + {{k::LControl, k::RShift}}, [this, focusRandom](ssvu::FT /*unused*/) { + focusRandom(); + }, + t::Once); + + ////////// } void MenuGame::runLuaFile(const std::string& mFileName)