Added functional support for developer multi join

This commit is contained in:
2025-09-12 23:41:03 -05:00
parent e9b8638c27
commit e4d99aac00
3 changed files with 22 additions and 12 deletions

View File

@@ -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

View File

@@ -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: "?")

View File

@@ -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)