37147 Commits

Author SHA1 Message Date
Subhraman Sarkar
a50f047c7c add preprocess_string method and use preprocessed loyal trait 2024-11-24 16:51:12 +01:00
Charles Dang
335c4943d2 Build Info: improve refresh rate report
See discussion in #9594
2024-11-22 12:43:47 -05:00
Iris Morelle
ce6c56adea Switch default Pango/Cairo render backend to Fontconfig on macOS
Fixes #8488.

This is a simple setenv trick. Ideally we would instead figure out how
to fix Oldania ADF Std to work on newer macOS, but since we know the
Fontconfig backend works for us on Windows and Linux, we may as well
stick to it and hope there will never be a situation where CoreText
would prove superior somehow.
2024-11-22 23:00:03 +05:30
Charles Dang
bb4eb0bf1b Video: fix incorrect refresh rate value being returned (fixes #9594)
Regression from b859060627968b34ed0ea3bb1ee85bbae27120e6
2024-11-20 15:43:54 -05:00
Charles Dang
6fb5488464 Editor: better default addon and schedule names 2024-11-20 15:22:40 -05:00
Charles Dang
78f7703639 Macro be gone (fixup c2b2664eb21585a67afbb7bff931fb7b169eea47) 2024-11-20 15:21:17 -05:00
Charles Dang
6fa92f9553 wesnothd: indent fixes (no functional changes) 2024-11-20 15:19:39 -05:00
Iris Morelle
ad8f94195d
Make undeclared local function static
Fixes a warning on Xcode 16.1.
2024-11-20 11:09:20 -03:00
Charles Dang
c7f818d449 wesnothd: use steady_clock where appropriate 2024-11-20 01:03:42 -05:00
Charles Dang
79120f1e31 wesnothd: use std::chrono instead of the C time API 2024-11-20 01:03:42 -05:00
white-haired-uncle
c2b2664eb2
GUI2 LuaAPI: expand widget attr support (#9497) 2024-11-19 22:41:47 -05:00
Tóth Kornél
484116ea09
Map Editor terrain button click fix (#9560)
Fixed palette button not being clickable after scrolling in palette widget without moving the cursor. Resolves #1335. The cause of the bug was that scrolling doesnt change the highlighted state of the palette buttons and not highlighted buttons didnt process being clicked. Solved the bug by making not highlighted buttons process being clicked.
2024-11-19 15:20:30 +01:00
gfgtdf
b8c912d1e7 remove outdated comment 2024-11-17 21:30:22 +01:00
gfgtdf
d668aea7d0 fix doc comments 2024-11-17 21:30:22 +01:00
gfgtdf
a5f40c353d use block_undo() over undo_stack->clear()
this also sends the action to the other clients immidiately
2024-11-17 21:30:22 +01:00
gfgtdf
653bbb8263 small cleanup 2024-11-17 21:30:22 +01:00
gfgtdf
33bc132215 fix OOS caused by sending data to soon
previously block_undo would clear the undo stack and send data even when its parameter is false

this commit also fixes a possible crash when dsu changed the gamestate during formula evauluation

also removed a is_simultanious_ since it basicialyl did the same thing as undo_blocked_
2024-11-17 21:30:22 +01:00
gfgtdf
cc2914c1c6 remove show parameter from move_unit 2024-11-17 21:30:22 +01:00
gfgtdf
24ad4cb9d2 remove show parameter from recruit_unit 2024-11-17 21:30:22 +01:00
gfgtdf
3d589f8d0d use synced_context::run for move actions
With this, finally all actions run though synced context::run,
so that we not only have a central place that happens before/after
synced actions, we also guarantee that there is no difference between
the original and the replay codepath for all actions.

This should also make upcoming changed to the undo code easier.
2024-11-17 21:30:22 +01:00
gfgtdf
d0050dac8e remove undo_stack parameter from move_unit
it was only there for the ai code to skip undo which it no longer does
2024-11-17 21:30:22 +01:00
gfgtdf
a6cd4441c9 refactor synced_context::run
- Removed the now unused 'undo' parameter
- Removed the rareley used 'show' parameter, the actions now
  check whether they should skip in replays

Replaced the error handler with the more generic 'spectator' parameter,
the idea is to use it also for the move_spectator so that the move action
can also go through synced_context::run()
2024-11-17 21:30:22 +01:00
gfgtdf
7782c50f83 simplify synced_context::run() calls by ai and whiteboard
- use_undo is not used anymore
- ignore_error_function has no effect since to_check()
already checks whether the unit exists
- show in whiteboard code was the default value.
- show is now determined inside the actions handler, this
has the advantage that the skip_ai_moves preference now
also works for networked ai sides.
-the attack code now used run_in_synced_context_if_not_already
just like the other commands
2024-11-17 21:30:22 +01:00
gfgtdf
715a65438a Remove outdated comment
id is nowdays always a local variable of SYNCED_COMMAND_HANDLER_FUNCTION(recall
and never becomes invalid here
2024-11-17 21:30:22 +01:00
gfgtdf
7810b0308e remove use_undo parameter in synced_context
The comments said undo is disabled during ai turns to speed things up,
but since all the undo code does is adding a simple object once to a vector, its impact
on performance is really nonexistent.
2024-11-17 21:30:22 +01:00
Subhraman Sarkar
3afa75225f cmake: fix broken ENABLE_DISPLAY_REVISION option
LOAD_REVISION is used in game_version.cpp rather than game_config.cpp
2024-11-17 11:32:54 +05:30
Subhraman Sarkar
e64765da2a markup: doc update, return empty string instead of empty tag pair
Related to #9583.
2024-11-14 22:26:10 +05:30
Subhraman Sarkar
ea6f903c04 markup: don't escape internally and update docs
Internal escaping causing markup failure when tags are nested.
See #9569 and #9572 for example. Functions in markup will no longer
escape their contents, and those should be escaped by caller if needed.
2024-11-14 10:30:36 +05:30
pentarctagon
d2fc3f3f17 add acquaintance as well 2024-11-12 17:38:07 -06:00
pentarctagon
3c17bc83c2 Add missed preference
Fixes #9567
2024-11-12 17:38:07 -06:00
Charles Dang
c5cb0f104f Remove --no-delay option
This wasn't consistently honored and only affected unit animations.
2024-11-12 00:19:44 -05:00
Charles Dang
34c1c0f61c Remove 200ms delay in gameloop processing when window is not visible
If we need this, it should, as the comment says, be implemented as part of the draw manager. But it also seems like any optimizations on this front are better left to the OS and its compositor.
2024-11-12 00:19:44 -05:00
Charles Dang
8b14612fbe Convert remaining uses of SDL_Delay to std::this_thread::sleep_for
There's one last usecase in controller_base which I intend to remove.
2024-11-12 00:19:44 -05:00
Charles Dang
812c1e2e5e Unit/Animation Component: format ctor 2024-11-11 21:46:14 -05:00
Charles Dang
b9bcdd3b63 Convert animation code to use chrono types 2024-11-11 21:46:14 -05:00
gfgtdf
690ff375b7
fix #9561 OOS when undoing in multiplayer (#9566)
previously in `undoable_action->undo(side_) ` the undo stack was not in sync with the relpay stack because the code called `undos_.pop_back();` before that and `resources::recorder->undo_cut` after that, this could confuse the code which sends replay commands to the other clients.
2024-11-12 02:03:45 +01:00
newfrenchy83
9330997d10 fix malformed markup in unit_list and unit_recall
error cause to show text of color code instead of use for color level number(same fix what for 37b7a83ce0 (diff-010538c81e10d3e4eeadfb49808ab52a6fe1becc787cb247c6a854b8f4c1900aL104))
2024-11-11 21:03:10 +05:30
Subhraman Sarkar
b2af5d8488 campaign selection: also open add-ons manager when double clicked
previously, double-clicking on the More Campaigns entry opened the tutorial, instead of the Add-ons manager as expected.
2024-11-11 19:43:00 +05:30
newfrenchy83
8e57567e24 add recursion_guard in [filter_(second_)weapon] for [leadership] and [resistance] abilities.
In moving recursion_guard from matches_filter() to special_unit_matches() i has forgotten what [leadership] abilities called directly matches_filter().
2024-11-11 14:32:05 +01:00
Subhraman Sarkar
37b7a83ce0 fix malformed markup and remove another hardcoded one (#9568) 2024-11-11 08:24:51 +05:30
Charles Dang
4f97c10e35 Preferences: validate countdown time values when setting them 2024-11-07 11:10:13 -05:00
Charles Dang
37adb200e6 Display: small FPS counting fix
This is way more readable and more semantically correct. Essentially, instead of truncating the current and last timestamps to seconds and checking if we were "in" a different second, actually check the duration between the current frame and our last lap point .
2024-11-07 11:10:13 -05:00
Charles Dang
9a77b72aac Different approach to chrono::duration serialization
Since we're relying on free functions to parse and serialize time_points, it makes more sense to do likewise for durations rather than relying on a config_attribute_value member function. Leaves the assignment support for now.
2024-11-07 11:10:13 -05:00
Charles Dang
6dc65f6483 Campaignd: use chrono::system_clock instead of std::time_t
Includes adjustments to client code to likewise use chrono types. I decided to keep using time_t
(which is just an alias for long_long) for serializing time points. This avoids compatibility issues,
since we keep the same resolution (seconds since Unix epoch), and unless we're going to "properly"
store time points in config, the time_t's unitless value is a good a representation as any.
2024-11-07 11:10:13 -05:00
Charles Dang
b859060627 Add new refresh_rate pref to better handle --max-fps
The pre-processing for --max-fps was basically identical to what draw_manager::get_frame_length does.
This replaces the draw_delay preference with a new refresh_rate preference that more accurately describes
what is being set. video::current_refresh_rate will now take this preference into account, meaning the
build info report will correctly report player-set FPS limits.

The Limit FPS option in the prefs UI was also removed. When it was first introduced (cca79afe4b263187a54b73042a9bc7eaa46986e7)
it specifically affected the map rendering code, not the rendering pipeline as a whole. With the 1.17
rendering refactor, this is no longer the case, and so its current usage as the lower bound for frametime
calculations did nothing (all it did was change the lower bound from 0 to -1 when enabled).

It might be worth adding a slider to the UI to dynamically set max fps, but that's a separate change.
2024-11-07 11:10:13 -05:00
Charles Dang
6fcf46a208 Events: remove pump_info
Only two places actually made use of the only thing it was useful for (the current tick count),
the countdown clock and the music thinker. The former was simpler to do without, and though it
was slightly useful for the latter, the music thinker really needs to be rethought.

The only thing this could be useful for is providing a stable timestamp for every process call.
That wasn't how it was designed, however. ticks() would populate its value the first time it was
called. Even if (as I considered doing) you change it to register the tick when constructing the
pump_info object, it's still easier (and easier to read) to just call steady_clock::now directly
as needed.
2024-11-07 11:10:13 -05:00
Charles Dang
12fa8f2844 Use standard chrono types consistently throughout the codebase
* Functions that return time values now return proper std::chrono::duration units (milliseconds,
  seconds, etc.). This removes the need to do manual unit conversions.
* Simple time-to-execute logging was replaced with `utils::optimer`.
* Most uses of `SDL_GetTicks()` have been replaced with `std::chrono::steady_clock`.
* Uses of events::pump_info::ticks() have been replaced with direct calls to steady_clock::now().
  This made the countdown_clock code significantly simpler. As for the music_tinker, that needs
  to be rethought wholesale.
2024-11-07 11:10:13 -05:00
Charles Dang
cd3e8d7652 Config: support time duration conversion and assignment 2024-11-07 11:10:13 -05:00
Charles Dang
7f4d2a437b Utils/Optimer: add a lap function 2024-11-07 11:10:13 -05:00
Gunter Labes
9181e4e298
Remove superfluous FIXME comment 2024-11-07 14:21:34 +01:00