Why does the ModuleManager change my mouse cursor into the “wait” cursor after I load a module and keep it in this state, even though I can still interact with the ModuleManager and start another Player instance or click around in the menus?
Why does the Player not appear in my task manager / alt+tab’s application list when it is still in the “wizard” or “load game” state? It’s not convenient, if I switch away from the Player when it’s in this initial state I have to minimize all other windows to get it back.
That’s the module managers icon for a module. The icon for an Extension is a Cogwheel. There where plans to show save and log files in the module manager as well and they would have had some other icon. They are basically place-holder icons I grabbed from the Tango Icon set and no-one has ever been bothered to find or make better ones.
The last question is because the app doesn’t have a “main” window yet.
A great way to fix that would be to replace the Wizard. That would also
have the pleasant side-effect of removing some of the worst code in
VASSAL (WizzardSupport) and a dependency on a library which hasn’t been
maintained in ages (wizard.jar).
Seriously, do that. That would be an excellent contribution.
I mean really the flow when you start the Editor, just without the editor window, is “almost good enough” – you get an app main window with a File menu that has “New Game” and “Load Game” options, both of which work.
The main question is… should we fancy it up with a “Start Screen” that displays the module’s “About” logo and has more prominent buttons for “New Game” and “Load Game”. Would just involve a certain amount of “graphic design” putting the logo and buttons up in a reasonably professional-looking way and then getting rid of them in favor of the map once the game starts.
Or more minimally we could just put a message saying “start or load a game from the File menu”. Might be jarring for players used to seeing the logo of their game come up, but it would be fully functional.
Here’s a mockup of the kind of thing I mean (SCROLL DOWN – the interesting part is at the bottom). Buttons would just activate the same “action” as the corresponding entries off the file menu, so there is no multi-stage-wizard-stuff going on.
Discussion would be how to allow user to achieve this w/ a “reasonably decent looking result” – allow them to supply their own button background images, etc? Obviously “we know how to do that”. We could also force the chatter smaller while the setup screen is up, etc (or really if it just shrunk to the size it normally shrinks to during play it would be fine – perhaps it would do that if it had a “SetupWindow” competing with it for layout space). And we’d need to handle things like “Modules with 31 Predefined Scenarios”.
This is stuff we can do “with tools we have lying around the house”.
Well one does want players “new to vassal” to be able to come in and figure out how to get a game going reasonably easily. Minimizing friction to new adopters is definitely a thing. So if e.g. you didn’t have your name and password set and you picked “New Game” and it just rejected you telling you to go off to the right place and set your name and password first, that’s a lot of friction. Maybe you’re allowed to fall through as “Newbie”.
Since posting above I’ve realized that even the File menu’s New Game ends up calling into part of the wizard flow.
So there are various possibilities:
Roll some new wizard tech with the same basic "flow – get rid of the old library, refactor the wizard code, but leave the UI flow pretty much the same.
Mitigated no-wizard-at-all (more like my mockup above… maybe some prompting to pick a “Side” and/or a “Map” when you cold start)
… I’ll just keep doing what I’m good at for now, improving code quality in general, making builds and contributing more convenient etc.
Once we know what kind of wizard we want exactly AND someone is able to convince me that writing Swing in 2020 makes sense, or is willing to take JavaFX into the project, I might see about writing that new wizard.
Or if you want me to grab the axe and chop down the existing code without any replacement, just shout. Removing code is the best kind of refactoring
Hey I think you should totally have a go at a new wizard in Swing. I mean why NOT write it in Swing since the whole rest of the project’s in it? Think of it as “maintaining a Swing project”.
We could consider dispensing with the “launch screen” part of the wizard as a nod to Joel – in other words the normal bootup is to a main window either like what you get now when you open Editor or slightly friendlier like my Mockup (with or without the fancy buttons, but in any event the main screen), and only go into wizard mode when player selects to start a new game (so then help player through the steps of pick-your-side, pick-your-password-if-needed, pick-your map, whatever). Also there are some “extra steps” in the Wizard right now like you hit pick “Load Game” and then you have to hit another button to “Select File” before it brings up the file dialog, stuff like that.
I’d be happy to ride along as your “front end” and UI consultant
Btw I always use the wizard, I know I could do the same from the menu, and have seen an option somewhere to disable the wizard, but it supports the two use-cases I have for Vassal - start a new game, or load an existing save.
With the ugly UI, I only ever looked on the right side where the “new game” “load game” options are and the buttons at the bottom, but yes the part on the left is ugly, writing black text on top of the board game’s cover art can obviously end up in black text being written on dark background and becoming unreadable.
But the UI inside Vassal is ugly AF too, dialogs and menus without borders and alignment so the options and fields are 1px away from the border, every module having different icons for the same buttons. Yes of course, every module designer knows what is best, sure… who had the glorious idea of allowing that level of customization
The wizard is actually the most consistent UI in all of Vassal.
And to Swing, no. Last time I had to use Swing was in Java 1.5 times for education projects at the uni. And Swing was already not cool back then. Today, it’s JavaFX for new code. It can be embedded into Swing applications, a Swing JComponent can be a container for FX contents.
As long as you’re noodling over the wizard, perhaps (if it’s retained) this is a good opportunity to head off an extremely common user misunderstanding and frustration point. Add some instructional text to the name/password selection dialog stressing the actual usage of this information and informing people how they’d subsequently review it or change it (especially since this is a one-time prompt). Combo this with a button in Preferences to actually see your current password so you don’t have to go digging in text files in obscure locations in your filesystem.
Having done the explanation many times, it really does take quite a lengthy script to get users to understand why they suddenly can’t get into their ongoing game and how to recover from it.