Commit Graph
85 Commits
Author SHA1 Message Date
Gleb Mazovetskiy e67ea9b006 Make MissilesData const
Instead of temporarily modifying `MissileData` around certain calls,
pass the arguments from the outside.
2023-02-15 10:47:08 +00:00
Gleb Mazovetskiy e9e67b3971 Load combined missile CLX in UNPACKED_MPQS mode
Companion PR:
https://github.com/diasurgical/devilutionx-mpq-tools/pull/8
2023-02-14 09:45:33 +00:00
Gleb Mazovetskiy 98294e0ad5 Optimize MissileData: 32 bytes -> 24
23 bytes used, 1 spare byte in the padding.
2023-02-07 08:08:04 +01:00
staphen e46d262c52 Fix length of Guardian idle animation 2023-02-06 01:19:54 +01:00
Gleb Mazovetskiy 64730bd0bd Optimize MissileFileData size: 80 bytes -> 32 2023-02-03 19:00:17 +00:00
Gleb Mazovetskiy 25e9b7320d Remove unused self-ID from Missile(File)Data 2023-02-03 14:37:44 +00:00
KPhoenix 7947b99511 Implement new enum class 2023-02-03 05:05:12 +01:00
Eric Robinson d7b6c7dca8 Refactor Missile Function Names (#5733) 2023-02-03 03:27:57 +01:00
DakkJaniels d2134f93cd MI_Firebolt -> MI_Projectile. Calculate damage when missile is added. 2023-01-30 19:01:18 +01:00
Gleb Mazovetskiy 7c53a5d5b3 Reduce ObjectData size: 24 bytes -> 11 bytes
1. Reduces sizes of integral fields.
2. Merges boolean flags into a single field.
2023-01-25 09:32:50 +00:00
KPhoenix 8db521727d enum missile_id -> enum class MissileID
Changes `enum missile_id` to `enum class MissileID`
2023-01-18 17:17:25 +00:00
Gleb Mazovetskiy b281f0afac Run tools/cpp_format_struct_table.py 2023-01-15 14:57:17 +01:00
Anders Jenbo 0c5fd01067 Change missile_resistance into class DamageType 2023-01-12 11:03:07 +01:00
Gleb Mazovetskiy 41f43ea3f5 Support unpacked MPQs from devilutionx-mpq-tools
https://github.com/diasurgical/devilutionx-mpq-tools produces an unpacked MPQ
with all the graphics converted to CLX and the unused files removed.
This is primarily useful on RAM-constrained platforms, such as PS2,
because it eliminates the MPQ overhead.

Adds a build option to load from such unpacked directories instead of the MPQ.

These directories are searched for in the same locations
where the MPQs would be searched for otherwise.

Example directory layout:

* /usr/local/share/diasurgical/devilutionx/diabdat/ -- unpacked and converted diabdat.mpq
* /usr/local/share/diasurgical/devilutionx/hellfire/ -- unpacked and converted hellfire MPQs (all of them merged into 1 directory)
* /usr/local/share/diasurgical/devilutionx/fonts/ -- unpacked fonts.mpq
* /usr/local/share/diasurgical/devilutionx/pl/ -- unpacked pl.mpq

These directory structure is produced by calling `unpack_and_minify_mpq`
2022-10-11 18:00:57 +01:00
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).
2022-08-20 23:49:23 +01:00
obligaron 68891a8df1 Rename MissileMovementDistrubution => MissileMovementDistribution 2022-08-20 23:41:40 +02:00
obligaron 044f900c60 Fix draw flag for MIS_HORKDMN (set to no drawing) 2022-08-06 08:21:04 +02:00
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.
2022-08-03 02:38:55 +02:00
Anders Jenbo ac2bf9aaac Limit what gets called in headless mode 2022-07-13 18:54:36 +02:00
Mikołaj Piróg 15989609a8 Members' name changes and comments in Monster struct (#4861) 2022-07-06 10:21:22 +02:00
DakkJaniels 46dcaf91af fix comment labels in misdat
swap mlSFX and miSFX to match structure definition.
2022-03-28 03:08:35 +02:00
Gleb Mazovetskiy f4bce38875 Use uint16_t for sprite widths 2022-03-06 04:49:13 +01:00
Gleb Mazovetskiy a5e1fa5bbe Load missile frames into a single buffer
Previously, the memory for each frame was allocated separately.

Changes it to allocate a single buffer for all the frames.

This has the following advantages:

1. Less bookkeeping overhead in the allocator.
2. Less alignment overhead (allocator results are max-aligned by default).

We can follow this up with a similar treatment for other multi-file
animations.
2022-02-01 04:04:59 +00:00
Gleb MazovetskiyandAnders Jenbo 7e1fea6f76 clang-format all files in {Source,test}/
Also includes a few manual tweaks to comments and newlines for better results.

Co-authored-by: Anders Jenbo <[email protected]>
2021-11-24 23:44:12 +01:00
ephphatha 6fa3018f05 Move Init/FreeMissileGFX functions alongside MissileSpriteData array definition
Also combined the two free missile graphics functions as they were always called together (just slightly out of order previously).
2021-09-07 01:09:51 +02:00
Juliano Leal Goncalves d82b3b542f 🚚 Rename 'MissileDataStruct' struct to 'MissileData' (#2803)
* 🚚 Rename 'MissileDataStruct' struct to 'MissileData'
* 🚚 Rename 'MissileData' global array to 'MissilesData'
2021-09-06 12:59:43 +02:00
Anders Jenbo 9a6820493f No missile golem
Simplify spawning golem, the golem will now spawn in the same tick
instead of next tick
2021-08-25 20:24:45 +02:00
qndel 3d92b6eea5 Rewrite manashield into not using a missile 2021-08-25 19:32:10 +02:00
qndel d76158ca03 reflect without missile! (#2659) 2021-08-22 01:32:41 +02:00
staphen c356db7d9f Fix uninitialized variable exception raised in Visual Studio debugger 2021-08-13 18:19:12 +02:00
Anders Jenbo c5e0966190 Clean up golem code 2021-08-13 03:59:29 +02:00
Anders Jenbo fa7f3442e4 Fix loading monster missiles 2021-08-13 03:59:29 +02:00
Anders Jenbo f289fbcec5 Remove dead missile code 2021-08-13 03:59:29 +02:00
Vladimir Olteanu a437cb1af9 Fix MissileFileData arrays not getting properly filled 2021-08-13 00:07:46 +02:00
Anders Jenbo ffc9b0e6a8 Apply clang-format 2021-08-12 00:22:30 +02:00
Vladimir Olteanu b76e8c060b Introduce MissileDataFlags 2021-08-12 00:19:09 +02:00
Vladimir Olteanu 4253ea7a39 Rename MisFileData to MissileFileData 2021-08-12 00:19:09 +02:00
Vladimir Olteanu 040ca7b1e9 Remove logic related to unused MFLAG_ALLOW_SPECIAL 2021-08-12 00:19:09 +02:00
Vladimir Olteanu 7482b23473 MissileSpriteData: move checks for hidden sprites to class members 2021-08-12 00:19:09 +02:00
Vladimir Olteanu b5d6758295 Introduce AutofillArray 2021-08-12 00:19:09 +02:00
Vladimir Olteanu 3364a4e00c Refactor MisFileData
MisFileData: make pinnedMem private
2021-08-12 00:19:09 +02:00
obligaron 5ed79c38ef Introduce MissilePosition.StopMissile 2021-07-16 02:15:36 +02:00
Anders Jenbo 9ae908f947 Rename missile globals 2021-07-08 02:01:14 -07:00
obligaron be53349c2d Decouple missile movement from game logic (#2322) 2021-07-08 10:19:52 +02:00
Anders Jenbo 7e737cfa96 Merge remote-tracking branch 'refs/remotes/devilution/master' 2021-07-03 01:44:45 +02:00
obligaron 86e1d488e6 Draw Reflect Icon similiar to Manashield 2021-05-21 13:27:57 +02:00
obligaron a3229741d1 🖌️ Refurbish tables in source code (clang-format off) 2021-04-25 23:48:25 +02:00
Anders Jenbo b69d18f12d 🌐 Enable translation of all remaning strings 2021-04-25 21:32:41 +02:00
John Törnblom e0dddf508a Add automatically translated string literals (#1694) 2021-04-25 18:14:58 +02:00
Anders Jenbo f004c78824 🧹 performance-unnecessary-value-param 2021-04-22 00:08:19 +02:00