From 2531a20bab784a43ee43a5e1da6aac356a43c288 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Sat, 4 Jun 2022 21:26:24 -0500 Subject: [PATCH] Show server name with player count to be joined in tooltip for 'Play Now' button --- lib/application_manager.rb | 14 +++++++++++--- lib/pages/games_redesign.rb | 9 ++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/application_manager.rb b/lib/application_manager.rb index c0a9b84..59fe69a 100644 --- a/lib/application_manager.rb +++ b/lib/application_manager.rb @@ -203,12 +203,20 @@ class W3DHub end end - def play_now(app_id, channel) + def play_now_server(app_id, channel) app_data = installed?(app_id, channel) - return false unless app_data + return nil unless app_data - server = Store.server_list.select { |server| server.game == app_id && server.channel == channel && !server.status.password }&.first + found_server = Store.server_list.select do |server| + server.game == app_id && server.channel == channel && !server.status.password + end&.first + + found_server ? found_server : nil + end + + def play_now(app_id, channel) + server = play_now_server(app_id, channel) return false unless server diff --git a/lib/pages/games_redesign.rb b/lib/pages/games_redesign.rb index 4ab2fc4..ce2efcc 100644 --- a/lib/pages/games_redesign.rb +++ b/lib/pages/games_redesign.rb @@ -152,9 +152,16 @@ class W3DHub Store.application_manager.update(game.id, channel.id) end else - button "#{I18n.t(:"interface.play")}", fill: true, text_size: 32 do + play_now_server = Store.application_manager.play_now_server(game.id, channel.id) + play_now_button = button "#{I18n.t(:"interface.play")}", fill: true, text_size: 32, enabled: !play_now_server.nil? do Store.application_manager.play_now(game.id, channel.id) end + + play_now_button.subscribe(:enter) do |btn| + server = Store.application_manager.play_now_server(game.id, channel.id) + btn.enabled = !server.nil? + btn.instance_variable_set(:"@tip", server ? "#{server.status.name} [#{server.status.player_count}/#{server.status.max_players}]" : "") + end end button get_image("#{GAME_ROOT_PATH}/media/ui_icons/singleplayer.png"), tip: I18n.t(:"interface.single_player"), image_height: 32, margin_left: 0 do