From c33ce97e5bdcf33bdfec91f58afc055d60c35b95 Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Thu, 3 Apr 2025 18:58:28 +0300 Subject: [PATCH] Pressing down now moves piece to bottom --- script/board.gd | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/script/board.gd b/script/board.gd index 2e90425..4e7e802 100644 --- a/script/board.gd +++ b/script/board.gd @@ -44,8 +44,11 @@ func _input(event: InputEvent) -> void: _player_piece.rotate_left() print(_player_piece.to_string()) - if event.is_action("player_down"): - _move(Vector2i(0, 1)) + if event.is_action_pressed("player_down"): + # move piece to bottom + var b := true + while b: + b = _move(Vector2i(0, 1)) func _add_player_piece(): @@ -64,7 +67,8 @@ func _add_player_piece(): added_piece.emit() -func _move(v: Vector2i): +# returns TRUE if piece can move more, FALSE if end state +func _move(v: Vector2i) -> bool: assert(_player_piece != null, "Player piece must not be null") var new_player_position: Vector2i = _player_position + v @@ -74,13 +78,13 @@ func _move(v: Vector2i): pos += new_player_position if pos.x < 0 or pos.x >= _grid_final_x_row: # ignore input that moves beyond lateral boundaries - return + return false if _is_grid_position_taken(pos): # if movement is vertical and blocked, then we're done if v.y != 0: end_round.emit() - return + return false # update player position _player_position = new_player_position @@ -92,16 +96,20 @@ func _move(v: Vector2i): pos += _player_position if (pos.y >= _grid_final_y_row - 1): end_round.emit() + return false + + return true func _on_end_round(): + # disconnect player controls from current piece + var piece: Piece = _player_piece + _player_piece = null + # fill in collision grid with piece cells - for pos: Vector2i in _player_piece.get_cell_grid(): + for pos: Vector2i in piece.get_cell_grid(): pos += _player_position _set_grid_position(pos, true) - - # disconnect player controls from current piece - _player_piece = null # now start a new round _on_turn_timer_timeout() -- 2.47.2