Show correct button glyph for interact if Enter/E are not split

I thought 2.2 already had separate map and interact gamepad bindings,
and they simply got neglected and broken with 2.3's split Enter/E key
option. But actually, the new split Enter/E option also applied to
gamepad buttons, and a separate interact binding was added, without
really indicating anything if Enter and E are not split. And I guess
using the same button for map and interact by default also makes sense
for simplicity...

This commit makes sure the button glyph displayed in-game is at least
the correct button. The gamepad bindings menu is also slightly modified
to darken the interact option - the button glyphs code now
automatically causes them to show equal buttons anyway, so it wasn't
too big of a change to also darken the line and disable the binding
option. To me this says: "the interact key is fixed to be the same as
enter right now, but there is a way to change it."

It's still not ideal of course, and I know a similar change to the
gamepad menu to hide the interact option was rejected a year ago
because action sets would already fix it, but it's a year later now,
and showing misleading button glyphs should be fixed in 2.4, whether it
will already have action sets or not (And at this point I think the
plan already is to keep the existing input system for 2.4)

And it's a 3 line diff to darken and disable the option, compared to
fully hiding the option.
This commit is contained in:
Dav999-v
2023-03-26 05:19:01 +02:00
committed by Misa Elizabeth Kai
parent a2c3f47748
commit c3e251fea9
4 changed files with 10 additions and 3 deletions

View File

@@ -244,7 +244,13 @@ const char* BUTTONGLYPHS_get_button(const ActionSet actionset, const Action acti
case Action_InGame_Interact:
if (show_controller)
{
return glyph_for_vector(game.controllerButton_interact, binding);
/* FIXME: this really does depend on the Enter/E speedrunner option...
* This is messy, but let's not show the wrong thing here... */
if (game.separate_interact)
{
return glyph_for_vector(game.controllerButton_interact, binding);
}
return glyph_for_vector(game.controllerButton_map, binding);
}
if (game.separate_interact)
{