Gleb Mazovetskiy
6327e713e0
Lowercase all file paths
...
We want to be able to use unpacked MPQs on low-end platforms
(PS2/rg99/etc).
This is tricky on case-sensitive filesystems. Avoids case issues by
lowercasing all paths in the code (then we'll just need lowercased
listfiles).
4 years ago
Gleb Mazovetskiy
3b357f3936
CMake: An option to disable demomode support
...
Useful for targets with limited RAM.
Reduces RG99 binary size by 8 KiB.
4 years ago
Gleb Mazovetskiy
580d3cb6ee
touch/renderers: Migrate away from Art
4 years ago
Gleb Mazovetskiy
c351acbf7e
Remove redundant devilutionx.mpq check
...
We now check it only once in `CheckArchivesUpToDate`.
We then use `LoadClx` instead of `LoadOptionalClx` throughout.
4 years ago
obligaron
a410e989bf
Remove ScrollInfo
4 years ago
Gleb Mazovetskiy
8f7dd16ac3
Show an error on outdated devilutionx/font.mpq
4 years ago
Gleb Mazovetskiy
ba34bafb3f
Use SDL events directly
...
Removes redundant miniwin events and queue, using SDL events directly instead.
Demo migrated using this script: https://gist.github.com/glebm/8a73b04f695de96f344cc2e35151e03e
4 years ago
Gleb Mazovetskiy
961866e1c4
CLX: A new graphics format
...
The format is almost identical to CL2, except it uses the frame header
to store frame width and height instead of 5 32-line offsets.
This means we always have access to frame dimensions, so we can use it
as an on-disk format for our graphics as well.
Additionally, we may be able to optimize the rendering even more
in the future now that we have guaranteed knowledge of frame dimensions.
4 years ago
obligaron
6804221199
Store scroll/rune location in SpellCastInfo.spellFrom and remove the scroll/rune only after the spell is casted
4 years ago
DakkJaniels
13d53a33dc
move gold drop checks earlier
4 years ago
ephphatha
9e76cd4ab7
Use object pointer for pcursobj
4 years ago
ephphatha
3a7fd8da2d
Only send and consume object location for location based messages
...
Co-authored-by: Anders Jenbo <anders@jenbo.dk>
4 years ago
Gleb Mazovetskiy
8ca71272b8
Load all CEL as CL2
...
Convert CEL files to CL2 at load time. CL2 format is more efficient and is about as fast to render.
CEL vs CL2 sizes, on dLvl 5: https://gist.github.com/glebm/9bbdd76962abcd4fd2405ecd3379af97
Memory:
* Peak memory (while loading): -300 KiB
* Memory in-game (dLvl5): -700 KiB
* RG99 binary size: -15 KiB (1333096 -> 1317192)
Performance on rg99:
* On average, -1 FPS in town.
* Same FPS in dungeon (20 FPS on dLvl 1).
4 years ago
Gleb Mazovetskiy
465ee78afe
Fix `DVL_WM_RBUTTONUP`
...
Missed one case in #5047
4 years ago
Gleb Mazovetskiy
adf40f5c80
misc_msg: Always use `lParam` for mod state
...
Previously, keyboard events used `lParam` for modifier key state,
while mouse events used `wParam`.
Changes the mouse events to use `lParam`, which allows us to
change `lParam` to `uint16_t`.
Demo migrated with a script.
4 years ago
Gleb Mazovetskiy
ea1087dfeb
Use `StrCat` in a few more places
...
Now `fmt` is only used for more complex formatting and for translations.
4 years ago
Gleb Mazovetskiy
79e23f26f2
misc_msg: Encode keyboard mod state directly
...
`demo_0.dmo` migrated with a script
4 years ago
Anders Jenbo
d1189388f5
Use user by reference
4 years ago
Gleb Mazovetskiy
303a6cf5ea
Fix next debug monster key
...
Accidentally changed to ALT+m from SHIFT+m in #5023
4 years ago
Gleb Mazovetskiy
fae441e75f
Remove `DVL_WM_SYSKEYDOWN`, `DVL_WM_SYSKEYCOMMAND`
...
These events were no longer used
4 years ago
Gleb Mazovetskiy
3d4f0b48b8
Remove `TranslateMessage`
...
It has become entirely redundant.
4 years ago
Gleb Mazovetskiy
a4ac41cece
Replace `DVL_VK` virtual key codes with `SDLK`
4 years ago
Anders Jenbo
16b65120ea
Clean up LevelMonsterTypes related code
4 years ago
Anders Jenbo
ac2bf9aaac
Limit what gets called in headless mode
4 years ago
obligaron
ebfb519ee0
Rename gbQuietMode to HeadlessMode
4 years ago
obligaron
40283ca69e
Introduce timedemo based tests
4 years ago
obligaron
bab9baa42a
Handle gbQuietMode for paths in StartGame
4 years ago
Gleb Mazovetskiy
33ac2cca8e
♻️ Make Monster counters `size_t`
4 years ago
Gleb Mazovetskiy
2be823a468
Fix progress bar on already-visited levels
...
Fixes #4970
4 years ago
Anders Jenbo
3ae834148a
Split event handeling from general miniwin features
4 years ago
Anders Jenbo
a7be622aa3
Clean up naming of event handler
4 years ago
Anders Jenbo
2d21fc372e
Remove more miniwin code
4 years ago
Trihedraf
5ee6e5dd3a
Make zoom a setting in the menu ( #4931 )
4 years ago
Anders Jenbo
6a8fd04067
Use player by references ( #4938 )
4 years ago
Mikołaj Piróg
15989609a8
Members' name changes and comments in Monster struct ( #4861 )
4 years ago
Gleb Mazovetskiy
17f8cdddc4
Clean up `GetSpellLevel`
...
Remove the buggy `GetSpellLevel` implementation and use
`Player#GetSpellLevel` throughout instead.
4 years ago
Anders Jenbo
b00ae287b8
Minimize propegation of global Players index
4 years ago
Gleb Mazovetskiy
72660d9189
Migrate snprintf to fmt ( #4845 )
...
* Migrate `app_fatal` from printf to libfmt
* Migrate snprintf to fmt
4 years ago
k-bar
c2432d23e8
Berserk light fix
4 years ago
Gleb Mazovetskiy
5d1a4fd8af
`IncProgress`: Do not render bar if not active
...
Loading the game from within the game calls `IncProgress` multiple times
but we should not render the progress bar when that happens.
4 years ago
Anders Jenbo
99181fd709
Move more files to the engine folder
4 years ago
ephphatha
c68fcf3cb1
Apply MethodCase config to Rectangle::Contains
...
Also included Circle and VirtualButton classes due to the shared use.
4 years ago
Anders Jenbo
6d56058708
Move level generation to subfolder
4 years ago
ephphatha
3af11ad355
Use the same function when checking and actually dropping an item
4 years ago
Anders Jenbo
98e4310cad
Index Minis by tile instead of by coordinate
4 years ago
Anders Jenbo
860bd1cebf
Operate directly on SOL data
4 years ago
obligaron
184290a977
Support setlevel in multiplayer
4 years ago
obligaron
19749420b5
Introduce Player::isOnActiveLevel
4 years ago
obligaron
7afe7d2a70
Save Methods in loadsave gets MpqWriter passed
4 years ago
Gleb Mazovetskiy
1fc8ecb6f6
Add fmt::runtime annotations for C++20 support
...
`fmt` requires non-contexpr format string arguments to be wrapped in
`fmt::runtime` in C++20.
4 years ago