Bugzilla – Bug 13145
Send Hot Key ignored by Deck
Last modified: 2021-03-26 21:12:14 CET
This problem exists also in previous Vassal versions.
A module can have multiple decks sharing the same command key to trigger a re-shuffle (the "Send Hot-Key"). However, only one of the decks will actually respond to the command key and be re-shuffled to its target deck.
This bug prevents automation of the re-shuffle action for one or more decks sharing a common Send Hot-Key.
Example - Commands & Colors Napoleonics, v3.42.
To recreate using the example module;
1. Start any of the preset scenarios and any command deck option, along with the Tactician deck.
2. draw and discard a card from each of these decks.
3. Observe how the right-click menu for each deck presents a reshuffle option, both keyed to "ALT CTRL SHIFT L".
4. Try pressing ALT CTRL SHIFT L on the leftmost discard pile (Command Deck). Observe that it has no effect.
5. Repeat with rightmost discard pile (Red/tactician deck). Observe that the deck is reshuffled.
6. repeat step 2-5 but this time simply select the right-click menu option, observe that it performs correctly in both cases.
Having a look at this, it looks like "Send Hot-Key" creates a Global Hot key, these are overwritten on build (which is why you get only one working), assumedly this is a design choice as-to not make the global hot keys messy, and be able to update them dynamically, if desired... So changing this, would risk breaking other modules.
I've been trying to figure out an alternative method for you, which at the moment, I'm feeling will be something along-the-lines-of defining unique global hot keys for left and right discard piles, then having a separately defined global hot key which will execute a sequence of global hot keys assigned to the left, then right discard piles.
@more knowledgable VASSAL devs: please correct me if I'm talking complete garbage here.
Thanks for looking at this Stewart.
I hadn't appreciated that distinct features of Global Hot Keys compared to an ordinary right-click command key.
The solution that I found to my requirement was to put a "send to deck" (targeted on the draw deck) command on each card with a hidden command-key combination. Then I have a global key command to send that command to the Discard Pile whenever I need to trigger a shuffle.
This problem report is now less important to me but I think it shows that it would be useful to be able to "Refresh" the properties of a Deck using the "Refresh Counters" function, as we have a situation where an error in preset scenarios cannot be corrected except by rebuilding the entire set of scenarios.
So I've had a look at GameRefresher.. and it looks like it *should* refresh all Deck GamePiece's currently loaded... without me reading over it more than once..
I can see that you would probably have to load each vsav file, then save them and put them back in the module...
Are you asking that the GameRefresher also loads (and saves) all .vsav files in your module? Or is the refresher not refreshing the Decks properly after you load the save?
Having another look at the code, there might be a clue commented in the header of this file:
Note: Counters that are Hidden or Obscured to us cannot be updated.
I assume this means theModule.getGameState().getAllPieces() might not get hidden items..
Having seen your module, it has buttons so the user can add the Decks they want, so assumedly they could be hidden... that could be why this is happening.
This might be worth opening another bug for, to be honest.
I'll do a bit more digging when I get some time.
The issue is not the pieces within the decks. Yes, the Refresher does deal with them.
However, so far, I have been unsuccessful in propagating any changes to properties of a DECK (or At-Stack Stacks, proper for that matter.
It is possible to define the same Hot Key on multiple decks but only one will work. A further issue arises once a module has got pre-set scenarios, because it is not possible to change Deck properties and propagate those changes to the pre-set scenarios. Hence this tickets is linked to 13824 for a fix to the later issue.
I was mistaken to infer that a duplicated hot-key would not reshuffle both decks.
In fact, only the manual keyboard hotkey is affected. If the Global Hotkey trait provides the keystroke then both decks sharing that hotkey are shuffled.