From 84051103fc20ceab9e46da8b0cd64b21f85887ac Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Fri, 1 Mar 2024 22:39:18 -0600 Subject: [PATCH] Improved avatar handling, fixed import/install button text sizes, fixed typo ERRNO-> Errno, ocra[n] packaging adjustments --- Gemfile | 6 +++++- Gemfile.lock | 6 ++---- Rakefile | 6 +++--- lib/application_manager/task.rb | 4 ++-- lib/pages/games.rb | 4 ++-- lib/pages/login.rb | 17 ++++++++++++++++- 6 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Gemfile b/Gemfile index 20acbbc..ccc6f61 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,11 @@ gem "websocket-client-simple" gem "win32-process", platforms: [:x64_mingw, :mingw] gem "win32-security", platforms: [:x64_mingw, :mingw] +# Packaging on 3.3.0 is... painful. Using 3.2.0 for now. +# bundler 2.5.x doesn't seem to play nice with ocra[n] +# use `bundle _x.y.z_ COMMAND` to use this one... # group :windows_packaging do +# gem "bundler", "~>2.4.3" # gem "rake" -# gem "releasy" +# gem "releasy", github: "cyberarm/releasy" # end diff --git a/Gemfile.lock b/Gemfile.lock index 2351d16..e16912d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GEM rake (>= 12.0.0, < 14.0.0) event_emitter (0.2.6) excon (0.109.0) - ffi (1.16.3) + ffi (1.16.3-x64-mingw-ucrt) ffi-win32-extensions (1.0.4) ffi gosu (1.4.6) @@ -36,8 +36,6 @@ GEM PLATFORMS x64-mingw-ucrt - x64-mingw32 - x86_64-linux DEPENDENCIES base64 @@ -53,4 +51,4 @@ DEPENDENCIES win32-security BUNDLED WITH - 2.5.3 + 2.4.3 diff --git a/Rakefile b/Rakefile index 6efb8b7..f7a382a 100644 --- a/Rakefile +++ b/Rakefile @@ -11,13 +11,13 @@ Releasy::Project.new do version W3DHub::VERSION executable "w3d_hub_linux_launcher.rb" - files ["lib/**/*.*", "locales/*", "media/**/**", "data/.gitkeep", "data/cache/.gitkeep"] - exclude_encoding # Applications that don't use advanced encoding (e.g. Japanese characters) can save build size with this. + files ["lib/**/*.*", "locales/*", "media/**/**", "data/.gitkeep", "data/cache/.gitkeep", "data/logs/.gitkeep"] + # exclude_encoding # Applications that don't use advanced encoding (e.g. Japanese characters) can save build size with this. verbose add_build :windows_folder do icon "media/icons/app.ico" - executable_type :console # Assuming you don't want it to run with a console window. + executable_type :windows # :console # Assuming you don't want it to run with a console window. add_package :exe # Windows self-extracting archive. end end \ No newline at end of file diff --git a/lib/application_manager/task.rb b/lib/application_manager/task.rb index e7ef1e9..be73e7f 100644 --- a/lib/application_manager/task.rb +++ b/lib/application_manager/task.rb @@ -61,7 +61,7 @@ def start status = execute_task rescue FailFast # no-op - rescue StandardError, ERRNO::EACCES => e + rescue StandardError, Errno::EACCES => e status = false @task_failure_reason = e.message[0..512] @@ -700,7 +700,7 @@ def unzip(package_path, path) File.open("#{path}/#{safe_file_name}", "wb") do |f| i = entry.get_input_stream - + while (chunk = i.read(32_000_000)) # Read up to ~32 MB per chunk f.write chunk end diff --git a/lib/pages/games.rb b/lib/pages/games.rb index 6db2cba..087a632 100644 --- a/lib/pages/games.rb +++ b/lib/pages/games.rb @@ -205,14 +205,14 @@ def populate_game_page(game, channel) installing = Store.application_manager.task?(:installer, game.id, channel.id) unless game.id == "ren" - button "#{I18n.t(:"interface.install")}", fill: true, margin_right: 8, text_size: 32, enabled: !installing do |button| + button "#{I18n.t(:"interface.install")}", fill: true, margin_right: 8, text_size: 30, enabled: !installing do |button| button.enabled = false @import_button.enabled = false Store.application_manager.install(game.id, channel.id) end end - @import_button = button "#{I18n.t(:"interface.import")}", fill: true, margin_left: 8, text_size: 32, enabled: !installing do + @import_button = button "#{I18n.t(:"interface.import")}", fill: true, margin_left: 8, text_size: 30, enabled: !installing do Store.application_manager.import(game.id, channel.id) end end diff --git a/lib/pages/login.rb b/lib/pages/login.rb index 7c1334b..d8f0963 100644 --- a/lib/pages/login.rb +++ b/lib/pages/login.rb @@ -108,7 +108,22 @@ def populate_account_info mask_image = get_image("#{GAME_ROOT_PATH}/media/textures/circle_mask.png") composite_image = Gosu.render(256, 256) do - avatar_image.draw(0, 0, 0) + scale = 1.0 + + if avatar_image.width > avatar_image.height + # avatar image is wider than tall, use `height` for scaling to ensure we fill the canvas + scale = 256.0 / avatar_image.height + elsif avatar_image.width < avatar_image.height + # avatar image is taller than wide, use `width` for scaling to ensure we fill the canvas + scale = 256.0 / avatar_image.width + else + # avatar image is square, use width for scale to ensure we fit to the canvas + scale = 256.0 / avatar_image.width + end + + # Position image center in middle of composite + avatar_image.draw_rot(128, 128, 0, 0, 0.5, 0.5, scale, scale) + # Render mask image with mode :multiply so we get a clean circle cutout of the scaled avatar image mask_image.draw(0, 0, 1, 1, 1, 0xff_ffffff, :multiply) end