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 @@ class W3DHub
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 @@ class W3DHub
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 @@ class W3DHub
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 @@ class W3DHub
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