From 9cb41a869375b4809ee0db506c00032b25f3be17 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 18 Feb 2026 08:44:16 -0600 Subject: [PATCH] Change nickname validation to match classic launcher --- lib/common.rb | 81 +++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/lib/common.rb b/lib/common.rb index 07f551a..0b688a5 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -54,51 +54,49 @@ class W3DHub end def self.prompt_for_nickname(accept_callback: nil, cancel_callback: nil) - CyberarmEngine::Window.instance.push_state( - W3DHub::States::PromptDialog, - title: I18n.t(:"server_browser.set_nickname"), - message: I18n.t(:"server_browser.set_nickname_message"), - prefill: Store.settings[:server_list_username], - accept_callback: accept_callback, - cancel_callback: cancel_callback, - # See: https://gitlab.com/danpaul88/brenbot/-/blob/master/Source/renlog.pm#L136-175 - valid_callback: proc do |entry| - entry.length > 1 && entry.length < 30 && (entry =~ /(:|!|&|%| )/i).nil? && - (entry =~ /[\001\002\037]/).nil? && (entry =~ /\\/).nil? - end - ) + CyberarmEngine::Window.instance.push_state( + W3DHub::States::PromptDialog, + title: I18n.t(:"server_browser.set_nickname"), + message: I18n.t(:"server_browser.set_nickname_message"), + prefill: Store.settings[:server_list_username], + accept_callback: accept_callback, + cancel_callback: cancel_callback, + valid_callback: proc do |entry| + entry.length.between?(3, 40) && (entry =~ /^[a-z0-9_\-\[\]]+$/i) end + ) + end - def self.prompt_for_password(accept_callback: nil, cancel_callback: nil) - CyberarmEngine::Window.instance.push_state( - W3DHub::States::PromptDialog, - title: I18n.t(:"server_browser.enter_password"), - message: I18n.t(:"server_browser.enter_password_message"), - input_type: :password, - accept_callback: accept_callback, - cancel_callback: cancel_callback, - valid_callback: proc { |entry| entry.length.positive? } - ) - end + def self.prompt_for_password(accept_callback: nil, cancel_callback: nil) + CyberarmEngine::Window.instance.push_state( + W3DHub::States::PromptDialog, + title: I18n.t(:"server_browser.enter_password"), + message: I18n.t(:"server_browser.enter_password_message"), + input_type: :password, + accept_callback: accept_callback, + cancel_callback: cancel_callback, + valid_callback: proc { |entry| entry.length.positive? } + ) + end - 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) && - username.to_s.length.positive? + 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) && + username.to_s.length.positive? - Store.application_manager.join_server( - server.game, - server.channel, - server, - username, - password, - multi - ) - else - CyberarmEngine::Window.instance.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?") - end - end + Store.application_manager.join_server( + server.game, + server.channel, + server, + username, + password, + multi + ) + else + CyberarmEngine::Window.instance.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?") + end + end def self.command(command, &block) if windows? @@ -123,7 +121,6 @@ class W3DHub process_info = Process.create(**hash) pid = process_info.process_id - status = -1 until (status = Process.get_exitcode(pid)) if block