In 1.14, the default was 50 frames, or around 1.7 seconds. In 1.15.4, commit
a9d9e48c72e70fd41ae9759e3894752eb9708596 changed the interpretation of that
number to milliseconds, but missed that this affected the [print] tag; this
left the default time that the text is shown as an unreadable 50ms.
All places in mainline that use [print] specify a duration, so the default
isn't used. Here I've plucked the new value from UtBS S09, where it was chosen
in f405b916a1141c2a4bc3bda3f88bbe0a8b8fe91b.
The special value "unlimited" is now recognised as meaning to display the text
until it's removed by another [print] tag. The tutorial uses this special case
to display the text until the player does the requested move - originally it
displayed the text for 10000 frames (around 40 minutes), which still seemed
reasonable when it changed to 10000ms.
This addresses the lobby performance issue as far as the playerlist updating. Previously for every player an item was added and the size of the tree view recalculated, which led to an increasingly unresponsive UI when the number of players in the lobby got to around 150+. With this change, the replace_children() method adds all the players and then after that recalculates the tree view's size once.
When the attacks aspect is used with invalidate_on_gamestate_change set to no, its movements field may point to locations without units if those units moved during a previous attack. Thus, we need to check whether u contains a valid unit.
Fixes#5865
- The t_string type is now a schema built-in type and no longer attempts a regex match.
- You can also specify that non-t_string types may be optionally-translatable; this case supports a regex match on the string (but note that the translation mark is not part of the match).
- Error messages involving keys with very large values ( > 128 characters) will now truncate the value.
- To account for occasional cases where the schema is intentionally violated, the --validate command-line option now automatically defines the SCHEMA_VALIDATION preprocessor define.
A key validates as type t_string if one of the following is true:
- The key is not present
- The key has at least one segment with a translation mark
- The key is blank (an empty string)
Any type other than t_string is not allowed to be translatable by default, unless you specify allow_translatable=yes in the [type] tag.
An optionally-translatable string could also be defined as a union of t_string and some other type.
One of these uses bold for the menu's name, the other uses italic, because that
seems more consistent with the other hints in the same context.
Re-attach the comment about upkeep to the correct [event], and move the comment
about the easter-egg event to the start of its [event].
* move UtBS mace nagas to core
* adding mace naga portraits from LordBob
* move naga hunter portrait to UtBS from core
* de-bow-ify the ophidian nagas and add Deflect weapon special
* revisions to mace nagas base sprites
* revisions to naga guards, including new weapon special Absorb
* compatibility Nagas for UtBS
Tooltips are such a common GUI feature that having a tip of the day about them
seems unnecessary. I'd expect a player to find out that we have them the first
time that the player wonders "what does that button do?".
While having hints about specific hotkeys seems logical, a general hint to
read the list of keybinds doesn't seem helpful.
None of the dummy players have an actual connection or client, so any attempt to interact with them will fail. The main usecase for this right now is testing the performance of the MP lobby UI updates when there are many players online.
Function run() at the beginning of synced_context.cpp asserts when a command is configured not to be undoable (use_undo=false), but the undo stack is not empty (resources::undo_stack->can_undo() returns true). Thus, the undo stack needs to be cleared before executing commands that are not supposed to be undoable.
Most AI commands use use_undo=false, but custom synced commands route through do_command, which uses a hard-coded use_undo=true. That, by itself, is not a problem, but if the next AI action uses use_undo and does not clear the undo stack first, the assert is triggered. AI actions with use_undo=false therefore need to clear the undo stack. This commit adds that for recruiting and recalling, the only AI actions that did not already do so.
Doesn't make much difference for release builds built with GCC,
it takes between 1% and 7% off the cost of std::update_canvas().
Calculated using the time taken by gui2::widget::get_best_size()
as a reference.
It's a tiny improvement, but it's also a tiny change, and the
improvement is in the loop that's MP lobby's performance problem,
as described in issue #5578.
The [fonts] [font] WML was only used to set up SDL_ttf fonts. The engine
code to read it was left in after
2dfdc0061d400ffad39f974d7fe9348204af0d08 in a dead state (some
structures are filled with data that never gets used).