From 6dd19663840942f97d588f59398a610a06db5da9 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Mon, 22 Nov 2021 22:02:01 -0600 Subject: [PATCH] Play now button functional, server list Server now rejects 'players' with nicks Nod and GDI to correct player count, implemented show folder for Games list --- lib/api/server_list_server.rb | 2 +- lib/application_manager.rb | 35 +++++++++++++++++++++++++++++++++-- lib/pages/games.rb | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/api/server_list_server.rb b/lib/api/server_list_server.rb index 460644b..0c8bb26 100644 --- a/lib/api/server_list_server.rb +++ b/lib/api/server_list_server.rb @@ -22,7 +22,7 @@ class W3DHub @data = hash @teams = @data[:teams]&.map { |t| Team.new(t) } - @players = @data[:players]&.map { |t| Player.new(t) } + @players = @data[:players]&.select { |t| t[:nick] != "Nod" && t[:nick] != "GDI" }&.map { |t| Player.new(t) } @name = @data[:name] @password = @data[:password] || false diff --git a/lib/application_manager.rb b/lib/application_manager.rb index bbe08b8..0d3748d 100644 --- a/lib/application_manager.rb +++ b/lib/application_manager.rb @@ -94,13 +94,32 @@ class W3DHub def show_folder(app_id, channel, type) puts "Show Folder Request: #{app_id} -> #{type.inspect}" - case type + app_data = installed?(app_id, channel) + + return false unless app_data + + cmd = if W3DHub.windows? + "explorer" + elsif W3DHub.linux? + "xdg-open" + elsif W3DHub.mac? + "open" + end + + path = case type when :installation + app_data[:install_directory] when :user_data + app_data[:install_directory] when :screenshots + app_data[:install_directory] else - warn "Unknown folder type: #{type.inspect}" + raise "Unknown folder type: #{type.inspect}" end + + path.gsub!("/", "\\") if W3DHub.windows? + + system("#{cmd} \"#{path}\"") end def wine_command(app_id, channel) @@ -132,6 +151,18 @@ class W3DHub end end + def play_now(app_id, channel) + app_data = installed?(app_id, channel) + + return false unless app_data + + server = Store.server_list.select { |server| server.game == app_id && !server.status.password }&.first + + return false unless server + + join_server(app_id, channel, server) + end + def auto_import return unless W3DHub.windows? diff --git a/lib/pages/games.rb b/lib/pages/games.rb index a2a35ff..a4fb6b4 100644 --- a/lib/pages/games.rb +++ b/lib/pages/games.rb @@ -129,7 +129,7 @@ class W3DHub if Store.application_manager.installed?(game.id, channel.id) button "#{I18n.t(:"interface.play_now")}", margin_left: 24 do - Store.application_manager.run(game.id, channel.id) + Store.application_manager.play_now(game.id, channel.id) end button "#{I18n.t(:"interface.single_player")}", margin_left: 24 do