Removed dependence on the bsdtar command, fixed Play Now button not doing anything if a server nickname wasn't set, refactor a bit so that the Server List's 'Join Server' button functionality can be reused for the Play Now button, installer now always unpacks into 'data/*' instead of 'Data/*'

This commit is contained in:
2022-12-02 14:12:45 -06:00
parent 19a15e937e
commit 55c0f363e0
8 changed files with 126 additions and 96 deletions

View File

@@ -80,7 +80,7 @@ class W3DHub
@nickname_label = inscription "#{Store.settings[:server_list_username]}"
image "#{GAME_ROOT_PATH}/media/ui_icons/wrench.png", height: 16, hover: { color: 0xaa_ffffff }, tip: I18n.t(:"server_browser.set_nickname") do
# Prompt for player name
prompt_for_nickname(
W3DHub.prompt_for_nickname(
accept_callback: proc do |entry|
@nickname_label.value = entry
Store.settings[:server_list_username] = entry
@@ -390,32 +390,32 @@ class W3DHub
# prompt for password
# Launch game
if Store.settings[:server_list_username].to_s.length.zero?
prompt_for_nickname(
W3DHub.prompt_for_nickname(
accept_callback: proc do |entry|
@nickname_label.value = entry
Store.settings[:server_list_username] = entry
Store.settings.save_settings
if server.status.password
prompt_for_password(
W3DHub.prompt_for_password(
accept_callback: proc do |password|
join_server(server, password)
W3DHub.join_server(server, password)
end
)
else
join_server(server, nil)
W3DHub.join_server(server, nil)
end
end
)
else
if server.status.password
prompt_for_password(
W3DHub.prompt_for_password(
accept_callback: proc do |password|
join_server(server, password)
W3DHub.join_server(server, password)
end
)
else
join_server(server, nil)
W3DHub.join_server(server, nil)
end
end
end
@@ -599,49 +599,6 @@ class W3DHub
data
end
def prompt_for_nickname(accept_callback: nil, cancel_callback: nil)
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
)
end
def prompt_for_password(accept_callback: nil, cancel_callback: nil)
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 join_server(server, password)
if (
(server.status.password && password.length.positive?) ||
!server.status.password) &&
Store.settings[:server_list_username].to_s.length.positive?
Store.application_manager.join_server(
server.game,
server.channel, server, password
)
else
window.push_state(W3DHub::States::MessageDialog, type: "?", title: "?", message: "?")
end
end
def formatted_score(int)
int.to_s.reverse.scan(/.{1,3}/).join(",").reverse
end