Moved settings related to the game itself into its own settings save file. Emscripten build also saves a separate system settings file in indexeddb. Added checks to prevent menu sounds from playing when the menu is not currently open, but adjusted in a different location in the game. Implemented different button icon sets and a setting to toggle between them. Removed the double button display (caused more confusion and took up more room). Fixed a bug with iterating through navigation groups when a button was removed/disabled from the list. Removed iconscaling dependency based on MenuIconButton sizes.
conststd::vector<std::string>*inputGroup=&InputGroup::menuInputGroups;//First we detect which input group this mouse binding is for. Each group can individually have one key bound to each mouse button, that's why we first detect which group we actually care about.
if(Menu::menus[NEW_INPUT]->B(A::IS_KEYBOARD)){//We are requesting a brand new input.
conststd::vector<std::string>*inputGroup=&InputGroup::menuInputGroups;//First we detect which input group this mouse binding is for. Each group can individually have one key bound to each mouse button, that's why we first detect which group we actually care about.
//Next we need to iterate through that group and check for any already-bound buttons for the mouse button we are about to apply. Get rid of the keybinds from there.
//Next we need to iterate through that group and check for any already-bound buttons for the mouse button we are about to apply. Get rid of the keybinds from there.
if(OppositeRingSlotDoesNotMatchCurrentEquip(comp.lock())){//If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply.
if(OppositeRingSlotDoesNotMatchCurrentEquip(comp.lock())){//If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply.
Component<MenuIconButton>(SETTINGS,"Button Set Toggle Box")->Click();
iterationCount++;
}
if(iterationCount>=maxIterations)ERR("WARNING! Reached the max iteration count while cycling through controller icons! Failed to reach target icon set. THIS SHOULD NOT BE HAPPENING!")
if(DATA.GetProperty("Inputs.Menu Input Names").GetValueCount()%2==1&&col==1&&row==menuRowCount-1)continue;//We only continue on a blank space when we have an odd number of elements.
#pragma region New controller input binding listener
#pragma region New controller input binding listener
usingA=Attribute;
usingA=Attribute;
if(Menu::IsMenuOpen()&&Menu::stack.back()==Menu::menus[NEW_INPUT]&&!Menu::menus[NEW_INPUT]->B(A::IS_KEYBOARD)){//We are requesting a brand new controller input.
break;//There's no reason to be doing anything here if we navigate with the mouse.
break;//There's no reason to be doing anything here if we navigate with the mouse.
}
}
iterationCount++;
iterationCount++;
if(iterationCount==MAX_ITERATIONS)ERR("WARNING! We've entered the max iteration count of automatic Menu navigation! THIS LIKELY MEANS WE'VE DONE SOMETHING TERRIBLY WRONG!");
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
//ALSO NOTE: The menu inputs are saved to the system file while gameplay inputs are per-character and saved to the character settings file!
if(DATA.GetProperty("Inputs.Menu Input Names").GetValueCount()%2==1&&col==1&&row==menuRowCount-1)continue;//We only continue on a blank space when we have an odd number of elements.
if(DATA.GetProperty("Inputs.Menu Input Names").GetValueCount()%2==1&&col==1&&row==menuRowCount-1)continue;//We only continue on a blank space when we have an odd number of elements.
//HACK ALERT! It's possible that on X11 the actual reported window position is offset later when we set it. We will set it now to see if it moves or adjusts, and use that new position instead as the position we save.
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
if(DATA.GetProperty("Inputs.Menu Input Names").GetValueCount()%2==1&&col==1&&row==menuRowCount-1)continue;//We only continue on a blank space when we have an odd number of elements.
settingsWindow->ADD("Button Set Toggle Box",MenuIconButton)(geom2d::rect<float>{{windowSize.x/8.f,112},{windowSize.x/4.f,16.f}},GFX["themes/xb.png"].Decal(),[](MenuFuncDatadata){
ERR(std::format("WARNING! Unhandled icon type {}!",int(GameSettings::GetIconType())));
}
}
returntrue;
})END;
#pragma region Setup all input displays as keyboard controls.
#pragma region Setup all input displays as keyboard controls.
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
//NOTE: We are shadowing code from InputKeyboardWindow! If at some point the retrival method for getting input displays changes, we likely will be changing the code here as well!
- Track items used during a stage, on death, restore the loadout item quantities used.
- Track items used during a stage, on death, restore the loadout item quantities used.
- Toggle between Playstation / Xbox controller gamepad displays
- Toggle between Playstation / Xbox controller gamepad displays
- Rebind FACELEFT/FACERIGHT menu keys (as they are used constantly throughout menus and would need to be rebinded if the player wants). (Or make confirm/back not rebindable)
- Rebind FACELEFT/FACERIGHT menu keys
Open window to the correct position/size at the beginning of the game if possible.
Open window to the correct position/size at the beginning of the game if possible.
@ -31,6 +31,4 @@ January 31st
- Auto aim causes retreat-type moves to aim away from the auto target, and prefer the direction the player's moving in.
- Auto aim causes retreat-type moves to aim away from the auto target, and prefer the direction the player's moving in.
- Condense stage track (loading times)
- Condense stage track (loading times)
- If you enter the keyboard config menu and press a controller button, it cancels the request. If you enter the controller config menu and press a keyboard/mouse button, it also cancels the request.