veloren_voxygen_egui/
character_states.rs1use crate::{SelectedEntityInfo, widgets::two_col_row};
2use common::{
3 comp::CharacterState,
4 states::{charged_melee, dash_melee, leap_melee},
5};
6use egui::{Grid, Ui};
7
8pub fn draw_char_state_group(
9 ui: &mut Ui,
10 _selected_entity_info: &SelectedEntityInfo,
11 character_state: &CharacterState,
12) {
13 ui.horizontal(|ui| {
14 ui.label("Current State: ");
15 ui.label(character_state.to_string());
16 });
17 match character_state {
18 CharacterState::DashMelee(data) => dash_melee_grid(ui, data),
19 CharacterState::ChargedMelee(data) => charged_melee_grid(ui, data),
20 CharacterState::Dance
22 | CharacterState::Idle(_)
23 | CharacterState::Sit
24 | CharacterState::GlideWield(_)
25 | CharacterState::Talk(_)
26 | CharacterState::Wielding(_) => {},
27 CharacterState::LeapMelee(data) => leap_melee_grid(ui, data),
28 _ => {
29 ui.label("<Rendering not yet implemented for this state>");
30 },
31 };
32}
33
34fn charged_melee_grid(ui: &mut Ui, data: &charged_melee::Data) {
35 Grid::new("selected_entity_charged_melee_grid")
36 .spacing([40.0, 4.0])
37 .max_col_width(100.0)
38 .striped(true)
39 .show(ui, |ui| #[rustfmt::skip] {
40 two_col_row(ui, "Stage Section", data.stage_section.to_string());
41 two_col_row(ui, "Timer", format!("{}ms", data.timer.as_millis()));
42 two_col_row(ui, "Charge Amount", format!("{:.1}", data.charge_amount));
43 two_col_row(ui, "Exhausted", if data.exhausted { "True" } else { "False" });
44 });
45}
46
47fn dash_melee_grid(ui: &mut Ui, data: &dash_melee::Data) {
48 Grid::new("selected_entity_dash_melee_grid")
49 .spacing([40.0, 4.0])
50 .max_col_width(100.0)
51 .striped(true)
52 .show(ui, |ui| #[rustfmt::skip] {
53 two_col_row(ui, "Auto Charge", if data.auto_charge { "True" } else { "False " });
54 two_col_row(ui, "Timer", format!("{}ms", data.timer.as_millis()));
55 two_col_row(ui, "Stage Section", data.stage_section.to_string());
56 });
57}
58
59fn leap_melee_grid(ui: &mut Ui, data: &leap_melee::Data) {
60 Grid::new("selected_entity_leap_melee_grid")
61 .spacing([40.0, 4.0])
62 .max_col_width(100.0)
63 .striped(true)
64 .show(ui, |ui| #[rustfmt::skip] {
65 two_col_row(ui, "Stage Section", data.stage_section.to_string());
66 two_col_row(ui, "Timer", format!("{}ms", data.timer.as_millis()));
67 two_col_row(ui, "Exhausted", if data.exhausted { "True" } else { "False " });
68 });
69}