From 8c79049aa175328748f93efc14280283570ff13f Mon Sep 17 00:00:00 2001 From: mehbark Date: Tue, 6 May 2025 22:33:56 -0400 Subject: [PATCH] use `Engine.time_scale` for slowmo --- main.gd | 12 ++++++------ piece.gd | 13 +++---------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/main.gd b/main.gd index 3c3b833..8774695 100644 --- a/main.gd +++ b/main.gd @@ -26,8 +26,7 @@ var levels: Array[PackedScene] = [ var time := 0: set(new_time): var tween := get_tree().create_tween() - var anim_time = 1.0 if slowmo() else 0.1 - tween.tween_property($Sun, "rotation_degrees:y", -15*new_time, anim_time) + tween.tween_property($Sun, "rotation_degrees:y", -15*new_time, 0.1) time = new_time var advancing := false @@ -36,6 +35,8 @@ var advancing := false @onready var sounds_undo := audio_stream_randomizer_from_dir("res://sfx/undo") @onready var sounds_redo := audio_stream_randomizer_from_dir("res://sfx/redo") +@export_range(0, 1) var slowmo_speed := 0.1 + func _ready() -> void: advance_level() @@ -44,7 +45,9 @@ func _process(delta: float) -> void: $RedoButton.disabled = not hist.has_redo() $RestartButton.disabled = not hist.has_undo() $Clock.text = "T = %d" % time - $SlowmoIndicator.text = "slowmo" if slowmo() else "" + var slowmo := Input.is_action_pressed("slowmo"); + $SlowmoIndicator.text = "slowmo" if slowmo else "" + Engine.time_scale = slowmo_speed if slowmo else 1.0 if not $TopLeft.is_on_screen() or not $BottomRight.is_on_screen(): camera.position.y += 10*delta @@ -174,6 +177,3 @@ func audio_stream_randomizer_from_dir(dir: String) -> AudioStreamRandomizer: stream.add_stream(-1, load(dir+"/"+file_name)) file_name = hit_dir.get_next() return stream - -func slowmo() -> bool: - return Input.is_action_pressed("slowmo") diff --git a/piece.gd b/piece.gd index 7ea521b..f932492 100644 --- a/piece.gd +++ b/piece.gd @@ -16,17 +16,10 @@ enum Type { } ## squares per second -@export_range(0.1, 50) var anim_speed_normal := 10.0 -@export_range(0.1, 50) var anim_speed_slow := 1.0 +@export_range(0.0, 1, 0.01) var anim_time := 0.1 var tweens: Array[Tween] = [] -func anim_speed() -> float: - return anim_speed_slow if Input.is_action_pressed("slowmo") else anim_speed_normal - -func anim_time() -> float: - return 1/anim_speed() - #TODO: {un,}do_bump animation method (good visual clarity) func pos_of_lpos(pos: Vector2i, y := 0.0) -> Vector3: @@ -36,7 +29,7 @@ func target_pos() -> Vector3: return pos_of_lpos(lpos, position.y) + Vector3(0.5, 0, 0.5) func tween_to_target(tween := create_tween()): - tween.tween_property(self, "position", target_pos(), anim_time()) + tween.tween_property(self, "position", target_pos(), anim_time) tweens.push_back(tween) func lpos_of_pos(pos: Vector3) -> Vector2i: @@ -121,7 +114,7 @@ func do_bump(move: Vector2i, old_lvel := lvel) -> Callable: return func(): lvel_displayed = old_lvel var tween := create_tween() - tween.tween_property(self, "position", target_pos() + pos_of_lpos(move)/2, anim_time()/2) + tween.tween_property(self, "position", target_pos() + pos_of_lpos(move)/2, anim_time/2) tween.tween_callback(func(): lvel_displayed = lvel) tween_to_target(tween) tweens.push_back(tween)