@@ -847,61 +847,40 @@ static void OnlineStaffHandler(Player player, CommandReader cmd)
847847
848848 static void ListStaffHandler ( Player player , CommandReader cmd )
849849 {
850- Rank ranktarget = null ;
851- if ( cmd . HasNext )
852- {
850+ Rank onlyRank = null ;
851+ if ( cmd . HasNext ) {
853852 string rankName = cmd . Next ( ) ;
854- ranktarget = RankManager . FindRank ( rankName ) ;
855- if ( ranktarget == null )
856- {
853+ onlyRank = RankManager . FindRank ( rankName ) ;
854+ if ( onlyRank == null ) {
857855 player . MessageNoRank ( rankName ) ;
858856 return ;
859857 }
860858 }
861859
862- PlayerInfo [ ] infos ;
863-
864- if ( ranktarget == null )
865- {
860+ if ( onlyRank == null ) {
866861 player . Message ( "Below is a list of ALL staff members." ) ;
867- foreach ( Rank rank in RankManager . Ranks )
868- {
869- if ( rank . IsStaff )
870- {
871- infos = PlayerDB . PlayerInfoList
872- . Where ( info => info . Rank == rank )
873- . ToArray ( ) ;
874- if ( infos != null && rank . PlayerCount > 0 )
875- {
876- Array . Sort ( infos , new PlayerInfoComparer ( player ) ) ;
877- IClassy [ ] itemsEnumerated = infos ;
878- string nameList = itemsEnumerated . Take ( 15 ) . JoinToString ( "&S, " , p => p . ClassyName ) ;
879- if ( rank . PlayerCount > 15 ) {
880- player . Message ( " {0} &S(&f{1}&S): {2}{3} &S{4} more" , rank . ClassyName , rank . PlayerCount , rank . Color , nameList , ( rank . PlayerCount - 15 ) ) ;
881- } else {
882- player . Message ( " {0} &S(&f{1}&S): {2}{3}" , rank . ClassyName , rank . PlayerCount , rank . Color , nameList ) ;
883- }
884- }
885- }
862+ foreach ( Rank rank in RankManager . Ranks ) {
863+ if ( rank . IsStaff ) ListStaffOf ( player , rank , 15 , false ) ;
886864 }
865+ } else if ( ! onlyRank . IsStaff ) {
866+ player . Message ( "Rank {0}&S is not a staff rank" , onlyRank . ClassyName ) ;
867+ } else {
868+ player . Message ( "Below is a list of ALL staff members of rank {0}&S:" , onlyRank . ClassyName ) ;
869+ ListStaffOf ( player , onlyRank , 30 , true ) ;
887870 }
888- else
889- {
890- player . Message ( "Below is a list of ALL staff members of rank '" + ranktarget . ClassyName + "&S':" ) ;
891- infos = PlayerDB . PlayerInfoList
892- . Where ( info => info . Rank == ranktarget )
893- . ToArray ( ) ;
894- if ( infos != null )
895- {
896- Array . Sort ( infos , new PlayerInfoComparer ( player ) ) ;
897- IClassy [ ] itemsEnumerated = infos ;
898- string nameList = itemsEnumerated . Take ( 30 ) . JoinToString ( ", " , p => p . ClassyName ) ;
899- if ( ranktarget . PlayerCount > 15 ) {
900- player . Message ( " {0} &S(&f{1}&S): {2}{3} &S{4} more" , ranktarget . ClassyName , ranktarget . PlayerCount , ranktarget . Color , nameList , ( ranktarget . PlayerCount - 30 ) ) ;
901- } else {
902- player . Message ( " {0} &S(&f{1}&S): {2}{3}" , ranktarget . ClassyName , ranktarget . PlayerCount , ranktarget . Color , nameList ) ;
903- }
904- }
871+ }
872+
873+ static void ListStaffOf ( Player player , Rank rank , int max , bool showEmpty ) {
874+ PlayerInfo [ ] infos = PlayerDB . PlayerInfoList . Where ( info => info . Rank == rank ) . ToArray ( ) ;
875+ if ( infos == null || ( ! showEmpty && infos . Length == 0 ) ) return ;
876+
877+ Array . Sort ( infos , new PlayerInfoComparer ( player ) ) ;
878+ string names = infos . Take ( max ) . JoinToString ( ", " , p => p . ClassyName ) ;
879+
880+ if ( rank . PlayerCount > max ) {
881+ player . Message ( " {0} &S(&f{1}&S): {2}{3} &S{4} more" , rank . ClassyName , rank . PlayerCount , rank . Color , names , ( rank . PlayerCount - max ) ) ;
882+ } else {
883+ player . Message ( " {0} &S(&f{1}&S): {2}{3}" , rank . ClassyName , rank . PlayerCount , rank . Color , names ) ;
905884 }
906885 }
907886
@@ -2112,7 +2091,7 @@ static void PingListHandler(Player player, CommandReader cmd) {
21122091
21132092 for ( int i = 0 ; i < list . Length ; i ++ ) {
21142093 player . Message ( " &7{1}&S - {0}" , list [ i ] . Info . ClassyName ,
2115- list [ i ] . Ping . Format ( ) . PadLeft ( pad , '0' ) ) ;
2094+ list [ i ] . Ping . Format ( ) . PadLeft ( pad , '0' ) ) ;
21162095 }
21172096 player . Message ( "Showing players {0}-{1} (out of {2})." , offset + 1 , offset + list . Length , candidates . Count ( ) ) ;
21182097 }
0 commit comments