Commit Graph
7910 Commits
Author SHA1 Message Date
Gleb Mazovetskiy 5b187e63f6 Use C++20 using enum instead of alias enum members manually 2023-09-03 17:52:40 +00:00
staphen a151219b9b Don't validate creation flags on gold 2023-09-03 17:03:25 +02:00
Gleb Mazovetskiy 9bbc138b0f Simplify ColumnDefinition using C++20 features
1. Default comparison: https://en.cppreference.com/w/cpp/language/default_comparisons
2. Parentheses initialization for aggregate types
2023-09-03 01:13:48 +01:00
Gleb Mazovetskiy c2ad6da733 Add DEVILUTIONX_DISPLAY_TEXTURE_FORMAT
Some platforms, such as PS2, can benefit from a different texture
format. Makes the texture format a CMake setting.
2023-09-03 00:48:06 +01:00
Vinícius Ferrão 2644ec73af Add Crippling Shrines from Hellfire (#6273) 2023-09-03 01:42:59 +02:00
Gleb Mazovetskiy 70ff515f48 Stream demo messages
This entirely eliminates the demo memory overhead.
2023-09-02 20:54:24 +01:00
Gleb Mazovetskiy 65e0ad88d2 Further reduce demo file size
The vast majority of events are rendering events:

 Type        | Count
-------------|------:
 Rendering   | 58,971
 MouseMotion | 19,651
 GameTick    |  6,414
 MouseButton |    516
 Key         |      7
 Custom      |      1

Encodes Rendering events in a single byte when possible.

Demo file size: 253,410 bytes -> 194,439 bytes
2023-09-02 16:43:59 +01:00
DakkJaniels ef87664403 refactor cleaving: added in player method to determine if character can cleave and if an item is equipped. 2023-09-02 06:51:15 +02:00
Gleb Mazovetskiy d31a7b5c2c Log Demo settings 2023-09-01 21:59:20 +01:00
Gleb Mazovetskiy 9701101634 Switch to C++20
glibc compatibility remains the same.

We now use Clang 18 and static libc++ for the Aarch64 build.
Linux x86 and x86_64 builds now use GCC 13.
2023-09-01 21:56:59 +01:00
Gleb Mazovetskiy af869ac732 Merge branch 'master' into dev-merged 2023-09-01 20:49:34 +01:00
ephphatha bd8aab0aff handle stash item swapping using the gamepad a bit better 2023-09-01 15:26:52 +02:00
ephphatha c85fcbdfb1 fix cursor alignment following gamepad movement in stash
align the cursor to the middle of the cell/region when moving through the stash to match the way we simulate mouse movement for inventory cells
2023-09-01 15:26:52 +02:00
ephphatha 0d292b10c4 Move to the first inventory column from the left hand while holding wide items 2023-08-31 15:53:43 +02:00
ephphatha 070a11901f Fix handling of gamepad cursor movement following item cursor change 2023-08-31 15:53:43 +02:00
Eric Robinson d4682082e2 Add duration parameter to InitDiabloMsg() (#6514) 2023-08-31 08:03:46 +02:00
Andrew James ed9bdd7ae5 Remove duplicated HeadlessMode check in LoadPlrGfx
Already checked at the start of the function, none of the sprite data lookups change that global.
2023-08-30 13:25:26 +02:00
Gleb Mazovetskiy 62e9aa0448 MissilePosition: Use WorldTilePosition
Reduces struct size and makes the types of coordinates more obvious.
2023-08-29 20:00:54 +01:00
ephphatha 5f6e5ae9fb Refactor iterator parsing to allow more reuse 2023-08-29 15:17:54 +02:00
KPhoenix cf4d88936b Change InitMissileGFX() 2023-08-29 14:26:17 +02:00
Gleb Mazovetskiy 5355146d51 Use structured bindings 2023-08-29 12:56:49 +01:00
Stephen C. Wills 5e778431c3 Deterministic timer simulation for shrine messages in demo mode (#6516) 2023-08-29 13:46:49 +02:00
Eric Robinson e3d79ae1c1 Fix automap (#6513) 2023-08-29 13:43:13 +02:00
staphen 4deae11871 Fix PlayerNetPack validation and tests 2023-08-27 21:34:38 +02:00
Eric Robinson 9995c00323 Validate Item Locations (#6427) 2023-08-27 18:22:24 +02:00
qndel be1d87fd29 fix selecting monsters outside of vision range 2023-08-27 18:20:07 +02:00
ephphatha fb97eb7114 Clean up hit detection for inventory slots when pasting large items 2023-08-27 18:16:04 +02:00
ephphatha dd296d25e0 Find the closest point when pasting items on the edge of the stash 2023-08-27 18:11:44 +02:00
Gleb Mazovetskiy eb51a8beb3 Reduce demo message size
`DemoMsg` struct and event data are now kept separately.

RAM usage for the timedemo messages: -85% (1.8 MiB -> 261 KiB)

Demo (`.dmo`) file size: -57% (590,790 bytes -> 253,410 bytes)
2023-08-27 16:49:13 +01:00
Gleb Mazovetskiy a3bf01f57b LoggedFread: Do not log EOF as an error
Usually we call fread in a loop until reaching EOF.
Reaching EOF is not an error, so we should not log it as such.

The error message was previously seen when loading demo files.
2023-08-27 15:59:03 +01:00
Stephen C. Wills 45dbe6aa61 Shift software cursor graphic and remove special casing (#6512) 2023-08-26 16:45:36 +02:00
Anders Jenbo c91e69384a Revert "Fix cursor jitter when clicking inv items (#6510)"
This reverts commit 2a393397a1.
2023-08-26 04:00:38 +02:00
Eric Robinson 2a393397a1 Fix cursor jitter when clicking inv items (#6510) 2023-08-26 01:27:48 +02:00
KPhoenix 00e8d8d75b Add Save Game confirmation 2023-08-26 01:10:27 +02:00
Anders Jenbo 15ed246239 Merge branch 'master' of github.com:diasurgical/devilutionX into development 2023-08-26 01:09:03 +02:00
Eric Robinson 9277aa72de Fix Floating Numbers after death (#6505) 2023-08-26 01:06:10 +02:00
KPhoenix cb5537083d Fix right click during dialogue 2023-08-26 01:05:05 +02:00
Eric Robinson e60a4dca3e Close Towner window when clicking outside (#6504) 2023-08-26 01:04:13 +02:00
ephphathaandGleb Mazovetskiy 32c3316743 Load experience data from file
Also added an iterator based API, though it's not useful for this use-case. Might be nice in the future?

The field/record iterators is single-pass input iterators with shared state.
To avoid rescanning fields unnecessarily parseInt currently can only be called once, it would be possible to make these iterators bidirectional with a bit of extra state (holding onto the start pointer)

Co-authored-by: Gleb Mazovetskiy <[email protected]>
2023-08-24 05:46:44 +02:00
ephphatha 996841e82e Restore level 50 experience cap from Diablo 2023-08-24 05:46:44 +02:00
ephphatha 8ed451b051 Move AddPlrExperience to class member function of Player 2023-08-24 05:46:44 +02:00
ephphatha e6890cc5cc Move MaxCharacterLevel to playerdat and add helpers for the various uses 2023-08-24 05:46:44 +02:00
ephphatha 14639cd096 Replace _pNextExper with getter method
No real need to persist this value
2023-08-24 05:46:44 +02:00
ephphatha da76e131e4 Add getter/setter for character levels to ensure _pNextExper stays synced 2023-08-24 05:46:44 +02:00
ephphatha d92d152576 Use unsigned type for character levels 2023-08-24 05:46:44 +02:00
ephphatha 486f5ca3e8 Replace ExpLvlsTbl global with helper function 2023-08-24 05:46:44 +02:00
Stephen C. Wills 7b06703842 Add tests for net player validation (#6492) 2023-08-21 00:18:03 +02:00
Gleb Mazovetskiy 4a4735e908 string_view-based asset lookup
Changes asset lookup functions to use `std::string_view` instead of
`const char *`.

This required new APIs in libmpq, added in
https://github.com/diasurgical/libmpq/pull/13.
2023-08-20 16:20:08 +09:00
Gleb Mazovetskiy 9ae72f0269 Remove PointsInRectangle factory functions
These are no longer needed in C++17 thanks to CTAD.
2023-08-20 15:37:28 +09:00
Anders Jenbo 02ca96ba67 Bump Android build chain to the latest from Google to not upset them 2023-08-19 21:41:23 +02:00