veloren_common/states/
sit.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_orientation(data, &mut update, 1.0, None);
20 handle_wield(data, &mut update);
21 handle_jump(data, output_events, &mut update, 1.0);
22
23 if data.physics.on_ground.is_none() || data.inputs.move_dir.magnitude_squared() > 0.0 {
25 update.character = CharacterState::Idle(idle::Data::default());
26 }
27
28 update
29 }
30
31 fn manipulate_loadout(
32 &self,
33 data: &JoinData,
34 output_events: &mut OutputEvents,
35 inv_action: InventoryAction,
36 ) -> StateUpdate {
37 let mut update = StateUpdate::from(data);
38 handle_manipulate_loadout(data, output_events, &mut update, inv_action);
39 update
40 }
41
42 fn wield(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
43 let mut update = StateUpdate::from(data);
44 attempt_wield(data, &mut update);
45 update
46 }
47
48 fn crawl(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
49 let mut update = StateUpdate::from(data);
50 attempt_crawl(data, &mut update);
51 update
52 }
53
54 fn dance(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
55 let mut update = StateUpdate::from(data);
56 attempt_dance(data, &mut update);
57 update
58 }
59
60 fn stand(&self, data: &JoinData, _: &mut OutputEvents) -> StateUpdate {
61 let mut update = StateUpdate::from(data);
62 update.character = CharacterState::Idle(idle::Data::default());
64 update
65 }
66}