veloren_common/states/
dance.rs1use super::utils::*;
2use crate::{
3 comp::{CharacterState, InventoryAction, StateUpdate, character_state::OutputEvents},
4 states::{
5 behavior::{CharacterBehavior, JoinData},
6 idle,
7 },
8};
9use serde::{Deserialize, Serialize};
10
11#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)]
12pub struct Data;
13
14impl CharacterBehavior for Data {
15 fn behavior(&self, data: &JoinData, output_events: &mut OutputEvents) -> StateUpdate {
16 let mut update = StateUpdate::from(data);
17
18 leave_stance(data, output_events);
19 handle_wield(data, &mut update);
20 handle_jump(data, output_events, &mut update, 1.0);
21
22 if data.physics.on_ground.is_none() || data.inputs.move_dir.magnitude_squared() > 0.0 {
24 update.character = CharacterState::Idle(idle::Data::default());
25 }
26
27 update
28 }
29
30 fn manipulate_loadout(
31 &self,
32 data: &JoinData,
33 output_events: &mut OutputEvents,
34 inv_action: InventoryAction,
35 ) -> StateUpdate {
36 let mut update = StateUpdate::from(data);
37 handle_manipulate_loadout(data, output_events, &mut update, inv_action);
38 update
39 }
40
41 fn wield(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
42 let mut update = StateUpdate::from(data);
43 attempt_wield(data, &mut update);
44 update
45 }
46
47 fn sit(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
48 let mut update = StateUpdate::from(data);
49 attempt_sit(data, &mut update);
50 update
51 }
52
53 fn crawl(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
54 let mut update = StateUpdate::from(data);
55 attempt_crawl(data, &mut update);
56 update
57 }
58
59 fn stand(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
60 let mut update = StateUpdate::from(data);
61 update.character = CharacterState::Idle(idle::Data::default());
63 update
64 }
65}