mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Prettify server/sys/msg/register.rs
This commit is contained in:
parent
1efc3188ef
commit
d9e2d501cd
@ -37,6 +37,9 @@ pub struct ReadData<'a> {
|
|||||||
uids: ReadStorage<'a, Uid>,
|
uids: ReadStorage<'a, Uid>,
|
||||||
clients: ReadStorage<'a, Client>,
|
clients: ReadStorage<'a, Client>,
|
||||||
server_event_bus: Read<'a, EventBus<ServerEvent>>,
|
server_event_bus: Read<'a, EventBus<ServerEvent>>,
|
||||||
|
player_metrics: ReadExpect<'a, PlayerMetrics>,
|
||||||
|
settings: ReadExpect<'a, Settings>,
|
||||||
|
editable_settings: ReadExpect<'a, EditableSettings>,
|
||||||
_healths: ReadStorage<'a, Health>, // used by plugin feature
|
_healths: ReadStorage<'a, Health>, // used by plugin feature
|
||||||
_plugin_mgr: ReadPlugin<'a>, // used by plugin feature
|
_plugin_mgr: ReadPlugin<'a>, // used by plugin feature
|
||||||
_uid_allocator: Read<'a, UidAllocator>, // used by plugin feature
|
_uid_allocator: Read<'a, UidAllocator>, // used by plugin feature
|
||||||
@ -49,9 +52,6 @@ impl<'a> System<'a> for Sys {
|
|||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
type SystemData = (
|
type SystemData = (
|
||||||
ReadData<'a>,
|
ReadData<'a>,
|
||||||
ReadExpect<'a, PlayerMetrics>,
|
|
||||||
ReadExpect<'a, Settings>,
|
|
||||||
ReadExpect<'a, EditableSettings>,
|
|
||||||
WriteStorage<'a, Player>,
|
WriteStorage<'a, Player>,
|
||||||
WriteStorage<'a, Admin>,
|
WriteStorage<'a, Admin>,
|
||||||
WriteStorage<'a, PendingLogin>,
|
WriteStorage<'a, PendingLogin>,
|
||||||
@ -66,9 +66,6 @@ impl<'a> System<'a> for Sys {
|
|||||||
_job: &mut Job<Self>,
|
_job: &mut Job<Self>,
|
||||||
(
|
(
|
||||||
read_data,
|
read_data,
|
||||||
player_metrics,
|
|
||||||
settings,
|
|
||||||
editable_settings,
|
|
||||||
mut players,
|
mut players,
|
||||||
mut admins,
|
mut admins,
|
||||||
mut pending_logins,
|
mut pending_logins,
|
||||||
@ -129,9 +126,9 @@ impl<'a> System<'a> for Sys {
|
|||||||
&ecs_world,
|
&ecs_world,
|
||||||
#[cfg(feature = "plugins")]
|
#[cfg(feature = "plugins")]
|
||||||
&read_data._plugin_mgr,
|
&read_data._plugin_mgr,
|
||||||
&*editable_settings.admins,
|
&*read_data.editable_settings.admins,
|
||||||
&*editable_settings.whitelist,
|
&*read_data.editable_settings.whitelist,
|
||||||
&*editable_settings.banlist,
|
&*read_data.editable_settings.banlist,
|
||||||
) {
|
) {
|
||||||
None => return Ok(()),
|
None => return Ok(()),
|
||||||
Some(r) => {
|
Some(r) => {
|
||||||
@ -176,8 +173,8 @@ impl<'a> System<'a> for Sys {
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let player = Player::new(username, settings.battle_mode, uuid);
|
let player = Player::new(username, read_data.settings.battle_mode, uuid);
|
||||||
let admin = editable_settings.admins.get(&uuid);
|
let admin = read_data.editable_settings.admins.get(&uuid);
|
||||||
|
|
||||||
if !player.is_valid() {
|
if !player.is_valid() {
|
||||||
// Invalid player
|
// Invalid player
|
||||||
@ -188,7 +185,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
if let Ok(StorageEntry::Vacant(v)) = players.entry(entity) {
|
if let Ok(StorageEntry::Vacant(v)) = players.entry(entity) {
|
||||||
// Add Player component to this client, if the entity exists.
|
// Add Player component to this client, if the entity exists.
|
||||||
v.insert(player);
|
v.insert(player);
|
||||||
player_metrics.players_connected.inc();
|
read_data.player_metrics.players_connected.inc();
|
||||||
|
|
||||||
// Give the Admin component to the player if their name exists in
|
// Give the Admin component to the player if their name exists in
|
||||||
// admin list
|
// admin list
|
||||||
@ -225,21 +222,26 @@ impl<'a> System<'a> for Sys {
|
|||||||
// Handle new players.
|
// Handle new players.
|
||||||
// Tell all clients to add them to the player list.
|
// Tell all clients to add them to the player list.
|
||||||
for entity in new_players {
|
for entity in new_players {
|
||||||
if let (Some(uid), Some(player)) = (read_data.uids.get(entity), players.get(entity)) {
|
let player_info = read_data.uids.get(entity).zip(players.get(entity));
|
||||||
let mut lazy_msg = None;
|
let (uid, player) = if let Some((uid, player)) = player_info {
|
||||||
for (_, client) in (&players, &read_data.clients).join() {
|
(uid, player)
|
||||||
if lazy_msg.is_none() {
|
} else {
|
||||||
lazy_msg = Some(client.prepare(ServerGeneral::PlayerListUpdate(
|
continue;
|
||||||
PlayerListUpdate::Add(*uid, PlayerInfo {
|
};
|
||||||
player_alias: player.alias.clone(),
|
|
||||||
is_online: true,
|
let mut lazy_msg = None;
|
||||||
is_moderator: admins.get(entity).is_some(),
|
for (_, client) in (&players, &read_data.clients).join() {
|
||||||
character: None, // new players will be on character select.
|
if lazy_msg.is_none() {
|
||||||
}),
|
lazy_msg = Some(client.prepare(ServerGeneral::PlayerListUpdate(
|
||||||
)));
|
PlayerListUpdate::Add(*uid, PlayerInfo {
|
||||||
}
|
player_alias: player.alias.clone(),
|
||||||
lazy_msg.as_ref().map(|msg| client.send_prepared(msg));
|
is_online: true,
|
||||||
|
is_moderator: admins.get(entity).is_some(),
|
||||||
|
character: None, // new players will be on character select.
|
||||||
|
}),
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
lazy_msg.as_ref().map(|msg| client.send_prepared(msg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user