Merge branch 'snok-online-players-cmd' into 'master'

Snok: Show online players cmd

See merge request veloren/veloren!264
This commit is contained in:
Joshua Barretto 2019-06-29 22:16:27 +00:00
commit b1a7a61d77

View File

@ -98,6 +98,12 @@ lazy_static! {
"/spawn <alignment> <entity> [amount] : Spawn a test entity",
handle_spawn,
),
ChatCommand::new(
"players",
"{}",
"/players : Show the online players list",
handle_players,
),
ChatCommand::new(
"help", "", "/help: Display this message", handle_help)
];
@ -285,6 +291,30 @@ fn handle_spawn(server: &mut Server, entity: EcsEntity, args: String, action: &C
}
}
fn handle_players(server: &mut Server, entity: EcsEntity, _args: String, _action: &ChatCommand) {
let ecs = server.state.ecs();
let players = ecs.read_storage::<comp::Player>();
let count = players.join().count();
let mut header_message: String = format!("{} online players: \n", count);
if count > 0 {
let mut player_iter = players.join();
let first = player_iter.next().unwrap().alias.to_owned();
let player_list = player_iter.fold(first, |mut s, p| {
s += ",\n";
s += &p.alias;
s
});
server
.clients
.notify(entity, ServerMsg::Chat(header_message + &player_list));
} else {
server
.clients
.notify(entity, ServerMsg::Chat(header_message));
}
}
fn handle_help(server: &mut Server, entity: EcsEntity, _args: String, _action: &ChatCommand) {
for cmd in CHAT_COMMANDS.iter() {
server