1. Remove `find_package(BZip2 REQUIRED)` from Dependencies.cmake
because it is not used by devilutionx directly (it's a libmpq dependency).
2. For emscripten, use the built-in version of bzip2.
3. Reverts 0b4705cf1c, which added
a redundant `find_package(ZLIB REQUIRED)` to `Dependencies.cmake`.
* CMake: 3rdParty/zlib fixes
1. zlib already provides a CMakeLists.txt, use it.
2. Stub find_package for source build. ZLIB is used by libpng via `find_package(ZLIB)`.
3. amiga.cmake: Remove `find_package(ZLIB)`.
* Update UWP build directory for zlibstatic.lib
Co-authored-by: staphen <staphen@gmail.com>
A vector is a lot more efficient here as we generally
only have a handful (1-3) backbuffers.
Additionally, this avoids a lot of temporary allocations every frame,
which were apparently triggered by `emplace` even if the element
already existed.
In the hit calculation for a monster hitting a player, the player level is used, which equates to the player always having a 2 * clvl increase to what is displayed in the character panel. This adds it in.
When rendering directly to the output buffer, we need to maintain the
state of what has been drawn and what needs redrawing per-buffer.
We previously tried to do it implicitly by checking `SDL_DOUBLEBUF` and
other flags. The previous implementation was broken in several
ways, resulting in rendering issues on devices that support 8-bit output
directly.
Changes this mechanism to explicitly maintain buffer state per output
buffer. The new mechanism doesn't require knowledge of the number of
buffers, and thus also works correctly with triple-buffering.
Fixes#5447