From 5c806852a57fea10267f3e6f845fe5ac73d5727b Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Mon, 4 Mar 2024 18:17:32 -0600 Subject: [PATCH] Store game colour and uses_engine_cfg to settings config, use wwconfig when game doesn't use engine.cfg --- lib/api/applications.rb | 7 +++++++ lib/pages/games.rb | 8 +++++++- lib/states/boot.rb | 21 ++++++++++++++++++++- lib/window.rb | 5 ----- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/lib/api/applications.rb b/lib/api/applications.rb index ee07c0c..f1e89cc 100644 --- a/lib/api/applications.rb +++ b/lib/api/applications.rb @@ -36,6 +36,13 @@ class W3DHub color = @data[:"extended-data"].find { |h| h[:name] == "colour" }[:value].sub("#", "") @color = "ff#{color}".to_i(16) + + cfg = @data[:"extended-data"].find { |h| h[:name] == "usesEngineCfg" } + @uses_engine_cfg = (cfg && cfg[:value].downcase.strip == "true") == true # explicit truthy compare to prevent return `nil` + end + + def uses_engine_cfg? + @uses_engine_cfg end class Channel diff --git a/lib/pages/games.rb b/lib/pages/games.rb index 60aa921..08357aa 100644 --- a/lib/pages/games.rb +++ b/lib/pages/games.rb @@ -189,7 +189,13 @@ class W3DHub button get_image("#{GAME_ROOT_PATH}/media/ui_icons/gear.png"), tip: I18n.t(:"games.game_options"), image_height: 32, margin_left: 0 do |btn| items = [] - items << { label: I18n.t(:"games.game_settings"), block: proc { push_state(States::GameSettingsDialog, app_id: game.id, channel: channel.id) } } #, block: proc { Store.application_manager.wwconfig(game.id, channel.id) } } + items << { label: I18n.t(:"games.game_settings"), block: proc do + if game.uses_engine_cfg? + push_state(States::GameSettingsDialog, app_id: game.id, channel: channel.id) + else + Store.application_manager.wwconfig(game.id, channel.id) + end + end} # items << { label: I18n.t(:"games.game_settings"), block: proc { Store.application_manager.settings(game.id, channel.id) } } items << { label: I18n.t(:"games.wine_configuration"), block: proc { Store.application_manager.wine_configuration(game.id, channel.id) } } if W3DHub.unix? items << { label: I18n.t(:"games.game_modifications"), block: proc { populate_game_modifications(game, channel) } } unless Store.offline_mode diff --git a/lib/states/boot.rb b/lib/states/boot.rb index d1ce5a6..529ee2d 100644 --- a/lib/states/boot.rb +++ b/lib/states/boot.rb @@ -56,6 +56,22 @@ class W3DHub if @offline_mode || (@progressbar.value >= 1.0 && @task_index == @tasks.size) pop_state + + # --- Repair/Upgrade settings schema/data + Store.settings[:favorites] ||= {} + # add game colo[u]r and uses_engine_cfg to application data + unless @offline_mode + Store.settings[:games].each do |key, game| + application = Store.applications.games.find { |g| g.id == key.to_s.split("_", 2).first } + next unless application + + game[:colour] = application.color + game[:uses_engine_cfg] = application.uses_engine_cfg? + end + end + + Store.settings.save_settings + push_state(States::Interface) end @@ -228,7 +244,10 @@ class W3DHub "studio-id": "", channels: [], "web-links": [], - "extended-data": [{ name: "colour", value: "#353535" }] + "extended-data": [ + { name: "colour", value: game[:colour] }, + { name: "usesEngineCfg", value: game[:uses_engine_cfg] }, + ] } channel = { diff --git a/lib/window.rb b/lib/window.rb index e6dd103..de9ea60 100644 --- a/lib/window.rb +++ b/lib/window.rb @@ -10,11 +10,6 @@ class W3DHub Store[:main_thread_queue] = [] - # Repair/Upgrade schema - Store.settings[:favorites] ||= {} - - Store.settings.save_settings - begin I18n.locale = Store.settings[:language] rescue I18n::InvalidLocale