diff --git a/lib/application_manager.rb b/lib/application_manager.rb index c525036..508b813 100644 --- a/lib/application_manager.rb +++ b/lib/application_manager.rb @@ -235,11 +235,11 @@ class W3DHub end end - def join_server(app_id, channel, server, password = nil) - if installed?(app_id, channel) && Store.settings[:server_list_username].to_s.length.positive? + def join_server(app_id, channel, server, username = Store.settings[:server_list_username], password = nil, multi = false) + if installed?(app_id, channel) && username.to_s.length.positive? run( app_id, channel, - "+connect #{server.address}:#{server.port} +netplayername #{Store.settings[:server_list_username]}#{password ? " +password \"#{password}\"" : ""}" + "+connect #{server.address}:#{server.port} +netplayername #{username}#{password ? " +password \"#{password}\"" : ""}#{multi ? " +multi" : ""}" ) end end diff --git a/lib/common.rb b/lib/common.rb index 953cb53..fc1dc6e 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -81,15 +81,19 @@ class W3DHub ) end - def self.join_server(server, password) + def self.join_server(server:, username: Store.settings[:server_list_username], password: nil, multi: false) if ( (server.status.password && password.length.positive?) || !server.status.password) && - Store.settings[:server_list_username].to_s.length.positive? + username.to_s.length.positive? Store.application_manager.join_server( server.game, - server.channel, server, password + server.channel, + server, + username, + password, + multi ) else CyberarmEngine::Window.instance.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?") diff --git a/lib/pages/server_browser.rb b/lib/pages/server_browser.rb index 2ab3bc4..b1a11a2 100644 --- a/lib/pages/server_browser.rb +++ b/lib/pages/server_browser.rb @@ -410,11 +410,11 @@ class W3DHub if server.status.password W3DHub.prompt_for_password( accept_callback: proc do |password| - W3DHub.join_server(server, password) + W3DHub.join_server(server: server, password: password) end ) else - W3DHub.join_server(server, nil) + W3DHub.join_server(server: server) end end ) @@ -422,18 +422,24 @@ class W3DHub if server.status.password W3DHub.prompt_for_password( accept_callback: proc do |password| - W3DHub.join_server(server, password) + W3DHub.join_server(server: server, password: password) end ) else - W3DHub.join_server(server, nil) + W3DHub.join_server(server: server) end end end if W3DHUB_DEVELOPER - list_box(items: (1..12).to_a.map(&:to_s), margin_left: 16, width: 72, tip: "Number of game clients", enabled: (game_installed && !game_updatable), **TESTING_BUTTON) - button "Multijoin", tip: "Launch multiple clients with configured username_\#{number}", enabled: (game_installed && !game_updatable), **TESTING_BUTTON + client_instances = list_box(items: (1..12).to_a.map(&:to_s), margin_left: 16, width: 72, tip: "Number of game clients", enabled: (game_installed && !game_updatable), **TESTING_BUTTON) + button("Multijoin", tip: "Launch multiple clients with configured username_\#{number}", enabled: (game_installed && !game_updatable), **TESTING_BUTTON) do + username = Store.settings[:server_list_username] + + client_instances.value.to_i.times do |i| + W3DHub.join_server(server: server, username: format("%s_%d", username, i), multi: true) + end + end end flow(fill: true)