diff --git a/lib/application_manager.rb b/lib/application_manager.rb index 61c2f8c..b25bbfd 100644 --- a/lib/application_manager.rb +++ b/lib/application_manager.rb @@ -251,18 +251,22 @@ class W3DHub server_options = Store.server_list.select do |server| server.game == app_id && - server.channel == channel && - !server.status.password && - server.status.player_count < server.status.max_players + server.channel == channel && + !server.status.password && + server.status.player_count < server.status.max_players + end + # sort by player count HIGH to LOW + # and by ping LOW to HIGH + server_options.sort! do |a, b| + [b.status.player_count, a.ping] <=> [a.status.player_count, b.ping] end - server_options.sort_by! { |s| [s.status.player_count, s.ping] }.reverse! # try to find server with lowest ping and matching version found_server = server_options.find { |server| server.version == app_data[:installed_version] } # try to find server with lowest ping and undefined version found_server ||= server_options.find { |server| server.version == Api::ServerListServer::NO_OR_DEFAULT_VERSION } - found_server || nil + found_server end def play_now(app_id, channel)