mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'snok-online-players-cmd' into 'master'
Snok: Show online players cmd See merge request veloren/veloren!264
This commit is contained in:
commit
b1a7a61d77
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user