fix(engine): Android HUD QA — glyph, avatar, toggle, modal-dismiss safety
Bug A: Replace U+21C4 (tofu on FiraMono) with plain ASCII "M" on the Modes action button. Bug B: HudAvatar disc was invisible against BG_HUD_BAND (same dark grey). Switch background to ACCENT_PRIMARY and text to TEXT_PRIMARY so the disc is clearly visible. Bug C/D: toggle_hud_on_tap improvements: - Drain buffered TouchInput events in the early-return path (scrim present or paused) so the modal-dismiss frame does not replay the button tap's Started+Ended pair as a spurious toggle. - Stop clearing start_pos on TouchPhase::Moved — Android fires Moved even for clean taps (jitter), and the distance check at Ended already rejects real drags via drag.is_idle(). Clearing it silently swallowed toggle attempts on physical devices. - Increase HUD_TAP_SLOP_PX from 15 → 25 for better tap recognition. Also reduces Android HUD_BAND_HEIGHT from 128 → 80 px now that action buttons live in the bottom bar rather than the top band. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -339,8 +339,8 @@ fn add_card_shadow_child(parent: &mut ChildSpawnerCommands, card_size: Vec2) {
|
||||
));
|
||||
}
|
||||
|
||||
/// Spawns a `CardBackFrame` child behind a face-down card entity so the dark
|
||||
/// back PNG has a visible perimeter against the dark felt.
|
||||
/// Spawns a `CardBackFrame` child behind a card entity to give every card a
|
||||
/// thin perimeter against the dark felt, regardless of face state.
|
||||
fn add_card_back_frame_child(parent: &mut ChildSpawnerCommands, card_size: Vec2) {
|
||||
parent.spawn((
|
||||
CardBackFrame,
|
||||
@@ -754,13 +754,11 @@ fn spawn_card_entity(
|
||||
entity.with_children(|b| {
|
||||
add_card_shadow_child(b, layout.card_size);
|
||||
});
|
||||
// Face-down cards get a thin contrasting border frame so the dark back
|
||||
// PNG reads as a distinct rectangle against the dark felt.
|
||||
if !card.face_up {
|
||||
entity.with_children(|b| {
|
||||
add_card_back_frame_child(b, layout.card_size);
|
||||
});
|
||||
}
|
||||
// Every card gets a thin border frame so it reads as a distinct
|
||||
// rectangle against the dark felt, regardless of face state.
|
||||
entity.with_children(|b| {
|
||||
add_card_back_frame_child(b, layout.card_size);
|
||||
});
|
||||
// When PNG faces are loaded the rank/suit are baked into the image.
|
||||
// Only spawn the Text2d overlay in the solid-colour fallback (tests).
|
||||
if card_images.is_none() {
|
||||
@@ -836,11 +834,9 @@ fn update_card_entity(
|
||||
commands.entity(entity).with_children(|b| {
|
||||
add_card_shadow_child(b, layout.card_size);
|
||||
});
|
||||
if !card.face_up {
|
||||
commands.entity(entity).with_children(|b| {
|
||||
add_card_back_frame_child(b, layout.card_size);
|
||||
});
|
||||
}
|
||||
commands.entity(entity).with_children(|b| {
|
||||
add_card_back_frame_child(b, layout.card_size);
|
||||
});
|
||||
if card_images.is_none() {
|
||||
commands.entity(entity).with_children(|b| {
|
||||
b.spawn((
|
||||
|
||||
Reference in New Issue
Block a user