This makes the row actually take up its full horizontal space and spaces
out the columns very slightly while still allowing them to be usable at
800x600.
It also replaces the overlong detailed descriptions for the options in
the Combat menu with tooltips holding the same contents.
This brings back laurels for the difficulty menu. Because I really don't
want to break into menu_button's implementations details just yet, this
is a bit of a hack using the BLIT IPF instead of stacked_widget.
To make up for it, this version uses the three different difficulty
laurels depending on the difficulty being displayed, instead of always
using the standard laurel.
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.
Fixes#4792
Previously that line would call generator::set_item_shown which inherits that class since set_item_shown is virtual. This doesn't work, in particular since generator::set_item_shown wouldn't do anything if the to-be-deleted selected item is already hidden. (which for some reason happens quite often in the mp lobby window).
This resulted in generator::delete_item deleting a selecting item, so selected_item_count_ would become wrong.