diff --git a/src/Singletons/signal_bus.gd b/src/Singletons/signal_bus.gd index b566acd..5cca1e7 100644 --- a/src/Singletons/signal_bus.gd +++ b/src/Singletons/signal_bus.gd @@ -1,15 +1,16 @@ extends Node signal on_window_closed(window: Window) +signal on_new_container_requested signal settings_window_closed signal edit_window_closed -signal edit_window_requested(window: Window, text: String) -signal edit_window_text_saved(window: Window, text: String) +signal edit_window_requested(window: Window, text: String, edit_id: int) +signal edit_window_text_saved(window: Window, text: String, edit_id: int) signal main_panel_color_changed(color: Color) signal main_window_color_changed(color: Color) signal side_panel_color_changed(color: Color) signal on_panel_created() -signal on_panel_requested(index: int) \ No newline at end of file +signal on_panel_requested(index: int) diff --git a/src/UI/buttons/container_selection_button.gd b/src/UI/buttons/container_selection_button.gd index e42a354..97fc15f 100644 --- a/src/UI/buttons/container_selection_button.gd +++ b/src/UI/buttons/container_selection_button.gd @@ -10,19 +10,17 @@ var instantiated_menu # Called when the node enters the scene tree for the first time. func _ready() -> void: - SignalBus.edit_window_text_saved.connect(_on_edit_window_text_saved) SignalBus.on_window_closed.connect(_on_window_closed) - func _enter_tree() -> void: - var text: String = "Collection %d" % container_box.container_id - button_index = container_box.container_id + var text: String = "Collection %d" % button_index button.text = text + ## Request to change to a panel with the ID - 1 of the button. [br] ## Buttons are 1-indexed, while [member UIManager.panel_array] is 0-index func _on_button_pressed() -> void: - SignalBus.on_panel_requested.emit(button_index-1) + SignalBus.on_panel_requested.emit(button_index) func _input(event: InputEvent) -> void: @@ -43,12 +41,8 @@ func _on_popup_menu_index_pressed(index: int) -> void: if index == 0: instantiated_menu = edit_collection_name_window.instantiate() add_child(instantiated_menu) - SignalBus.edit_window_requested.emit(instantiated_menu, button.text) + SignalBus.edit_window_requested.emit(instantiated_menu, button.text, button_index) -func _on_edit_window_text_saved(window: Window, text: String) -> void: - if not is_instance_of(window, EditCollectionNameWindow): - return - button.text = text func _on_window_closed(window: Window) -> void: if not is_instance_of(window, EditCollectionNameWindow): diff --git a/src/UI/container_add_button.gd b/src/UI/container_add_button.gd index 2314a6e..a94d130 100644 --- a/src/UI/container_add_button.gd +++ b/src/UI/container_add_button.gd @@ -7,10 +7,6 @@ func _ready() -> void: pass func _on_pressed() -> void: - container_box.container_id = container_box.container_id +1 - var new_button: ContainerSelectionButton = container_button_scene.instantiate() - new_button.container_box = container_box - container_box.add_child(new_button) - container_box.move_child(new_button, -2) + SignalBus.on_new_container_requested.emit() SignalBus.on_panel_created.emit() \ No newline at end of file diff --git a/src/UI/done_box.gd b/src/UI/done_box.gd index 54744c3..37feb29 100644 --- a/src/UI/done_box.gd +++ b/src/UI/done_box.gd @@ -6,7 +6,7 @@ class_name DoneBox extends HBoxContainer @export var entry_text_box: RichTextLabel var instantiated_menu - +var id: int # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -32,9 +32,10 @@ func _on_index_pressed(index:int) -> void: queue_free() -func on_edit_window_text_save(window: Window, text: String) -> void: +func on_edit_window_text_save(window: Window, text: String, edit_id: int) -> void: if not is_instance_of(window, Editmenu): return + id = edit_id entry_text_box.text = text func on_edit_window_closed() -> void: diff --git a/src/UI/main.tscn b/src/UI/main.tscn index f79753e..1acbc77 100644 --- a/src/UI/main.tscn +++ b/src/UI/main.tscn @@ -134,12 +134,14 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="UIManager" type="HBoxContainer" parent="Panel/VBoxContainer" node_paths=PackedStringArray("current_active_panel", "container_collection_box")] +unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 script = ExtResource("5_05tj4") current_active_panel = NodePath("MainPanel") -container_collection_box = NodePath("Panel/MarginContainer/ScrollContainer/ContainerBox") main_panel_scene = ExtResource("9_cqoei") +container_collection_box = NodePath("Panel/MarginContainer/ScrollContainer/ContainerBox") +container_button_scene = ExtResource("5_14o3q") [node name="Panel" type="Panel" parent="Panel/VBoxContainer/UIManager"] custom_minimum_size = Vector2(200, 0) diff --git a/src/UI/main_panel.gd b/src/UI/main_panel.gd index c945a2e..40ffa2b 100644 --- a/src/UI/main_panel.gd +++ b/src/UI/main_panel.gd @@ -4,7 +4,7 @@ class_name MainPanel extends ScrollContainer @export var style_box: StyleBoxFlat @export var panel_main_color: Color -var id: int = 1 +var id: int = 0 diff --git a/src/UI/ui_manager.gd b/src/UI/ui_manager.gd index f41d426..c833b7c 100644 --- a/src/UI/ui_manager.gd +++ b/src/UI/ui_manager.gd @@ -1,18 +1,27 @@ class_name UIManager extends HBoxContainer +@export_category("Main Panel") @export var current_active_panel: MainPanel @export var panel_array: Array[MainPanel] = [] -@export var container_collection_box: ContainerBox - @export var main_panel_scene: PackedScene +@export_category("Container Selection") +@export var container_collection_box: ContainerBox +@export var container_selection_buttons: Array[ContainerSelectionButton] = [] +@export var container_button_scene: PackedScene + +var instantiated_window: Window + # Called when the node enters the scene tree for the first time. func _ready() -> void: - current_active_panel.id = 1 + current_active_panel.id = 0 panel_array.append(current_active_panel) SignalBus.on_panel_created.connect(_on_panel_created) SignalBus.on_panel_requested.connect(_on_panel_requested) + SignalBus.on_new_container_requested.connect(_on_new_container_requested) + + SignalBus.edit_window_text_saved.connect(_on_edit_window_text_saved) # Called every frame. 'delta' is the elapsed time since the previous frame. @@ -22,7 +31,7 @@ func _process(delta: float) -> void: func _on_panel_created() -> void: var new_panel: MainPanel = main_panel_scene.instantiate() - new_panel.id = panel_array.size() + 1 + new_panel.id = panel_array.size() panel_array.append(new_panel) func _on_panel_requested(index: int) -> void: @@ -38,3 +47,16 @@ func _on_panel_requested(index: int) -> void: current_active_panel.show() +func _on_new_container_requested() -> void: + var new_button: ContainerSelectionButton = container_button_scene.instantiate() + new_button.container_box = container_collection_box + container_selection_buttons.append(new_button) + new_button.button_index = container_selection_buttons.find(new_button) + container_collection_box.add_child(new_button) + container_collection_box.move_child(new_button, -2) + +func _on_edit_window_text_saved(window: Window, text: String, edit_id: int) -> void: + if not is_instance_of(window, EditCollectionNameWindow): + return + container_selection_buttons[edit_id].button.text = text + diff --git a/src/UI/windows/edit_collection_name_window.gd b/src/UI/windows/edit_collection_name_window.gd index e9b96e4..4a227d4 100644 --- a/src/UI/windows/edit_collection_name_window.gd +++ b/src/UI/windows/edit_collection_name_window.gd @@ -2,6 +2,8 @@ class_name EditCollectionNameWindow extends Window @export var text_edit: LineEdit +var id: int + # Called when the node enters the scene tree for the first time. func _ready() -> void: SignalBus.edit_window_requested.connect(on_edit_window_requested) @@ -18,14 +20,15 @@ func cancel() -> void: func save() -> void: - SignalBus.edit_window_text_saved.emit(self, text_edit.text) + SignalBus.edit_window_text_saved.emit(self, text_edit.text, id) SignalBus.on_window_closed.emit(self) -func on_edit_window_requested(window: Window, text: String) -> void: +func on_edit_window_requested(window: Window, text: String, edit_id: int) -> void: if not is_instance_of(window, EditCollectionNameWindow): return text_edit.text = text + id = edit_id func _on_cancel_button_pressed() -> void: diff --git a/src/UI/windows/editmenu.gd b/src/UI/windows/editmenu.gd index 3715441..e06185f 100644 --- a/src/UI/windows/editmenu.gd +++ b/src/UI/windows/editmenu.gd @@ -2,6 +2,7 @@ class_name Editmenu extends Window @export var text_edit: TextEdit +var id: int # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -16,9 +17,10 @@ func _process(delta: float) -> void: func _on_close_requested() -> void: cancel() -func on_edit_window_requested(window: Window, text: String) -> void: +func on_edit_window_requested(window: Window, text: String, edit_id: int) -> void: if not is_instance_of(window, Editmenu): return + id = edit_id text_edit.text = text func _on_cancel_button_button_down() -> void: @@ -38,7 +40,7 @@ func cancel() -> void: func save() -> void: - SignalBus.edit_window_text_saved.emit(text_edit.text) + SignalBus.edit_window_text_saved.emit(self, text_edit.text, id) SignalBus.edit_window_closed.emit()