use crate::prelude::*; use leptos::prelude::*; /// Current/max HP with a fill bar, plus temp HP with its own bar. /// All three numbers are editable `type="number"` inputs. #[component] pub fn HitPoints () -> impl IntoView { let state = expect_context::(); let player = state.player(); let hp = player.hp(); let max_hp = player.max_hp(); let temp_hp = player.temp_hp(); // All three inputs parse via `utils::adjust_checked`; invalid text // restores the previous value. let adjust_hp = move |ev: Targeted| { utils::adjust_checked(ev, hp); }; let adjust_max_hp = move |ev: Targeted| { utils::adjust_checked(ev, max_hp); }; let adjust_temp_hp = move |ev: Targeted| { utils::adjust_checked(ev, temp_hp); }; let pc_hp = move |a: u16, b: u16| -> String { format!("width: {}%", utils::filled_pc(a, b).min(100.)) }; view! {
hp/оз:
"/"
} }