From ebac7e2da232b209527b703b386e894d119c8edd Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Fri, 10 Mar 2023 15:20:31 -0500 Subject: [PATCH] make scaling.gd utilize Options.gd scaling_mode variable, fix the other scaling modes --- autoloads/options.gd | 1 + scripts/scaling.gd | 48 ++++++++++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/autoloads/options.gd b/autoloads/options.gd index d8958f3..5c2d789 100644 --- a/autoloads/options.gd +++ b/autoloads/options.gd @@ -68,6 +68,7 @@ func _set_fullscreen(value): func _set_scaling_mode(value): scaling_mode = value + get_tree().emit_signal("screen_resized") # force screen size update func _set_transition_speed(value): transition_speed = value diff --git a/scripts/scaling.gd b/scripts/scaling.gd index 6f719fc..ea1d754 100644 --- a/scripts/scaling.gd +++ b/scripts/scaling.gd @@ -4,8 +4,7 @@ var multiple = 1 onready var viewport = $ViewportContainer onready var border = $TextureRect onready var cheat_label = $ViewportContainer/Viewport/ -# SCALE MODE: INTEGER, FIT, FILL -export var scale_mode = 0 + # INTEGER SCALE SETTINGS export var overscale = 0 onready var root = get_tree().root @@ -24,23 +23,34 @@ func _ready(): func _on_screen_resized(): # VARS var window_size = OS.get_window_size() -# INTEGER SCALE - if scale_mode == 0: - # CENTER THE VIEWPORT - viewport.rect_position.x = (window_size.x / 2) - half_res.x - viewport.rect_position.y = (window_size.y / 2) - half_res.y - # DETERMINE WHAT THE HIGHEST INTEGER MULTIPLE IS - multiple = window_size / res - multiple = Vector2(floor(multiple.x),floor(multiple.y)) - # SET THE HIGHEST SCALE AXIS TO THE LOWEST TO STAY SQUARE - if multiple.x < multiple.y: multiple.y = multiple.x - if multiple.x > multiple.y: multiple.x = multiple.y - # SCALE THE VIEWPORT (IF OVERSCALE IS ON, SCALE IT BY 1 EXTRA) - viewport.rect_scale = multiple + Vector2(overscale,overscale) - #viewport.rect_scale = Vector2(2,2) -# SCALE TO FIT - if scale_mode == 1: - get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_VIEWPORT,SceneTree.STRETCH_ASPECT_KEEP,res,1) + match Options.scaling_mode: + Options.ScalingMode.INTEGER: + # CENTER THE VIEWPORT + viewport.rect_position.x = (window_size.x / 2) - half_res.x + viewport.rect_position.y = (window_size.y / 2) - half_res.y + # DETERMINE WHAT THE HIGHEST INTEGER MULTIPLE IS + multiple = (window_size / res).floor() + # SET THE HIGHEST SCALE AXIS TO THE LOWEST TO STAY SQUARE + if multiple.x < multiple.y: multiple.y = multiple.x + if multiple.x > multiple.y: multiple.x = multiple.y + # SCALE THE VIEWPORT (IF OVERSCALE IS ON, SCALE IT BY 1 EXTRA) + viewport.rect_scale = multiple + Vector2(overscale,overscale) + #viewport.rect_scale = Vector2(2,2) + Options.ScalingMode.ASPECT: + # CENTER THE VIEWPORT + viewport.rect_position.x = (window_size.x / 2) - half_res.x + viewport.rect_position.y = (window_size.y / 2) - half_res.y + # DETERMINE WHAT THE HIGHEST INTEGER MULTIPLE IS + multiple = window_size / res + # SET THE HIGHEST SCALE AXIS TO THE LOWEST TO STAY SQUARE + if multiple.x < multiple.y: multiple.y = multiple.x + if multiple.x > multiple.y: multiple.x = multiple.y + # SCALE THE VIEWPORT + viewport.rect_scale = multiple + Options.ScalingMode.STRETCH: + viewport.rect_position.x = (window_size.x / 2) - half_res.x + viewport.rect_position.y = (window_size.y / 2) - half_res.y + viewport.rect_scale = window_size / res # BORDER border.rect_size = window_size