81153 Commits

Author SHA1 Message Date
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
Tommy
6775be5913 Call SDL_Quit at exit, not some other strange place 2022-07-24 22:06:33 +12:00
Tommy
5c575548fd display: Correctly update for changed pixel scale 2022-07-24 22:06:33 +12:00
Tommy
0548f5a490 display: Apply several small fixes and replacements
* don't apply a delay while calculating fps count - this is redundant
* remove dirty_ flag - it can be replaced by queueing a redraw
* rename redraw_everything to queue_rerender for clarity
* remove some unnecessary redundant actions when queueing rerenders
* make draw() private and stop everything from calling it
  - calling it manually is no longer necessary, and now harmful.
2022-07-24 22:06:33 +12:00
Tommy
bef3d1092c display: General tidyup
This should just be shifting things around with no change to execution.
2022-07-24 22:06:33 +12:00
Tommy
0c096ff917 draw_manager: Add invalidate_all() to invalidate the entire screen
Updated usage everywhere appropriate.
2022-07-24 22:06:33 +12:00
Tommy
a18eef1c5e Immediately update the UI when pixel scale changes in preferences
* the dialog now raises a resize event in this case
* raise_resize_event() now activates linked handlers immediately,
  in stead of waiting until the next event pump.
2022-07-24 22:06:33 +12:00
Tommy
7877158b69 video: remove and refactor unnecessary and poor interfaces
* removed clear_screen() - not necessary to do
* removed delay() - inappropriately used, and should not be here anyway
* expose render_screen only to draw_manager - nothing else should do it
* remove read_texture - unused
* split window_has_flags into individual queries:
  - window_is_visible()
  - window_has_focus()
  - window_has_mouse_focus()
* tidied window mode setting code
* removed setup_completed() and has_window() - always true as used
* cleaned video.hpp includes
* deexposed some internal video functions
  - update_framebuffer -> update_buffers(false)
  - make_fake -> unused externally
2022-07-24 22:06:33 +12:00
Tommy
29c82e308a CVideo: Remove CVideo singleton, replacing with "video" interface
The only real change is that in stead of passing around CVideo
pointers and calling things via CVideo::get_singleton().foo()
one simply does not pass around pointers, and calls video::foo().
2022-07-24 22:06:33 +12:00
Tommy
8fed797861 Rework DRAW events
* removed DRAW_ALL_EVENT - it is not the correct way to draw everything
* made debug_clock a TLD, in stead of hooking DRAW events
* tidied draw event handling, also removing some incorrect usage
2022-07-24 22:06:33 +12:00
Tommy
ad48f7782b Greatly simplify event code relating to resizing
There are still some things doing things in bad places.
They will be fixed.
2022-07-24 22:06:33 +12:00
Tommy
99be6c52a4 CVideo: begin refactoring
* marked many functions for refactor
* removed some unused functions
* moved help tooltip functions out to floating_label.*pp
* streamlined help string tracking
* removed flip_locker - it is no longer useful
* removed update_locker - it is no longer useful
2022-07-24 22:06:33 +12:00
Tommy
86570f6cc4 sdl/utils: Properly report empty result when masking a null texture 2022-07-24 22:03:34 +12:00
Tommy
d007ec64af Handle non-hex-sized images when cropping to hex
Images that are not 72x72 are centered and cropped before masking.

Fixes #6118.
2022-07-24 22:03:34 +12:00
doofus-01
e8d451bbd5
1.17 dwarf sprite cleanup (#6902)
* fill semitransparent pixels

* sprite palette cleanup
2022-07-23 21:30:49 -07:00
doofus-01
346e74697f
1.17 drake sprite cleanup (#6901)
* fill semitransparent pixels

* drake sprite palette cleanup
2022-07-23 18:33:14 -07:00
Nils Kneuper
d9663c6fe5 updated Finnish translation 2022-07-23 12:46:45 +02:00
Nils Kneuper
f6f81c78dd updated British English translation 2022-07-23 12:46:01 +02:00
Nils Kneuper
fb021524af updated Arabic translation 2022-07-23 12:44:57 +02:00
Tommy
0b97284f07 Correctly invalidate the previous frame when displaying leadership
Fixes #3996.

I applied the fix by jostephd. The fix looks good, and works.
2022-07-23 15:24:53 +12:00