* Non-int versions of `Point` and `Displacement`
This will allow us to make some structs, such as `ActorPosition`, much
smaller.
* ActorPosition: Use smaller types
`Monsters`: 56K -> 46K
* player.cpp: Reduce size of `DirectionSettings`
* CrawlTable: Displacement -> DisplacementOf<int8_t>
* CrawlTable: vector<vector> -> array<vector>
Also only allocate one vector during construction instead of two.
A bit less indirection.
* Monster#enemyPosition: Point -> WorldTilePosition
sizeof(Monster): 240 -> 232
* Monster: Further optimize field layout and sizes
sizeof(Monster): 232 -> 208
`Monsters` is down to 40,000 bytes
* DMonsterStr: _mx/_my -> position
Diablo and Hellfire have different palettes in `ui_art\black.pcx`.
We now ship our own tiny `black.pcx` that takes priority over the
other ones. This `black.pcx` had the Diablo palette which resulted in an
incorrect palette in the Settings screen.
Split our own `black.pcx` file into `black_diablo.pcx` and
`black_hellfire.pcx` and load the correct one depending on the mode.
1. Make the vcpkg hack minimal by only defining the options it needs
before `include(Platforms)`.
Every dependent option needed by vcpkg has to be recalculated
after `include(Platforms)`. This brings the count of such options
down to 1 (`PACKET_ENCRYPTION`).
2. `include(Platforms)` before the rest of the options.
3. Group related options together into sections and add comments.
4. Fix `--gc-sections` for C files. Also adds `-Wl,--as-needed`.
Note: `PIE` can now be `ON` even if `BUILD_TESTING` is `OFF`.
1. There is no small logo. Simply use 2 variables.
2. The medium logo is much smaller as PCX:
* Hellfire (`ui_art\hf_logo2.pcx`): 1591816 bytes -> 195850 bytes
* Diablo (`ui_art\smlogo.pcx`): 341923 bytes -> 333099 bytes
* Move `ArtLogoBig` to `title.cpp`
It is only ever used there
The monster id naming convention was inconsistent with several names being used: i, mid, mon, mi, monsterId
This chanage normalises all names to monsterId
MI_FireRing adds missiles MIS_FIREWALL with TARGET_BOTH and src equals
to either player ID, or -1 if Fire Ring is casted as trap. This has
consequences:
1. Because TARGET_BOTH MonsterMHit was called, as it usually called for
Firewalls. During this calls reference to Player gets garbage data (id
-1). This may miscalculate:
- no heal flags
- knockback flags (already fixed in this PR)
- unsquelch position.last
2. drops ear for firewall flame originating from Fire Ring from trap
Fix:
- Separated TARGET_BOTH from IsTrap for monsters to ensure TryHitMonster
will get passed TrapMissile (MonsterTrapHit) is called instead.
- added additional condition for earflag
Add FreeBSD install instructions.
FreeBSD port has been reworked and updated to latest release, notable changes are:
---
games/devilutionX: update to 1.4
- Update to 1.4
- Drop dependency on font, no longer needed
- Drop unnecessary .desktop file patches (also upstream PR exists)
- Install from the port (instead of patching CMakeLists.txt), to be
more explicit and flexible
- Convert to pkg-plist as there are more files now
- The new version tries to fetch dependencies from the net, for some
depenencies this is unconditional. Fetch these properly with
GH_TUPLE and place in a directory where CMake expectes them.
- Upstream code expects patch component in the version, so add an extra
.0 to VERSION_NUM. This should not break on (future) X.Y.Z versions
as the component will move to micropatch position and will be ignored
- BINARY_RELEASE option is gone
- Untie DEBUG (engine debug bode) from WITH_DEBUG knob (build debug
binary), these are orthogonal
- Properly support optional depends; zerotier is the only one
broken as it conflicts with system header (see
https://github.com/diasurgical/devilutionX/issues/4585)
- Install devilutionx (own) data file
- Since it's not versioned, use a little hack to add a tag to the
filename to avoid clashes on the future updates; this seemed less
evil than introducing DIST_SUBDIR
- Use two-level datadir to be consistent with ~/.local/share path
- Update pkg-message (Diablo data file doesn't have to be lowercase,
works either way)
---
FreeBSD port url: https://www.freshports.org/games/devilutionX/
Thanks,
Nuno Eduardo Teixeira
eduardo@FreeBSD.org