From b0826a934db8eaea2d77d15190ca50ebdc26f963 Mon Sep 17 00:00:00 2001 From: mehbark Date: Mon, 5 May 2025 23:12:38 -0400 Subject: [PATCH] lvel animation --- piece.gd | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/piece.gd b/piece.gd index e2b5a4b..82e1df4 100644 --- a/piece.gd +++ b/piece.gd @@ -47,6 +47,7 @@ func lpos_of_pos(pos: Vector3) -> Vector2i: ## logical velocity @export var lvel := Vector2i.ZERO +var lvel_displayed := lvel @export var type: Piece.Type @@ -60,7 +61,7 @@ func do_step(board: Board): # ball being collided *with* gets the remainder of the momentum # EMERGENT COMPLEXITY!??!? if board.solid_at(new_pos): - do_bump(move).call() + do_bump(move, lvel).call() var ball_here := board.type_at(new_pos, Piece.Type.Ball) if ball_here: var rem := lvel % 2 @@ -73,6 +74,7 @@ func do_step(board: Board): var on_ice := !!board.type_at(lpos, Piece.Type.FloorIce) if not on_ice: lvel -= move + lvel_displayed = lvel tween_to_target() func undo_step() -> Callable: @@ -81,6 +83,7 @@ func undo_step() -> Callable: return func(): lpos = old_pos lvel = old_vel + lvel_displayed = lvel tween_to_target() func do_move(move: Vector2i) -> Callable: @@ -103,18 +106,22 @@ func undo_move() -> Callable: func do_push(move: Vector2i) -> Callable: return func(): lvel += move + lvel_displayed = lvel func undo_push() -> Callable: var old_vel := lvel return func(): lvel = old_vel + lvel_displayed = lvel # no logical effect, purely for aesthetics # (and communicating !!!! player yes) -func do_bump(move: Vector2i) -> Callable: +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()) + tween.tween_callback(func(): lvel_displayed = lvel) tween_to_target(tween) tweens.push_back(tween) @@ -152,4 +159,4 @@ func format_vel(vel: Vector2) -> String: return "%d,%d" % [vel.x,vel.y] func _process(_delta: float) -> void: - speedometer.text = format_vel(lvel) + speedometer.text = format_vel(lvel_displayed)