veloren_voxygen_egui/
character_states.rs

1use 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        // Character states with no associated data to display
21        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}