From 337edaab89f707658130d1a332cc169180fe9f67 Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Mon, 7 Apr 2025 21:04:12 +0300 Subject: [PATCH] Broken: doesn't rotate correctly on the right side --- script/board.gd | 22 ++++++++++++++++++++-- script/piece.gd | 11 ++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/script/board.gd b/script/board.gd index 4e7e802..bc05616 100644 --- a/script/board.gd +++ b/script/board.gd @@ -41,8 +41,26 @@ func _input(event: InputEvent) -> void: if event.is_action_pressed("player_up"): if _player_piece: - _player_piece.rotate_left() - print(_player_piece.to_string()) + _player_piece.rotate_cells_left() + + # if player piece has cells off to the right or left of the board, + # then shift it back onto the board + var leftmost: int = 0 + var rightmost: int = 0 + for pos: Vector2i in _player_piece.get_cell_grid(): + pos += _player_position # remember, pos is relative! + if pos.x < leftmost: + leftmost = pos.x + elif pos.x > _grid_final_x_row - 1 and pos.x > rightmost: + rightmost = pos.x - _grid_final_x_row - 1 + + + print("l,r: %d, %d" % [leftmost, rightmost]) + + if leftmost < 0: + _move(-Vector2i(leftmost, 0)) + elif rightmost > 0: + _move(-Vector2i(rightmost, 0)) if event.is_action_pressed("player_down"): # move piece to bottom diff --git a/script/piece.gd b/script/piece.gd index fb82e44..5158241 100644 --- a/script/piece.gd +++ b/script/piece.gd @@ -52,8 +52,17 @@ func get_cell_grid() -> Array: return _cell_grid.duplicate() -func rotate_left(): +func rotate_cells_right(): + _rotation_index -= 1 + rotate_cells() + + +func rotate_cells_left(): _rotation_index += 1 + rotate_cells() + + +func rotate_cells(): var new_cell_grid = get_cell_grid() for c in cells: -- 2.47.2