Skip to content

Show a creature profile on the middle-click card - #246

Open
Rokk001 wants to merge 42 commits into
tomluchowski:shaders-improvementfrom
Rokk001:feature/creature-profile-card
Open

Rokk001 wants to merge 42 commits into
tomluchowski:shaders-improvementfrom
Rokk001:feature/creature-profile-card

Conversation

@Rokk001

@Rokk001 Rokk001 commented Oct 1, 2026 •

Copy link
Copy Markdown

The middle-click creature card becomes the creature's profile: the photo is the cached creature portrait, the text is the deterministic profile from #245 (name, handle, job, age, relationship, origin, quote, likes, dislikes, friends, foe, status). The previous information (statistics) stays reachable on a second page of the card. Window size, position and closing behaviour are unchanged.

Dependencies (this PR is stacked, the default comparison includes them):

Review this PR alone: compare of the 3 own commits.

Profile content in game (Kobold)
Profile content in game (Dwarf Worker)

Middle-click profile card

The first image is the middle-click card in game. It was taken during testing, before the final fix in this PR (the card now shows profile names for friends and foes instead of internal names such as "Rat14"; that fix is included in this PR). The two images above were taken in the integrated build and show the same profile rendering inside the Dungeonbook window of the follow-up PR; the card uses the same layout.

Verification: Release build of this branch (needed #162 and #225 as listed above; the build fails without them); source/tests/check_creature_profile_card.py and check_info_window.py pass. Mario tested the integrated build in game. No gameplay, network or save game effect: profiles are computed client-side and deterministically.

Rokk001 and others added 30 commits September 7, 2026 00:45
Embed per-monitor DPI awareness and maintain the verified OGRE 13.6.5 renderer patch required for context-safe window replacement, runtime GL options and correct fullscreen client geometry.

Validation: clean Release build, DPI and 3440x1440 fullscreen probes, three GL3Plus variants and the patch reverse check passed; version 0.7.1 remains unchanged because this is unreleased work and the project has no changelog.
Apply display, input, audio, gameplay, minimap, shadow and negotiated nickname changes to the running session while preserving rollback for failed window or input transitions and keeping the 3440x1440 navigation visible.

Validation: clean Release and Debug builds, packet tests, DPI, layout and GL3Plus probes passed; the user confirmed the reported resolution, fullscreen, cursor, flicker and navigation failures are fixed. Version 0.7.1 remains unchanged because this is unreleased work and the project has no changelog.
The spells tab put its ten buttons in a single row of 60 pixel squares running
out to x=700. The pane they live in is the window width minus the 200 pixels of
minimap, so at the 800 wide minimum window it is 600 pixels across, and the last
two spells, Weakness and the Eye of Evil, hung past its right edge where they
could be neither seen nor clicked. Only a window at least 900 wide showed the
whole row, and nothing said so.

The rooms tab solved the same problem long ago: two rows of 40 pixel buttons.
The spells tab now uses the same shape, five spells to a row, ending at x=300
with room to spare at any size the game accepts. The cooldown bar inside each
button now covers exactly its button too, instead of overhanging 20 pixels on
both sides, which with narrower buttons would have bled half way across the
neighbours.

The rooms tab had the tail of the same bug: the temple and portal buttons the
editor uses sat at x=570 to 690, past the same edge. They join the end of the
second row instead.

(cherry picked from commit 10db1cb)
Remove depleted fills and borders while preserving surviving health segments and the centre. Update player guidance and add the 200-check texture regression. No release version or protocol change is needed; the existing PR documents this unreleased feature correction.
# Conflicts:
#	source/entities/Creature.cpp
Replace the hardcoded dependency, Python and Visual Studio locations in the
Windows scripts with a shared windows-paths.ps1. The defaults derive from the
current user profile and can be overridden with OD_DEPS_ROOT, OD_PYTHON_ROOT
and OD_VS_PATH.
Replace the auto declarations introduced by this branch with explicit types,
as requested in issue tomluchowski#42 and required by CLAUDE.md. No behavioural change.
Replace the auto declarations introduced by this branch with explicit types,
as requested in issue tomluchowski#42 and required by CLAUDE.md. No behavioural change.
Replace the auto declarations introduced by this branch with explicit types,
as requested in issue tomluchowski#42 and required by the project coding guidelines. No behavioural change.
The middle button rotates the camera and, on press, also opened the stats
window of the creature under the pointer. Rotating over creatures therefore
opened windows the player never asked for. The window now opens when the
button is released without the pointer having moved more than a few pixels;
a middle drag only rotates.

Also explain the KO checkbox in the player settings with a tooltip.
The creature and tile info windows were built in code with a fixed
380 x 400 pixel size that was never scaled while the fonts were, so the
text was huge and cut off. They are now loaded from the new
gui/WindowStats.layout through Gui::createInfoWindow() and registered
for UI scaling like every other layout: fixed 540 x 490 layout units,
centred, not resizable (moving and closing stay), text top aligned and
word wrapped, body text in MedievalSharp-8 and headings in
MedievalSharp-10. A creature lists its next four destinations and the
total count, so the text fits the fixed window.

Check: source/tests/check_info_window.py (no sizing, fixed size, body
font, formatting, both entities use the layout).

Depends on the GUI scaling (tomluchowski#209) for Gui::registerWindowHierarchy().
…iles

Adds source/social with a line based data loader (SocialData), a
deterministic profile generator (SocialGenerator, FNV-1a-64 of the creature
name, own splitmix64 generator with one stream per field) and the data
files config/social-names.cfg and config/social-texts.cfg covering all
creature classes. Nothing calls the generator yet, there is no network or
save change and no gameplay effect.

Also adds ConfigManager::getConfigPath(), a Boost unit test
(determinism, empty fields, golden names, slots, fallbacks) and
check_social_data.py (class to name group mapping, data file sanity,
forbidden includes in source/social).
…ofile-card

# Conflicts:
#	source/modes/GameMode.cpp
…profile-card

# Conflicts:
#	source/modes/GameMode.cpp
…es, fitting rows, bar labels and a selected tab

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants