Skip to main content

flatland_client_ui/
hud.rs

1//! HUD view mode and per-frame play HUD snapshot.
2
3/// Play-client HUD density: normal sidebar, compact essentials, or map-first.
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5pub enum HudViewMode {
6    #[default]
7    Normal,
8    Compact,
9    Map,
10}
11
12impl HudViewMode {
13    pub fn cycle(self) -> Self {
14        match self {
15            Self::Normal => Self::Compact,
16            Self::Compact => Self::Map,
17            Self::Map => Self::Normal,
18        }
19    }
20
21    pub fn label(self) -> &'static str {
22        match self {
23            Self::Normal => "normal",
24            Self::Compact => "compact",
25            Self::Map => "map",
26        }
27    }
28}
29
30#[derive(Debug, Default)]
31pub struct PlayHud<'a> {
32    pub movement: &'a str,
33    pub sprint_mode: bool,
34    pub map_target: Option<(f32, f32)>,
35    pub auto_nav_goal: Option<(f32, f32)>,
36    /// Mouse hover world position (dim cursor on map).
37    pub mouse_hover: Option<(f32, f32)>,
38    pub view_mode: HudViewMode,
39}