use Engine.time_scale for slowmo
This commit is contained in:
parent
8c83919525
commit
8c79049aa1
2 changed files with 9 additions and 16 deletions
12
main.gd
12
main.gd
|
|
@ -26,8 +26,7 @@ var levels: Array[PackedScene] = [
|
||||||
var time := 0:
|
var time := 0:
|
||||||
set(new_time):
|
set(new_time):
|
||||||
var tween := get_tree().create_tween()
|
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, 0.1)
|
||||||
tween.tween_property($Sun, "rotation_degrees:y", -15*new_time, anim_time)
|
|
||||||
time = new_time
|
time = new_time
|
||||||
var advancing := false
|
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_undo := audio_stream_randomizer_from_dir("res://sfx/undo")
|
||||||
@onready var sounds_redo := audio_stream_randomizer_from_dir("res://sfx/redo")
|
@onready var sounds_redo := audio_stream_randomizer_from_dir("res://sfx/redo")
|
||||||
|
|
||||||
|
@export_range(0, 1) var slowmo_speed := 0.1
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
advance_level()
|
advance_level()
|
||||||
|
|
||||||
|
|
@ -44,7 +45,9 @@ func _process(delta: float) -> void:
|
||||||
$RedoButton.disabled = not hist.has_redo()
|
$RedoButton.disabled = not hist.has_redo()
|
||||||
$RestartButton.disabled = not hist.has_undo()
|
$RestartButton.disabled = not hist.has_undo()
|
||||||
$Clock.text = "T = %d" % time
|
$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():
|
if not $TopLeft.is_on_screen() or not $BottomRight.is_on_screen():
|
||||||
camera.position.y += 10*delta
|
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))
|
stream.add_stream(-1, load(dir+"/"+file_name))
|
||||||
file_name = hit_dir.get_next()
|
file_name = hit_dir.get_next()
|
||||||
return stream
|
return stream
|
||||||
|
|
||||||
func slowmo() -> bool:
|
|
||||||
return Input.is_action_pressed("slowmo")
|
|
||||||
|
|
|
||||||
13
piece.gd
13
piece.gd
|
|
@ -16,17 +16,10 @@ enum Type {
|
||||||
}
|
}
|
||||||
|
|
||||||
## squares per second
|
## squares per second
|
||||||
@export_range(0.1, 50) var anim_speed_normal := 10.0
|
@export_range(0.0, 1, 0.01) var anim_time := 0.1
|
||||||
@export_range(0.1, 50) var anim_speed_slow := 1.0
|
|
||||||
|
|
||||||
var tweens: Array[Tween] = []
|
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)
|
#TODO: {un,}do_bump animation method (good visual clarity)
|
||||||
|
|
||||||
func pos_of_lpos(pos: Vector2i, y := 0.0) -> Vector3:
|
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)
|
return pos_of_lpos(lpos, position.y) + Vector3(0.5, 0, 0.5)
|
||||||
|
|
||||||
func tween_to_target(tween := create_tween()):
|
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)
|
tweens.push_back(tween)
|
||||||
|
|
||||||
func lpos_of_pos(pos: Vector3) -> Vector2i:
|
func lpos_of_pos(pos: Vector3) -> Vector2i:
|
||||||
|
|
@ -121,7 +114,7 @@ func do_bump(move: Vector2i, old_lvel := lvel) -> Callable:
|
||||||
return func():
|
return func():
|
||||||
lvel_displayed = old_lvel
|
lvel_displayed = old_lvel
|
||||||
var tween := create_tween()
|
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.tween_callback(func(): lvel_displayed = lvel)
|
||||||
tween_to_target(tween)
|
tween_to_target(tween)
|
||||||
tweens.push_back(tween)
|
tweens.push_back(tween)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue