mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-15 16:52:34 +00:00
Changes, made server browser refresh button have a hard 30 second minimum refresh interval, settings are now saved!
This commit is contained in:
@@ -7,7 +7,13 @@ class W3DHub
|
||||
@download_package_info ||= {}
|
||||
@task = Store.application_manager.current_task
|
||||
|
||||
return unless @task
|
||||
unless @task
|
||||
body.clear do
|
||||
tagline "No operations pending.", width: 1.0, text_align: :center, margin: 128
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
body.clear do
|
||||
stack(width: 1.0, height: 1.0) do
|
||||
@@ -16,11 +22,11 @@ class W3DHub
|
||||
background @task.application.color
|
||||
|
||||
flow(width: 0.70, height: 1.0) do
|
||||
image "#{GAME_ROOT_PATH}/media/icons/#{@task.app_id}.png", height: 1.0
|
||||
@application_image = image "#{GAME_ROOT_PATH}/media/icons/#{@task.app_id}.png", height: 1.0
|
||||
|
||||
stack(margin_left: 8) do
|
||||
$bug_1 = tagline "#{@task.application.name}"
|
||||
$bug_2 = inscription "Version: #{@task.channel.current_version} (#{@task.channel.id})"
|
||||
@application_name_label = tagline "#{@task.application.name}"
|
||||
@application_version_label = inscription "Version: #{@task.channel.current_version} (#{@task.channel.id})"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -29,7 +35,7 @@ class W3DHub
|
||||
flow(width: 0.30, height: 1.0) do
|
||||
stack(width: 0.499, height: 1.0) do
|
||||
para "Download Speed", width: 1.0, text_align: :center
|
||||
inscription "10 MB/s", width: 1.0, text_align: :center
|
||||
@download_speed_label = inscription "0 b/s", width: 1.0, text_align: :center
|
||||
end
|
||||
|
||||
stack(width: 0.5, height: 1.0) do
|
||||
|
||||
@@ -70,7 +70,7 @@ class W3DHub
|
||||
end
|
||||
|
||||
# Game Stuff
|
||||
flow(width: 1.0, height: 0.89) do
|
||||
flow(width: 1.0, height: 0.88) do
|
||||
# background 0xff_9999ff
|
||||
|
||||
# Game options
|
||||
@@ -124,7 +124,7 @@ class W3DHub
|
||||
end
|
||||
|
||||
# Play buttons
|
||||
flow(width: 1.0, height: 0.08) do
|
||||
flow(width: 1.0, height: 0.09, padding_top: 6) do
|
||||
# background 0xff_551100
|
||||
|
||||
if Store.application_manager.installed?(game.id, channel.id)
|
||||
|
||||
@@ -51,7 +51,7 @@ class W3DHub
|
||||
populate_server_list
|
||||
end
|
||||
|
||||
button get_image("#{GAME_ROOT_PATH}/media/ui_icons/return.png"), image_height: 1.0, margin_left: 16, padding_left: 2, padding_right: 2, padding_top: 2, padding_bottom: 2 do
|
||||
button get_image("#{GAME_ROOT_PATH}/media/ui_icons/return.png"), tip: I18n.t(:"server_browser.refresh"), image_height: 1.0, margin_left: 16, padding_left: 2, padding_right: 2, padding_top: 2, padding_bottom: 2 do
|
||||
fetch_server_list
|
||||
end
|
||||
end
|
||||
@@ -306,13 +306,18 @@ class W3DHub
|
||||
end
|
||||
|
||||
def fetch_server_list
|
||||
unless Gosu.milliseconds - Store.server_list_last_fetch >= 30_000 # 30 seconds
|
||||
populate_server_list # Fake it
|
||||
return
|
||||
end
|
||||
|
||||
Thread.new do
|
||||
begin
|
||||
list = Api.server_list(2)
|
||||
|
||||
if list
|
||||
Store.server_list = list.sort_by! { |s| s&.status&.players&.size }.reverse
|
||||
|
||||
Store.server_list_last_fetch = Gosu.milliseconds
|
||||
|
||||
main_thread_queue << proc { populate_server_list }
|
||||
end
|
||||
|
||||
@@ -3,42 +3,110 @@ class W3DHub
|
||||
class Settings < Page
|
||||
def setup
|
||||
body.clear do
|
||||
stack(width: 1.0, height: 1.0, padding: 64, scroll: true) do
|
||||
stack(width: 1.0, height: 1.0, padding: 16, scroll: true) do
|
||||
para "<b>Language</b>"
|
||||
para "Select the UI language you'd like to use in the W3D Hub Launcher. You should restart the launcher after changing this setting before the ui will update", width: 1.0
|
||||
list_box items: ["English", "French", "German"], width: 1.0
|
||||
flow(width: 1.0) do
|
||||
para "<b>Launcher Language</b>", width: 0.249
|
||||
stack(width: 0.75) do
|
||||
@language_menu = list_box items: I18n.available_locales.map { |l| expand_language_code(l.to_s) }, choose: expand_language_code(Store.settings[:language]), width: 1.0
|
||||
inscription "Select the UI language you'd like to use in the W3D Hub Launcher. You should restart the launcher after changing this setting before the UI will update"
|
||||
end
|
||||
end
|
||||
|
||||
para "<b>Folder Paths</b>", margin_top: 32
|
||||
stack(width: 1.0, height: 0.35) do
|
||||
flow(width: 1.0, height: 0.5) do
|
||||
stack(width: 1.0) do
|
||||
flow(width: 1.0) do
|
||||
para "<b>App Install Folder</b>", width: 0.249
|
||||
|
||||
stack(width: 0.75, height: 1.0) do
|
||||
edit_line Store.settings[:app_install_dir], width: 1.0
|
||||
stack(width: 0.75) do
|
||||
@app_install_dir_input = edit_line Store.settings[:app_install_dir], width: 1.0
|
||||
inscription "The folder into which new games and apps will be installed by the launcher"
|
||||
end
|
||||
end
|
||||
|
||||
flow(width: 1.0, height: 0.5) do
|
||||
flow(width: 1.0, margin_top: 16) do
|
||||
para "<b>Package Cache Folder</b>", width: 0.249
|
||||
|
||||
stack(width: 0.75, height: 1.0) do
|
||||
edit_line Store.settings[:package_cache_dir], width: 1.0
|
||||
stack(width: 0.75) do
|
||||
@package_cache_dir_input = edit_line Store.settings[:package_cache_dir], width: 1.0
|
||||
inscription "A folder which will be used to cache downloaded packages used to install games and apps"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
para "<b>Diagnostics</b>"
|
||||
check_box "Enable Automatic Error Reporting", text_size: 16
|
||||
inscription "If this is enabled the launcher will automatically report errors to the development team, along with basic information about your machine, such as operating system.", width: 1.0
|
||||
if true # W3DHub.unix?
|
||||
para "<b>Wine</b>", margin_top: 32
|
||||
flow(width: 1.0) do
|
||||
para "<b>Wine Command</b>", width: 0.249
|
||||
stack(width: 0.75) do
|
||||
@wine_command_input = edit_line Store.settings[:wine_command], width: 1.0
|
||||
inscription "Command to use to for Windows compatiblity layer"
|
||||
end
|
||||
end
|
||||
|
||||
flow(width: 1.0, margin_top: 16) do
|
||||
para "<b>Wine Prefix</b>", width: 0.249
|
||||
stack(width: 0.75) do
|
||||
@wine_prefix_toggle = toggle_button checked: Store.settings[:wine_prefix]
|
||||
inscription "Whether each game gets its own prefix. Uses global/default prefix by default."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
button "Save" do
|
||||
old_language = Store.settings[:language]
|
||||
Store.settings[:language] = language_code(@language_menu.value)
|
||||
|
||||
Store.settings[:app_install_dir] = @app_install_dir_input.value
|
||||
Store.settings[:package_cache_dir_input] = @package_cache_dir_input.value
|
||||
|
||||
Store.settings[:wine_command] = @wine_command_input.value
|
||||
Store.settings[:wine_prefix] = @wine_prefix_toggle.value
|
||||
|
||||
button "Save", margin_top: 32 do
|
||||
Store.settings.save_settings
|
||||
|
||||
begin
|
||||
I18n.locale = Store.settings[:language]
|
||||
rescue I18n::InvalidLocale
|
||||
I18n.locale = :en
|
||||
end
|
||||
|
||||
if old_language == Store.settings[:language]
|
||||
page(Pages::Games)
|
||||
else
|
||||
# pop back to Boot state which will immediately push a new instance of Interface
|
||||
pop_state
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def language_code(string)
|
||||
case string.downcase.strip
|
||||
when "german"
|
||||
"de"
|
||||
when "french"
|
||||
"fr"
|
||||
when "spanish"
|
||||
"es"
|
||||
else
|
||||
"en"
|
||||
end
|
||||
end
|
||||
|
||||
def expand_language_code(string)
|
||||
case string.downcase.strip
|
||||
when "en"
|
||||
"English"
|
||||
when "de"
|
||||
"German"
|
||||
when "fr"
|
||||
"French"
|
||||
else
|
||||
raise "Unknown language error"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -120,7 +120,12 @@ class W3DHub
|
||||
begin
|
||||
list = Api.server_list(2)
|
||||
|
||||
Store.server_list = list.sort_by! { |s| s&.status&.players&.size }.reverse if list
|
||||
if list
|
||||
Store.server_list = list.sort_by! { |s| s&.status&.players&.size }.reverse
|
||||
end
|
||||
|
||||
Store.server_list_last_fetch = Gosu.milliseconds
|
||||
|
||||
@tasks[:server_list][:complete] = true
|
||||
rescue => e
|
||||
# Something went wrong!
|
||||
|
||||
@@ -9,6 +9,12 @@ class W3DHub
|
||||
|
||||
Store.settings.save_settings
|
||||
|
||||
begin
|
||||
I18n.locale = Store.settings[:language]
|
||||
rescue I18n::InvalidLocale
|
||||
I18n.locale = :en
|
||||
end
|
||||
|
||||
push_state(W3DHub::States::Boot)
|
||||
end
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ en:
|
||||
fetching_news: Fetching news...
|
||||
channel: Channel
|
||||
server_browser:
|
||||
refresh: Refresh
|
||||
join_server: Join Server
|
||||
game: Game
|
||||
map: Map
|
||||
|
||||
Reference in New Issue
Block a user