feat(hud): compose native skill labels and timers without flicker - #443
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Skill shortcuts, cooldown numbers, and effect durations use a shared native HUD atlas. Each skill combines its keycap and cooldown into one ordered draw, preventing their relative order from flickering. All eight keycaps share the original-style proportions and scale with the interface; effect durations sit inside their icons above the duration bar.
Why
Independent drawing objects could reorder overlapping labels, and newly created meshes delayed the first visible timer. The new composition populates geometry immediately, reuses cached digits, and preserves label identity through effect expiry and atlas repacking. The old browser HUD drawing paths are removed.
Invariant
A separate
nativeHudRenderingcapability requires exact native draw-owner proof and validated geometry. Core-only and observation-only clients keep their original UI hooks. Refusing HUD drawing preserves independently certified observations, including the existing Alcohol Timer. The atlas allocates on first use; native destruction/reset and host disposal release owned resources. High-address wasm32 uploads are normalized before copying and freeing buffers.Delivery
Targets the native-maps layer and ultimately
main. Recommend one Beta candidate for the full stack, followed by exact signed-build gameplay QA. The proposed interactive native alcohol icon is outside this change.Verification
Combined source gate: 1,712 unit tests, 182 policy tests, 196 Tools UI tests, and 81 launcher UI tests passed, plus types, lint, and Markdown links. Integration (111), release checks (30), Tools end-to-end (42), packaging, and packaged smoke tests passed. The full Electron run had two stale map selectors and one focus-sensitive pointer-lock failure; corrected/isolated reruns passed.
The actual-client artifact suite passed; comparison with a previous WASM was skipped because no previous artifact was supplied. Native HUD bytecode tests cover composition, first-draw geometry, clipping, resource lifetime, malformed uploads, and high addresses. Production-atlas visual replay checks scaling and original-font layout.
Matthias accepted the preceding development build with “all working.” The final review fixes have automated evidence; this does not replace exact signed-candidate acceptance.