From 0e6c50644c7897c6d6f88a6624a09085abb0d4a0 Mon Sep 17 00:00:00 2001 From: RedlineTriad <39059512+RedlineTriad@users.noreply.github.com> Date: Sun, 21 Mar 2021 10:18:59 +0100 Subject: [PATCH] Sort the playerlist alphabetically --- voxygen/src/hud/social.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/voxygen/src/hud/social.rs b/voxygen/src/hud/social.rs index 8df73d199d..df7865b392 100644 --- a/voxygen/src/hud/social.rs +++ b/voxygen/src/hud/social.rs @@ -14,6 +14,7 @@ use conrod_core::{ widget::{self, Button, Image, Rectangle, Scrollbar, Text}, widget_ids, Color, Colorable, Labelable, Positionable, Sizeable, Widget, WidgetCommon, }; +use itertools::Itertools; use std::time::Instant; widget_ids! { @@ -378,9 +379,17 @@ impl<'a> Widget for Social<'a> { // Create a name, level and zone row for every player in the list // Filter out yourself from the online list let my_uid = self.client.uid(); - for (i, (&uid, player_info)) in - players.filter(|(uid, _)| Some(**uid) != my_uid).enumerate() - { + let mut player_list = players + .filter(|(uid, _)| Some(**uid) != my_uid) + .collect_vec(); + player_list.sort_by_key(|(_, player)| { + player + .character + .as_ref() + .map(|character| &character.name) + .unwrap_or(&player.player_alias) + }); + for (i, (&uid, player_info)) in player_list.into_iter().enumerate() { let hide_username = true; let zone = ""; // TODO Add real zone let selected = state.selected_uid.map_or(false, |u| u.0 == uid);