From 27f919e49596748973e9d7b5e5dfd3a699a9c579 Mon Sep 17 00:00:00 2001 From: Hermanest Date: Thu, 19 Dec 2024 18:35:11 +0300 Subject: [PATCH] Added 'Clear' button to the tree editor. --- Source/3_AssetBundle/Christmas/ChristmasTree.cs | 13 ++++++++----- .../Christmas/TreeEditor/ChristmasTreeEditor.cs | 1 + .../TreeEditor/ChristmasTreeEditorControlPanel.cs | 12 +++++++++++- .../Christmas/ChristmasTreeEditorControlPanel.bsml | 11 ++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Source/3_AssetBundle/Christmas/ChristmasTree.cs b/Source/3_AssetBundle/Christmas/ChristmasTree.cs index d3fe976e..d81e0f05 100644 --- a/Source/3_AssetBundle/Christmas/ChristmasTree.cs +++ b/Source/3_AssetBundle/Christmas/ChristmasTree.cs @@ -33,7 +33,7 @@ public void SetOrnamentsMovement(bool value) { ornament.CanGrab = value; } } - + public void SetMoverFull(bool value) { _moverFull = value; _mover.SetEnabled(_moverFull, _moverRestricted); @@ -127,15 +127,18 @@ internal void RemoveOrnament(ChristmasTreeOrnament ornament) { _ornaments.Remove(ornament); } - private async Task LoadOrnaments(ChristmasTreeSettings settings) { - var size = settings.ornaments.Length; - var tasks = new Task[size]; - + internal void ClearOrnaments() { foreach (var ornament in _ornaments) { ornament.Deinit(); OrnamentsPool.Despawn(ornament); } _ornaments.Clear(); + } + + private async Task LoadOrnaments(ChristmasTreeSettings settings) { + var size = settings.ornaments.Length; + var tasks = new Task[size]; + ClearOrnaments(); for (var i = 0; i < size; i++) { tasks[i] = OrnamentsPool.PreloadAsync(settings.ornaments[i].bundleId); diff --git a/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditor.cs b/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditor.cs index 157a5ee5..19c6fa38 100644 --- a/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditor.cs +++ b/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditor.cs @@ -27,6 +27,7 @@ public void Setup(ChristmasTree tree) { _tree = tree; _ornamentStore.Setup(tree.OrnamentsPool); _bonusOrnamentStore.Setup(tree.OrnamentsPool); + _editorPanel.Setup(tree); } public void Present() { diff --git a/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditorControlPanel.cs b/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditorControlPanel.cs index 2ce294ee..68ced4ff 100644 --- a/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditorControlPanel.cs +++ b/Source/8_UI/Christmas/TreeEditor/ChristmasTreeEditorControlPanel.cs @@ -29,7 +29,12 @@ internal class ChristmasTreeEditorControlPanel : ReeUIComponentV2 { #region Setup private StaticScreen _screen = null!; - + private ChristmasTree _tree = null!; + + public void Setup(ChristmasTree tree) { + _tree = tree; + } + public void SetLoading(bool loading) { _bgGroup.alpha = loading ? 0.3f : 1f; _bgGroup.interactable = !loading; @@ -56,6 +61,11 @@ protected override void OnInitialize() { #region Callbacks + [UIAction("clear-click"), UsedImplicitly] + private void HandleClearClicked() { + _tree.ClearOrnaments(); + } + [UIAction("cancel-click"), UsedImplicitly] private void HandleCancelClicked() { ChristmasTreeRequest.SendRequest(); diff --git a/Source/9_Resources/BSML/Christmas/ChristmasTreeEditorControlPanel.bsml b/Source/9_Resources/BSML/Christmas/ChristmasTreeEditorControlPanel.bsml index c613cde2..64455f79 100644 --- a/Source/9_Resources/BSML/Christmas/ChristmasTreeEditorControlPanel.bsml +++ b/Source/9_Resources/BSML/Christmas/ChristmasTreeEditorControlPanel.bsml @@ -1,12 +1,13 @@ - +