This removes the use_prng Advanced Preferences option and replaces it
with a new possible value for randomness in the game classification
class, "biased". It also changes the enumeration label for it in the
GUI2 campaign dialog.
It also makes it so the synced RNG is automatically used with this
option as well as the existing deterministic randomness option ("save
random seed").
CC: issue #4543
(N.B. This is a monolithic mega-commit because of a bunch of
experimental phase changes that necessitated constant changes to both
engine code and UI WML.)
This redesigns the campaign selection dialog implementing a
campaign-defined background image that changes depending on the selected
campaign, specified by the [campaign] background= attribute; adding a
menu button for selecting the RNG mechanism in use (default RNG vs.
predictable RNG a.k.a. "save random seed"); and finally, adding a menu
button for selecting the campaign difficulty without having to go
through the campaign difficulty selection dialog.
A huge amount of changes to the UI WML were required for this to say the
least.
This also adds the following new widget definitions:
* toggle_button: listbox_header_centered, listbox_header_bg,
listbox_header_centered_bg
* panel: panel_listbox_bg, campaign_menu_bg
As a side effect, two private methods in
gui2::dialogs::campaign_selection() are no longer const-qualified. No
idea why they were const-qualified in the first place, but it
interferred with some of the new code in a major way.
The URL widgets (textbox + copy button + browse button) predate the
implementation of link-awareness in labels and they sort of got carried
over into the new design magically without there being a real need for
that. Now that we have a visible cursor change when hovering links it's
even less necessary to draw unnecessary attention to the link with a
clunky and unintuitive (greyed out textbox...) interface.
Fixes the text of menu_buttons being 1 pixel too high. Seems this is a relic from 2016 and me tweaking the
formula to try and get things more centered in buttons... But in that case, adjustments shuld probably be
directly made to buttons, not here.
Back when link awareness was first added (https://github.com/wesnoth/wesnoth/pull/300), this key was added
globally to label definitions alongside link_color. This had the unintended side effect of making *all* labels
link aware, leading to issues such as being able to open a do-you-want-to-open prompt from an instance of the
same ad-infinitum.
This became an active issue after 213453e6cf, since now that labels could capture
focus if link_aware was true - which it always was for most labels - labels in toggle panels would always
grab mouse_motion events and no longer allow their parent toggle panels to gain their hovered states. That
appears to be in keeping with the design of GUI2, and a further evaluation of that issue is needed at a later
time. However, the fact remains that almost every single label was marked as link-aware, even when in almost every
case that was not the desired behavior.
This change move the link_aware config option to individual label and scroll_label instances. The following uses
had this explicitly enabled:
- Addon license prompt
- Addon descriptions
- Campaign descriptions
- The Server Info popup
- The chatbox
This allows using full markup for the license text and making it
independently scrollable without messing up the dialog. It also enables
URL parsing in it.
Rather than having everything in the MOTD, this adds a separate button that will popup a window which will have most of this information in two tabs:
* General server information, such as a link to the CoC.
* Announcements, such as tournaments and new versions being released.
The information on this new window will be stored in the new `server_config` database table.
The MOTD will then just be a short greeting instead of the several lines that are shown currently.
Additionally, now the motd will only be displayed in the lobby chat the first time the user logs on.
* Make the default variation's label "Default Variation" instead of
just "Default" (see below).
* Drop the "Variation:" and "Gender:" labels as they take up valuable
real estate and aren't strictly necessary since the controls they are
attached to are very much self-explanatory. This is a debug mode
utility dialog anyway.
* Swap the order according to option importance -- gender is usually
thought of as more of an essential property of units than their type
variation, especially since unit types with multiple variations are
rare in mainline. This means that the gender options are now on the
left instead of on the right.
* Improve display alignment for the variation/gender options row.
Yes, we already know it's a debug mode functionality. It says so on the
context menu and we needed to use :debug to get here. No need to make
the dialog caption pointlessly long.
These changes to the data/gui subdirectories make it so that above a certain
screen pixel dimensions (currently 1200x900), text font sizes will be scaled
with the pixel pitch of the SDL video device. In addition, several dialogues
(such as the unit recall window, for example) are allowed to take on larger
pixel dimensions to accommodate the larger (in pixel size) fonts.
This makes it so all states of the text box widget have borders again.
The colours are changed, however, so that the focused state has the
brightest border.
This turned out to be necessary because otherwise the chat input textbox
in the MP lobby completely blends with the chat log box, making it seem
as though it disappears whenever it doesn't have the keyboard focus.
[ci skip]
There has been functionality to manage custom servers in the player's
preferences file since as far back as commit
5fb0b2a911 in June 2007, but there's never
been a user interface for it.
This commit removes the current server list dialog attached to the MP
Connect dialog and replaces it with the same functionality embedded into
the latter, as well as the ability to edit the server list in the
player's preferences file. There's some code movement in a few other
places since the previous function in the preferences namespace doesn't
suit the new code (it always returned a combined list of game and
player-defined servers).
There's some disabled code referencing a situation where the listbox
with the list of servers allows the code (and the player) to clear the
selection. It's disabled because there are some UX issues with it noted
in the code comments associated to it.
Fixes#4564.
Following the previous commit altering the progress bar's styling, we
now rearrange the dialog to completely eliminate visual gaps during
add-ons server connection by having the status display share a row with
the Cancel button so as to not force extreme layout recalculations. The
status display is also smaller corresponding with its lesser importance
compared to the progress bar itself, which has now become the absolute
centerpiece of the dialog by taking up almost all of its horizontal
space even when the descriptive text is short.
There's an engine change in this, recommended by Vultraz to avoid
recalculating the UI unnecessarily during network transfers. It
necessitates a minor hack in the WML to ensure that the status label has
a non-0 initial size, but it's nothing too major.
The old design was heavily based on the old GUI0 loadscreen, inheriting
the weird blocky 3D shading effect reminiscent of the old Windows 9x
times. This makes it look very obviously out of place with the current
Wesnoth UI look and feel.
We increase the default width of the progress bar to reduce visual gaps
between different phases of the add-ons client's initial connection
sequence, and decrease the height to something that is more in
proportion with the font size without taking up more space than
necessary. The colours are inspired by the current textbox and button
widgets while keeping consistency with the rest of the game's UI.
[ci skip]