1 Commits

Author SHA1 Message Date
9cb41a8693 Change nickname validation to match classic launcher 2026-02-18 08:44:16 -06:00

View File

@@ -54,51 +54,49 @@ class W3DHub
end end
def self.prompt_for_nickname(accept_callback: nil, cancel_callback: nil) def self.prompt_for_nickname(accept_callback: nil, cancel_callback: nil)
CyberarmEngine::Window.instance.push_state( CyberarmEngine::Window.instance.push_state(
W3DHub::States::PromptDialog, W3DHub::States::PromptDialog,
title: I18n.t(:"server_browser.set_nickname"), title: I18n.t(:"server_browser.set_nickname"),
message: I18n.t(:"server_browser.set_nickname_message"), message: I18n.t(:"server_browser.set_nickname_message"),
prefill: Store.settings[:server_list_username], prefill: Store.settings[:server_list_username],
accept_callback: accept_callback, accept_callback: accept_callback,
cancel_callback: cancel_callback, cancel_callback: cancel_callback,
# See: https://gitlab.com/danpaul88/brenbot/-/blob/master/Source/renlog.pm#L136-175 valid_callback: proc do |entry|
valid_callback: proc do |entry| entry.length.between?(3, 40) && (entry =~ /^[a-z0-9_\-\[\]]+$/i)
entry.length > 1 && entry.length < 30 && (entry =~ /(:|!|&|%| )/i).nil? &&
(entry =~ /[\001\002\037]/).nil? && (entry =~ /\\/).nil?
end
)
end end
)
end
def self.prompt_for_password(accept_callback: nil, cancel_callback: nil) def self.prompt_for_password(accept_callback: nil, cancel_callback: nil)
CyberarmEngine::Window.instance.push_state( CyberarmEngine::Window.instance.push_state(
W3DHub::States::PromptDialog, W3DHub::States::PromptDialog,
title: I18n.t(:"server_browser.enter_password"), title: I18n.t(:"server_browser.enter_password"),
message: I18n.t(:"server_browser.enter_password_message"), message: I18n.t(:"server_browser.enter_password_message"),
input_type: :password, input_type: :password,
accept_callback: accept_callback, accept_callback: accept_callback,
cancel_callback: cancel_callback, cancel_callback: cancel_callback,
valid_callback: proc { |entry| entry.length.positive? } valid_callback: proc { |entry| entry.length.positive? }
) )
end end
def self.join_server(server:, username: Store.settings[:server_list_username], password: nil, multi: false) def self.join_server(server:, username: Store.settings[:server_list_username], password: nil, multi: false)
if ( if (
(server.status.password && password.length.positive?) || (server.status.password && password.length.positive?) ||
!server.status.password) && !server.status.password) &&
username.to_s.length.positive? username.to_s.length.positive?
Store.application_manager.join_server( Store.application_manager.join_server(
server.game, server.game,
server.channel, server.channel,
server, server,
username, username,
password, password,
multi multi
) )
else else
CyberarmEngine::Window.instance.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?") CyberarmEngine::Window.instance.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?")
end end
end end
def self.command(command, &block) def self.command(command, &block)
if windows? if windows?
@@ -123,7 +121,6 @@ class W3DHub
process_info = Process.create(**hash) process_info = Process.create(**hash)
pid = process_info.process_id pid = process_info.process_id
status = -1
until (status = Process.get_exitcode(pid)) until (status = Process.get_exitcode(pid))
if block if block