From 6b83672611a4da4e879e16192b30df7640eb6e6f Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Wed, 26 Mar 2025 11:10:45 +0200 Subject: [PATCH] Added time and piece count to main display --- scene/main.tscn | 50 +++++++++++++++++++++++++++++++++++++++++++++---- script/board.gd | 12 ++++++++++-- script/main.gd | 16 ++++++++++++++++ 3 files changed, 72 insertions(+), 6 deletions(-) diff --git a/scene/main.tscn b/scene/main.tscn index af5356c..392b873 100644 --- a/scene/main.tscn +++ b/scene/main.tscn @@ -29,11 +29,11 @@ text = "0.0.0" 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 @@ -41,10 +41,52 @@ theme_override_constants/margin_top = 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"] diff --git a/script/board.gd b/script/board.gd index f405791..9f70dfa 100644 --- a/script/board.gd +++ b/script/board.gd @@ -1,6 +1,10 @@ extends Control class_name Board + +signal added_piece + + @export var block_size: int = 20 @export var piece_catalogue: Array[PackedScene] = [] @@ -10,7 +14,7 @@ var _player_piece: Piece = null 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") @@ -46,12 +50,16 @@ func _add_player_piece(): 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)) diff --git a/script/main.gd b/script/main.gd index 4fe5041..1821739 100644 --- a/script/main.gd +++ b/script/main.gd @@ -5,9 +5,15 @@ extends Node @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: @@ -30,3 +36,13 @@ func _set_screen_size() -> 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) -- 2.47.2