obligaron
f154bad1bd
IsPrefixValidForItemType/IsSuffixValidForItemType doesn't rely on gbIsHellfire
3 years ago
obligaron
0d7711ee63
Introduce GetItemPowerPrefixAndSuffix
3 years ago
obligaron
085f98c9a1
Introduce GetStaffPrefixId
3 years ago
Gleb Mazovetskiy
ac0627f029
Add a debug function that describes a CLX
...
Example output (also demonstrates a bug in our encoder):
CLX sprite: 16x20 pixelDataSize=97b
command | width | bytes | color(s)
--------|------:|------:|---------
Transp. | 80 | 1 |
Pixels | 2 | 3 | 203 199
Fill | 3 | 2 | 202
Pixels | 2 | 3 | 199 201
Fill | 1 | 2 | 205
Transp. | 8 | 1 |
Pixels | 3 | 4 | 205 199 196
Fill | 4 | 2 | 197
Fill | 1 | 2 | 202
Transp. | 9 | 1 |
Pixels | 6 | 7 | 206 199 197 203 206 202
Fill | 1 | 2 | 204
Transp. | 10 | 1 |
Pixels | 4 | 5 | 206 199 197 205
Fill | 1 | 2 | 207
Transp. | 12 | 1 |
Pixels | 3 | 4 | 206 197 197
Fill | 1 | 2 | 205
Transp. | 9 | 1 |
Pixels | 7 | 8 | 207 205 203 206 206 197 197
Fill | 1 | 2 | 206
Transp. | 8 | 1 |
Pixels | 3 | 4 | 204 197 199
Fill | 1 | 2 | 205
Transp. | 1 | 1 |
Pixels | 2 | 3 | 202 197
Fill | 1 | 2 | 204
Transp. | 8 | 1 |
Pixels | 7 | 8 | 206 197 199 207 206 199 196
Fill | 1 | 2 | 205
Transp. | 9 | 1 |
Pixels | 1 | 2 | 203
Fill | 4 | 2 | 197
Fill | 1 | 2 | 202
Transp. | 10 | 1 |
Pixels | 5 | 6 | 207 205 199 199 203
Fill | 1 | 2 | 207
Transp. | 89 | 1 |
3 years ago
Gleb Mazovetskiy
f616214020
Fix suboptimal CLX encoding
...
See https://github.com/diasurgical/devilutionx-graphics-tools/pull/3 for
details
3 years ago
obligaron
0e663a8d64
Multiplayer: Sync circles in Lazarus' Lair
3 years ago
staphen
151564f46d
Remove optimization that skips quest sync at game start
3 years ago
obligaron
1a150ed193
Multiplayer: Ensure monster hitpoints are calculated reproducable in quest/set-maps ( #5958 )
...
* Always use the same seed for generating set/quest maps
* Use setlvltype for loading quest/set-map (instead of leveltype)
* Ensure dungeon flags are reset when loading a quest/set-map
3 years ago
obligaron
cb5e2b252c
Multiplayer: Enable Slain Hero
3 years ago
staphen
57cc5ee73e
Fix OOB when triggering a Nova chest
3 years ago
Anders Jenbo
82d233baf9
Add widescreen version of level 16 loadscreen
3 years ago
staphen
d2bc7c10ba
Fix stand ground for gamepad controls
3 years ago
obligaron
04b66114f2
Multiplayer: When updating remote player tile ensures that it's free
3 years ago
Anders Jenbo
5a1f0f4280
Add widscreen load background for Hell
3 years ago
Gleb Mazovetskiy
c71eb0ff54
Add support for new SDL 2.24.0 gamepad types
...
Fixes #5878
3 years ago
Gleb Mazovetskiy
8408743eed
Draw item labels before the monster health bar
...
Fixes #5867
3 years ago
ephphatha
94c646ef8f
Use rectangles for inventory/belt hit areas
3 years ago
Anders Jenbo
839690a74f
Add cutttw widescreen load screen ( #5923 )
3 years ago
Gleb Mazovetskiy
3f0d089928
Blitter: Minor optimization
...
`src < end - 3` is one more instruction than `src + 3 < end`.
Godbolt: https://godbolt.org/z/PPfhYYWG8
RG-99 binary becomes 224 bytes smaller.
3 years ago
Gleb Mazovetskiy
e81f8affba
Fix rendering issues introduced by #5913
...
Fixes #5914
3 years ago
Gleb Mazovetskiy
774993c6d0
dun_renderer: Avoid calling 0-width `Blit*`
...
A slight optimization to avoid calling blit functions entirely
when the width is zero.
3 years ago
Anders Jenbo
4bd0148f49
Add cave widescreen
3 years ago
obligaron
2296bf5625
Use StashStruct::EmptyCell instead for empty stash item check
3 years ago
Gleb Mazovetskiy
c5e6bf630f
demomode.cpp: Set `mouse.*.which` to 0
...
Otherwise it can end up as `-1`, triggering the `VirtualGamepad` input
type (-1 is `SDL_TOUCH_MOUSEID`).
3 years ago
staphen
132d911a41
Fix year in screenshot file names
3 years ago
Gleb Mazovetskiy
397529bf0f
Rendering: Unify and optimize pixel blitters
...
1. Unifies the underlying CLX and dun_render blitters.
2. Optimizes them by unrolling loops and using pointer comparison rather
than length comparison (saves a length decrement).
3. In `dun_render`, extracts `RenderLineTransparent/Opaque` branches into
functions via explicit template specialization.
Example RG-99 FPS (non-PGO'd): 17.4->18.4
3 years ago
obligaron
4826e5819e
Multiplayer: Fix desync when teleporting
3 years ago
Łukasz
2ec0603896
use `Point`s instead of `x, y`s in GetRndObjLoc (objects.cpp) and portal-related functions (portal.cpp) ( #5897 )
...
Nice cleanup, thanks.
3 years ago
Gleb Mazovetskiy
6bbe9e5ce8
CMake: Cleanup no-mpq config
...
Introduce a `SUPPORTS_MPQ` variable and use it throughout.
Also disables fetching bzip2 when MPQ support is disabled.
3 years ago
Łukasz Łapiński
243c3ffcd4
items.cpp: fix inconsistent localization for miscellanous items ( #5890 )
...
* Update line 'Right-click to read, then left-click to target'
* Update line 'Select from spell book, then\n cast spell to read' across languages
3 years ago
Anders Jenbo
20eb12570f
Add catacombs widescreen ( #5889 )
3 years ago
Anders Jenbo
28ea755e32
Add churche widescreen
3 years ago
Gleb Mazovetskiy
e35595a1eb
StrCat improvements
...
1. Use `fmt::format_int` directly instead of parsing a format string.
2. Use `AppendStrView`.
3. Define the varargs versions using fold expressions when available.
4. Add tests.
3 years ago
obligaron
36ecc50fcb
Always use infravision in Arenas
3 years ago
Gleb Mazovetskiy
0950750ed9
Avoid dependency on fmt/chrono
...
We only used it in one place and it doesn't work on Amiga GCC-6 with the
latest libfmt.
Also handles the case where `localtime` returns `nullptr`.
3 years ago
obligaron
4cdd7ff2d9
Replace ReturnLevel/LevelTyp/LvlPosition
3 years ago
obligaron
f4b2fee532
Transform Lazarus portal position to world space earlier
3 years ago
obligaron
b3a3d520dd
When using a portal to a setmap also set setlvltype, cause it's needed to load areana correctly
3 years ago
Gleb Mazovetskiy
957bd03b98
Remove `FMT_COMPILE` in "cold" places
...
Removes most `FMT_COMPILE` calls.
`FMT_COMPILE` results in better performance but larger code size.
Removes `FMT_COMPILE` calls for places that are called infrequently,
i.e. not on every frame.
RG-99 binary size reduced by ~4 KiB.
3 years ago
obligaron
e64270bfc6
Fix Flash hits north east direction
3 years ago
Gleb Mazovetskiy
f34dbf2aa9
Fix a libfmt compilation error on master
...
`InfoString` is a `StringOrView` and libfmt does not know how to print
that. Pass it a `string_view` instead.
3 years ago
Gleb Mazovetskiy
c858ab4d2c
Fix some compilation warnings
...
also removes a couple of unused filesystem includes
3 years ago
Gleb Mazovetskiy
f2cb9f0fa0
file_util: Implement `RecursivelyCreateDir`
...
With this, we no longer require `std::filesystem` support to create the
save file directory when it does not exist.
Note that by default the save file directory exists because it is
created by SDL, so this is mostly useful on platforms that override the
save directory or use `UNPACKED_SAVES`.
3 years ago
staphen
a55728848e
Fix transcript of Warlord of Blood lore for Monk and Bard
3 years ago
staphen
27dfaeb9dc
Use herosounds for class-specific quest speech IDs
3 years ago
staphen
695949d901
Sync staff charges after recharging
3 years ago
staphen
9af5bf84ba
Arkaine's Valor: Don't check player inventory when processing CMD_OPERATEOBJ
3 years ago
obligaron
63b04045f2
MP: Send delta message for lachdanans death
3 years ago
staphen
d18c75bd05
Don't send monster data while warping
3 years ago
obligaron
6e364f2167
Telekenisis respects Disable Crippling Shrines Setting
3 years ago