layout_mode = 2
alignment = 1
-[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
+[node name="left" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
-[node name="MarginContainer3" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
+[node name="mid" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_vertical = 4
theme_override_constants/margin_left = 0
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 0
-[node name="Board" parent="MarginContainer/HBoxContainer/MarginContainer3" instance=ExtResource("2_v0l8b")]
+[node name="Board" parent="MarginContainer/HBoxContainer/mid" instance=ExtResource("2_v0l8b")]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
-[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
+[node name="right" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
+
+[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer/right"]
+layout_mode = 2
+theme_override_constants/margin_left = 30
+theme_override_constants/margin_top = 50
+theme_override_constants/margin_right = 30
+theme_override_constants/margin_bottom = 50
+
+[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer/right/MarginContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="VSplitContainer2" type="HSplitContainer" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer"]
+layout_mode = 2
+split_offset = 150
+dragging_enabled = false
+
+[node name="Label" type="Label" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer/VSplitContainer2"]
+layout_mode = 2
+text = "Time passed:"
+
+[node name="label_time_passed" type="Label" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer/VSplitContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "00:00:00"
+
+[node name="VSplitContainer" type="HSplitContainer" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer"]
+layout_mode = 2
+split_offset = 150
+dragging_enabled = false
+
+[node name="Label" type="Label" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer/VSplitContainer"]
+layout_mode = 2
+text = "Number of pieces:"
+
+[node name="label_num_pieces" type="Label" parent="MarginContainer/HBoxContainer/right/MarginContainer/VBoxContainer/VSplitContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "0"
+
+[connection signal="added_piece" from="MarginContainer/HBoxContainer/mid/Board" to="." method="_on_board_added_piece"]
extends Control
class_name Board
+
+signal added_piece
+
+
@export var block_size: int = 20
@export var piece_catalogue: Array[PackedScene] = []
var _grid_final_y_row: int = 0
var _grid_final_x_row: int = 0
-var _num_pieces: int = 0
+var num_pieces: int = 0
func _ready() -> void:
assert(piece_catalogue.size() >= 1, "Expected at least one piece in catalogue")
var piece: Piece = scene.instantiate()
piece.block_size = block_size
+ # TODO: start piece at center of board
_player_position = Vector2i(5, 0)
piece.position = _player_position * block_size
_player_piece = piece
+ # add piece to scene tree and emit signal
add_child(piece)
- _num_pieces += 1
+ num_pieces += 1
+ added_piece.emit()
+
print(str(piece))
@export var screen_size_fractional: float = 0.5
+var _started: bool = true
+var _start_time: int = 0
+var _elapsed_time: int = 0
+
+
func _ready() -> void:
_set_project_version()
_set_screen_size()
+ _start_time = Time.get_ticks_msec()
func _set_project_version() -> void:
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
get_tree().quit()
+
+
+func _process(delta: float) -> void:
+ if _started:
+ _elapsed_time = Time.get_ticks_msec() - _start_time
+ %label_time_passed.text = "%04d" % [_elapsed_time]
+
+
+func _on_board_added_piece() -> void:
+ %label_num_pieces.text = str(%Board.num_pieces)