mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Server events directly emitted in states now.
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
combat::Attack,
|
combat::Attack,
|
||||||
comp::{Energy, LoadoutManip, Ori, Pos, Vel},
|
comp::{Energy, Ori, Pos, Vel},
|
||||||
event::{LocalEvent, ServerEvent},
|
event::{LocalEvent, ServerEvent},
|
||||||
states::{behavior::JoinData, *},
|
states::{behavior::JoinData, *},
|
||||||
};
|
};
|
||||||
@ -17,7 +17,6 @@ pub struct StateUpdate {
|
|||||||
pub ori: Ori,
|
pub ori: Ori,
|
||||||
pub energy: Energy,
|
pub energy: Energy,
|
||||||
pub swap_loadout: bool,
|
pub swap_loadout: bool,
|
||||||
pub modify_loadout: Option<LoadoutManip>,
|
|
||||||
pub local_events: VecDeque<LocalEvent>,
|
pub local_events: VecDeque<LocalEvent>,
|
||||||
pub server_events: VecDeque<ServerEvent>,
|
pub server_events: VecDeque<ServerEvent>,
|
||||||
}
|
}
|
||||||
@ -30,7 +29,6 @@ impl From<&JoinData<'_>> for StateUpdate {
|
|||||||
ori: *data.ori,
|
ori: *data.ori,
|
||||||
energy: *data.energy,
|
energy: *data.energy,
|
||||||
swap_loadout: false,
|
swap_loadout: false,
|
||||||
modify_loadout: None,
|
|
||||||
character: data.character.clone(),
|
character: data.character.clone(),
|
||||||
local_events: VecDeque::new(),
|
local_events: VecDeque::new(),
|
||||||
server_events: VecDeque::new(),
|
server_events: VecDeque::new(),
|
||||||
|
@ -44,7 +44,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ use crate::{
|
|||||||
theropod, Body, CharacterState, LoadoutManip, StateUpdate,
|
theropod, Body, CharacterState, LoadoutManip, StateUpdate,
|
||||||
},
|
},
|
||||||
consts::{FRIC_GROUND, GRAVITY},
|
consts::{FRIC_GROUND, GRAVITY},
|
||||||
event::LocalEvent,
|
event::{LocalEvent, ServerEvent},
|
||||||
states::{behavior::JoinData, *},
|
states::{behavior::JoinData, *},
|
||||||
util::Dir,
|
util::Dir,
|
||||||
};
|
};
|
||||||
@ -360,8 +360,17 @@ pub fn attempt_swap_loadout(data: &JoinData, update: &mut StateUpdate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Handles inventory manipulations that affect the loadout
|
/// Handles inventory manipulations that affect the loadout
|
||||||
pub fn handle_modify_loadout(update: &mut StateUpdate, loadout_manip: Option<LoadoutManip>) {
|
pub fn handle_modify_loadout(
|
||||||
update.modify_loadout = loadout_manip;
|
data: &JoinData,
|
||||||
|
update: &mut StateUpdate,
|
||||||
|
loadout_manip: Option<LoadoutManip>,
|
||||||
|
) {
|
||||||
|
if let Some(loadout_manip) = loadout_manip {
|
||||||
|
update.server_events.push_front(ServerEvent::InventoryManip(
|
||||||
|
data.entity,
|
||||||
|
loadout_manip.into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks that player can wield the glider and updates `CharacterState` if so
|
/// Checks that player can wield the glider and updates `CharacterState` if so
|
||||||
|
@ -59,7 +59,7 @@ impl CharacterBehavior for Data {
|
|||||||
|
|
||||||
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
fn modify_loadout(&self, data: &JoinData, loadout_manip: Option<LoadoutManip>) -> StateUpdate {
|
||||||
let mut update = StateUpdate::from(data);
|
let mut update = StateUpdate::from(data);
|
||||||
handle_modify_loadout(&mut update, loadout_manip);
|
handle_modify_loadout(&data, &mut update, loadout_manip);
|
||||||
update
|
update
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,10 +268,6 @@ impl<'a> System<'a> for Sys {
|
|||||||
};
|
};
|
||||||
local_emitter.append(&mut state_update.local_events);
|
local_emitter.append(&mut state_update.local_events);
|
||||||
server_emitter.append(&mut state_update.server_events);
|
server_emitter.append(&mut state_update.server_events);
|
||||||
if let Some(loadout_manip) = state_update.modify_loadout {
|
|
||||||
server_emitter
|
|
||||||
.emit(ServerEvent::InventoryManip(j.entity, loadout_manip.into()));
|
|
||||||
}
|
|
||||||
incorporate_update(&mut tuple, state_update);
|
incorporate_update(&mut tuple, state_update);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user