81222 Commits

Author SHA1 Message Date
Tommy
36d43da21a Add new PLACE_IMAGE_SUBMERGED macro and use for HttT:04_BoP
It does the same thing as PLACE_IMAGE except the created item may
use the same submerge code as units. If not placed on water there
will be no submersion effect. If placed on water it will be submerged
to the same level a unit would be submerged to. In general physical
items placed into water should use this, whereas items placed on top
of water should use PLACE_IMAGE.

The new macro has been applied to the merfolk cages in the Bay of Pearls
scenario in HttT.
2022-07-30 14:56:38 +12:00
Tommy
b4119dce4a Change pickuppable item macros to create submergable items
This fixes #1146.
2022-07-30 14:56:38 +12:00
Tommy
3127178e17 Add a submerge value to items, to control submerge amount
It defaults to 0, which is no submersion.
2022-07-30 14:56:38 +12:00
Tommy
13c3235a68 Submerge items on water, just like units
This is currently applied to all item overlays.
2022-07-30 14:56:38 +12:00
Tahsin Jahin Khalid
6701542f63
[SoF] In S7, adjust wording to avoid awkward reuse of the word "doubt" 2022-07-30 03:23:32 +06:00
Tahsin Jahin Khalid
058949e848
NR: Give Hamel leadership to add consistency to plot 2022-07-30 01:34:09 +06:00
Alexander Lacson
2b2b70d2e1
[UTBS] Remove some fungus from S6 2022-07-30 03:12:33 +08:00
Alexander Lacson
c74f1e49c7 [SoF] In S7, edit a sentence to not use awkward reuse of the word "doubt"
Resolves #6773.
2022-07-30 02:33:05 +08:00
Alexander Lacson
5a38c3ff53
Merge pull request #6914 from wesnoth/UtBS-zochtanol-bat-sounds
[UtBS] Add series of bat screeches in the Zochtanol Isle scenario
2022-07-30 00:54:08 +08:00
Tommy
c6e97b20ae Remove draw() from sdl_handler interface 2022-07-29 19:20:20 +12:00
Tommy
09f80573a1 Add draw_manager::get_frame_length() to get the length of one frame
This will usually be determined by the monitor's refresh rate,
but also is rounded down to provide some leeway. It also limits
according to the draw_delay preference.

The loading screen now uses this to limit event calls.
2022-07-29 16:52:44 +12:00
Tommy
c0990fd258 Clarify basic pump-and-draw loop 2022-07-29 16:52:44 +12:00
Tommy
b8d4f49858 Minor refactor to pass draw regions in display::expose() 2022-07-29 16:52:44 +12:00
Tommy
4ece911e07 Minor floating_label todos 2022-07-29 16:52:44 +12:00
Tommy
9dd7bc886e Replace most GUI1 set_dirty() calls with queue_redraw() 2022-07-29 16:52:44 +12:00
Tommy
26072b7ab4 Automatically invalidate all map tiles when updating time-of-day 2022-07-29 16:52:44 +12:00
Tommy
212b909f19 Fix vanishing editor time schedule window. 2022-07-29 16:52:44 +12:00
Tommy
143023fec8 Properly update map label tooltip positions 2022-07-29 16:52:44 +12:00
Tommy
9cc020812b Some minor tidying 2022-07-29 16:52:13 +12:00
Tommy
ae46b86f67 Remove a bunch of unnecessary draws of GUI1 widgets
They are currently TLDs and draw themselves.
2022-07-29 15:46:57 +12:00
Tommy
422b856eec Remove unused functions
* palette_manager::restore_palette_bg
* display::post_commit, flip, update_display
* widget::hide_override
* widget::bg_restore, bg_unregister, bg_update, bg_clear
2022-07-29 15:45:08 +12:00
Tommy
c33c452ffe Remove some done and unimportant todos 2022-07-29 15:42:30 +12:00
Alexander Lacson
b7c3a1cbb4 [UTBS[ Remove some fungus from S6
Resolves one of the subitems of #6197.
Rationale for this PR is in the Issue thread.
2022-07-28 17:28:49 +08:00
Alexander Lacson
c85f7241fc [UtBS] Add series of bat screeches in the Zochtanol Isle scenario
Resolves #6503.
2022-07-28 16:55:41 +08:00
Pentarctagon
66d5e7bc43
Update workflow since github actions is deprecating using macOS 10.15. 2022-07-27 22:37:29 -05:00
Elvish_Hunter
1be1ba4282 Fixed {IS_HERO} to prevent loss of hero ellipse when leveling up 2022-07-27 16:18:06 +02:00
Pentarctagon
927660ae2c
Populate active_addons_ when all add-ons are enabled.
When loading into different screens prior to actually starting or joining a game, Wesnoth loads the configs of all add-ons, otherwise it wouldn't know to display eras, campaigns, etc for selection. However starting with a4e8ac3, when loading all add-ons the `active_addons_` variable was no longer being populated with any of the the add-ons that were active. This meant that when checking to see if any of the active add-ons had changed it could falsely determine that nothing had changed and therefore could skip the step where it actually deactivated add-ons.

As an example of the current state prior to this fix:
* Player starts Wesnoth and joins the multiplayer lobby -> all add-ons are active, but `active_addons_` is empty.
* Player joins a game with no add-on content required -> Wesnoth checks the add-ons required for the game (none) against the contents of active_addons_ (empty).
* Wesnoth therefore determines that it doesn't need to deactivate any add-ons since it thinks no add-ons are active, when in fact all add-ons are active.
* Out of sync errors then happen if any of the players that join have add-ons installed that can globally affect other unit_types, such as [resistance_defaults], since those add-ons haven't been correctly deactivated.

The fix then is to make sure that game_config_manager::set_enabled_addon_all() correctly populates active_addons_ when it's called.

Fixes #6650
2022-07-26 10:16:13 -05:00
Tommy
e6ae367ecb sdl/utils: Add a note about incorrect trasnsparent blending
The blend function SDL (and for that note all GPU frameworks) uses
is incorrect when compositing transparent source pixels onto a
transparent destination. I added a note with the correct blend
function, for possible future implementation.
2022-07-26 16:40:40 +12:00
Celtic Minstrel
e08451517a Fixup some event deprecations
No functionality change, just documentation
2022-07-26 00:08:00 -04:00
Celtic Minstrel
26f977c9b2 PUA: Fix Lua error when a unit is recruited
Fixes #6897
2022-07-26 00:05:29 -04:00
Celtic Minstrel
53b6f892dc That just... doesn't even do anything... 2022-07-26 00:03:17 -04:00
Celtic Minstrel
b57b1188c0 Schema: Some infinite loop avoidance
- Detect obvious cases of inheritance loops
- Don't try to keep track of tags with a super tag that exist within a conditional tag
- When searching for a tag path, don't append the leaf to the full path
2022-07-26 00:02:59 -04:00
Celtic Minstrel
6c30ef4b20 Document some missing map functions 2022-07-26 00:02:27 -04:00
Celtic Minstrel
c44bd5a3a4 luaW_toconfig should clear its output argument
Every place it's called already passes a default-constructed config, so this won't affect any existing code.

The removed assert is pointless when it'll be cleared by the call, and the two places that called that function also passed a default-constructed config already, so it was doing nothing.
2022-07-26 00:01:14 -04:00
doofus-01
a513a82e9f
1.17 (test scenario) out-of-hex unit animation tests (#6878)
* out-of-hex unit animation tests (id=anim_tester_ooh)
2022-07-24 20:22:47 -07:00
Tommy
136e764b23 Update changelog for confirmed fixed issues 2022-07-25 14:52:30 +12:00
doofus-01
2327f5c81b
1.17 human magi sprite cleanup (#6906)
* fill semitransparent pixels

* sprite palette cleanup
2022-07-24 17:28:14 -07:00
doofus-01
8e6abab897
merfolk sprite palette cleanup (#6904) 2022-07-24 13:03:12 -07:00
Pentarctagon
600c4f8119
Changelog update. 2022-07-24 13:45:18 -05:00
Pentarctagon
9e94f090e6 Use start.sh to enable logging to file for Steam Linux. 2022-07-24 13:43:41 -05:00
Pentarctagon
d1833b5cf7 Adds the --log-to-file command line option.
This sets up writing both the cerr and cout streams to a log file, as well as pulls the log rotation logic out of log_windows.*pp into the general logger.

Note that this is meant for usage on macOS and Linux, not Windows. log_windows.*pp has additional functionality in it, as well as a fair bit related to the --wconsole option.
2022-07-24 09:22:50 -05:00
Tommy
178a09c2cc Convert images/misc/single-pixel.png to RGB format
There was a bug with SDL_image reading it wrongly.
2022-07-25 02:16:15 +12:00
Tommy
aadcc6fbc1 CI fixes 2022-07-24 22:06:33 +12:00
Tommy
3cb248f3db Set source region on the texture, rather than the draw call
Draw call overloads taking source regions have been removed.

textures now can have a source region set, using set_src() to set
it in draw-space, and set_src_raw to set it in texture-space.
This source region is automatically used when blitting.

texture constructors were also cleaned up.
2022-07-24 22:06:33 +12:00
Tommy
efa02e88af Tidy some done and unnecessary TODOs 2022-07-24 22:06:33 +12:00
Tommy
d3448ef7e9 Clarify and correct mouse input location calculations
The portion of the window that the game canvas covers is now what is
returned by video::input_area(). This is in display coordinates, which
may not match draw coordinates or output coordinates.

sdl/input.cpp was changed to query and account for input_area when the
mouse location is polled. This removes the input dimension caching that
was previously being done.

All other uses of input_area() are probably erroneous, as SDL events are
automatically converted to draw-space by SDL. It is only needed when
polling the mouse location directly, which returns it in display
coordinates relative to the window.
2022-07-24 22:06:33 +12:00
Tommy
b9b8f78206 video: Tidy up handling of draw size, output size, and logical offset
This ensures sveral things:
 * the game display's offscreen render buffers are used correctly
 * custom render targets will report the correct draw area
 * they will also report the correct clipping region and viewport
 * converting draw space coordinates to output coordinates will
   return the correct coordinates on the full render target.

Not much of this is currently used, but it will be necessary to get
correct for source clipping regions and possibly input conversion.
These are both on the TODO list to clean up.
2022-07-24 22:06:33 +12:00
Tommy
bef85a51a4 video: Clarify draw_area() -> game_canvas() in almost all cases
Theoretically the drawing area may change if we are rendering to
texture. However the vast majority of cases wanted the game canvas
size independent of whatever the current render target may be.

A function game_canvas_size() was also added returning a point,
and this was used to simplify things where appropriate.
2022-07-24 22:06:33 +12:00
Tommy
68f86eba10 video: Clarify headless and unit test checks and interfaces
* faked() has been renamed headless() to better express its meaning
  - it is true when there is no window or renderer at all
* internal usage of the window pointer has been clarified
  - a window should always exist, unless in headless mode
* non_interactive() has been removed in favour of headless()
  - they are logically identical
* some nomenclature internal to video:: was clarified
  - fake_interactive_ -> testing_
  - fake_size -> test_resolution_
  - init_fake_window() -> init_test_window()
  - make_fake() -> init_fake()
  - update_framebuffer_fake() -> update_test_framebuffer()
* any_fake() was replaced with testing() to check if running tests
* make_test_fake() was removed in favour of set_resolution()
  - the only other use was for init which can be done... in init()

There are now two clear non-standard modes: headless() and testing().

Headless mode has no window or renderer, and hardware rendering
should never be attempted.

Testing mode has a window and renderer, but there are not currently
any tests which use them. Rendering functions may be skipped.
2022-07-24 22:06:33 +12:00
Tommy
8c9519456c video: Rearrange, and make init_window() internal to init() 2022-07-24 22:06:33 +12:00