bradharding / doomretro

The classic, refined DOOM source port. For Windows PC.
https://www.doomretro.com
GNU General Public License v3.0
698 stars 88 forks source link

Multiple binds per key errata (+multiple keys per bind) #845

Closed seascape closed 1 month ago

seascape commented 1 month ago

In Doom I normally bind the V key to +weapon7 and +followmode. That one key can have two binds because the BFG selection only occurs when the automap is off and the followmode toggle when the automap is on. Ports like Chocolate, Woof!, and GZDoom allow this.

This is also how the +grid bind already works in Doom Retro. Pressing G with automap off selects my plasma gun, pressing G with automap on toggles grid mode. Perfect.

However Doom Retro doesn't seem to let the +followmode bind share its key assignment like that. It only seems to respect whichever bind is lower/later in the .cfg file; the higher/earlier one gets deleted. (Since Doom Retro auto-sorts the binding list in the .cfg this means the +weapon7 bind always persists while +followmode gets deleted.)

Given the difference in behavior in +grid vs. +followmode this seems like a breakdown in consistency? It would be nice if I could bind V to both +followmode and +weapon7.

Different but related issue: Doom Retro also seems picky about the number of keys that can be bound to a given command.

For example I noticed that Doom Retro only allows one key per weapon selection command. I couldn't have both T and the traditional rocket launcher bind 5 coexist for +weapon5 for example. If there's no reason to disallow multiple binds per command I think it would be nice to allow. Currently it only seems to respect whichever bind is lower in the .cfg file; the higher one gets deleted.

bradharding commented 1 month ago

Thanks for letting me know. The inconsistency with +followmode has been fixed in fc28780270e761d5688f0808dbb03617f6ff5a14.

Doom Retro also seems picky about the number of keys that can be bound to a given command.

At the moment only the actions +back, +forward, +strafeleft, +straferight and +use can be bound to 2 different keys. I'll work on extending this for all actions.