refactor(engine): audit and rationalize platform cfg gates (closes #49)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
funman300
2026-05-27 18:00:57 -07:00
parent 561395fca6
commit ce536b0176
13 changed files with 302 additions and 243 deletions
+27 -26
View File
@@ -174,17 +174,17 @@ impl HomeMode {
}
/// The keyboard accelerator that dispatches the same launch event,
/// shown in a small chip on the card.
#[cfg(not(target_os = "android"))]
fn hotkey(self) -> &'static str {
match self {
/// shown in a small chip on desktop cards.
fn hotkey(self) -> Option<&'static str> {
let key = match self {
HomeMode::Classic => "N",
HomeMode::Daily => "C",
HomeMode::Zen => "Z",
HomeMode::Challenge => "X",
HomeMode::TimeAttack => "T",
HomeMode::PlayBySeed => "6",
}
};
crate::platform::SHOW_KEYBOARD_ACCELERATORS.then_some(key)
}
/// `true` when the mode is gated behind `CHALLENGE_UNLOCK_LEVEL`.
@@ -1392,27 +1392,28 @@ fn spawn_mode_card(
));
if unlocked {
// Hotkey chip — suppressed on Android (touch builds have no keyboard).
#[cfg(not(target_os = "android"))]
row.spawn((
Node {
padding: UiRect::axes(VAL_SPACE_2, VAL_SPACE_1),
min_width: Val::Px(32.0),
justify_content: JustifyContent::Center,
border: UiRect::all(Val::Px(1.0)),
border_radius: BorderRadius::all(Val::Px(RADIUS_MD)),
..default()
},
BorderColor::all(BORDER_SUBTLE),
HighContrastBorder::with_default(BORDER_SUBTLE),
))
.with_children(|chip| {
chip.spawn((
Text::new(mode.hotkey().to_string()),
font_chip.clone(),
TextColor(TEXT_SECONDARY),
));
});
// Hotkey chip — suppressed on touch-first Android builds.
if let Some(hotkey) = mode.hotkey() {
row.spawn((
Node {
padding: UiRect::axes(VAL_SPACE_2, VAL_SPACE_1),
min_width: Val::Px(32.0),
justify_content: JustifyContent::Center,
border: UiRect::all(Val::Px(1.0)),
border_radius: BorderRadius::all(Val::Px(RADIUS_MD)),
..default()
},
BorderColor::all(BORDER_SUBTLE),
HighContrastBorder::with_default(BORDER_SUBTLE),
))
.with_children(|chip| {
chip.spawn((
Text::new(hotkey),
font_chip.clone(),
TextColor(TEXT_SECONDARY),
));
});
}
} else {
// Lock icon stand-in — text glyph keeps the layout
// dependency-free (no asset loader required) and