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