7 Commits
Author SHA1 Message Date
Gleb MazovetskiyandClaude Sonnet 5 92927ca913 Migrate ClassAttributes, player HP/mana, item HP/mana bonuses, and monster HP to Fixed10_6/Fixed26_6
Replaces ParseFixed6/parseFixed6/readFixed6/readDecimal's raw-int
plumbing with the new FixedPoint type, then propagates strongly-typed
fixed-point fields through everywhere that consumed them: player
_pHitPoints/_pMana (and their base/max variants), ClassAttributes'
percentage/multiplier fields, Item::_iPLHP/_iPLMana, and
Monster::hitPoints/maxHitPoints. Eliminates manual <<6/>>6 bit-shifting
at nearly every call site in favor of fromInt/fromRaw/whole() and the
new fixed-point arithmetic operators, while preserving raw() only at
genuine serialization/network wire-format boundaries.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-10-11 21:55:08 +01:00
Gleb MazovetskiyandClaude Fable 5 ac2d7fc731 Replace libfmt with std::format
- `fmt::format` with literal format strings -> `std::format`.
- `fmt::format(fmt::runtime(...))` -> `FormatRuntime` in the new
  `utils/format.hpp`, a std::vformat wrapper that is also safe under the
  P2905 lvalue requirement of `std::make_format_args`.
- `fmt::dynamic_format_arg_store` (Lua logging) -> a small hand-rolled
  per-field formatter over `std::variant`, returning `std::expected`.
- `fmt::format_int` -> `std::to_chars`.
- `fmt::join` -> manual joins at the two call sites.
- SDL_audiolib: new patch that rewrites aulib_log.h to use std::format
  and drops the fmt dependency from its CMakeLists.
- The `-static-libstdc++` guard now keys off
  `DEVILUTIONX_STATIC_SDL_AUDIOLIB` instead of `DEVILUTIONX_STATIC_LIBFMT`.
- libfmt removed from CMake, vcpkg, Brewfile, CI workflows,
  Dockerfiles, packaging scripts, UWP project, and docs.
- macOS bumped to 13.3+, iOS to 16.3+ (required for `<format>`)
- Amiga m68k: provide `__cmpdf2`, which is missing from the hard-float
  libgcc multilib but referenced via libstdc++'s long double paths.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-22 00:00:04 +02:00
Roman Stingler 5141d0d185 Fix speedbook tooltip showing default key instead of bound key 2026-07-19 13:10:20 +01:00
Gleb Mazovetskiy 34c4cfc2e7 Add missing <fmt/format.h> includes 2026-06-29 17:00:01 +01:00
Anders Jenbo 005e7dcc23 chore: clang-tidy cleanup part 1 2026-04-03 22:57:48 +02:00
Scott RichmondandYuri Pourre 0ecc3edaed [QOL] The buy and sell functionality of NPC stores is now visually driven to align with the stash and Diablo 2 style of trading (#8434)
- Add repair buttons (including “Repair All”) with proper alignment, tooltips, and cursor hit areas
- Improve controller support:
- Fix grid snapping and cursor positioning across panels
- Allow pressing/releasing UI buttons
- Fix item selling and movement between panels (inventory, belt, store)
- Prevent invalid interactions:
- Disable tab/repair navigation while holding items
- Hide unavailable options for non-Smith vendors
- Fix UI issues:
- Item misalignment and snapping
- Floating gold cost display
- Level-up button overlapping store panel
- Fix vendor-specific issues:
- Correct tooltip for non-Smith vendors
- Clean up Adria dialog options
- Fix stability issues:
- Resolve segfault when selling items
- Refactor and cleanup:
- Unify store sell logic
- Remove unused and stale code
- Improve IsPlayerInStore() logic
- General bug fixes and UI interaction improvements
---------

Co-authored-by: Yuri Pourre <[email protected]>
2026-03-29 15:23:43 +02:00
Eric Robinson e6032a69a8 Split control.cpp (#8347) 2025-12-13 08:32:02 +00:00