From b040464597eae947223496c720a2e558409a7432 Mon Sep 17 00:00:00 2001
From: Bronuh <bronyx@yandex.ru>
Date: Fri, 5 Apr 2024 22:01:22 +0300
Subject: [PATCH] Fix attempt to clear disposed UI - upgrade version

---
 VectorSurvivors.csproj                                 | 6 +++---
 export_presets.cfg                                     | 4 ++--
 src/VectorSurvivors/Scenes/Main/UiContainer.cs         | 2 +-
 src/VectorSurvivors/Scenes/States/Gameplay/World.cs    | 1 +
 src/VectorSurvivors/Scenes/States/Gameplay/WorldApi.cs | 6 +-----
 src/VectorSurvivors/Scenes/States/MainMenu/MainMenu.cs | 7 ++++++-
 6 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/VectorSurvivors.csproj b/VectorSurvivors.csproj
index 1cd5c26..23c33c7 100644
--- a/VectorSurvivors.csproj
+++ b/VectorSurvivors.csproj
@@ -4,14 +4,14 @@
     <EnableDynamicLoading>true</EnableDynamicLoading>
     <RootNamespace/>
     <PackageId>VectorSurvivors</PackageId>
-    <Version>0.2.0.1</Version>
+    <Version>0.2.1.0</Version>
     <Title>VectorSurvivors</Title>
     <Authors>Bronuh</Authors>
     <Description>Vampire-like игра про геометрические фигуры</Description>
     <AssemblyName>VectorSurvivors</AssemblyName>
     <Product>VectorSurvivors</Product>
-    <AssemblyVersion>0.2.0.1</AssemblyVersion>
-    <FileVersion>0.2.0.1</FileVersion>
+    <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <FileVersion>0.2.1.0</FileVersion>
     <NoWarn>1701;1702;CS1591</NoWarn>
   </PropertyGroup>
   
diff --git a/export_presets.cfg b/export_presets.cfg
index c726e50..9f784bf 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -35,8 +35,8 @@ application/modify_resources=true
 application/icon=""
 application/console_wrapper_icon=""
 application/icon_interpolation=4
-application/file_version="0.2.0.1"
-application/product_version="0.2.0.1"
+application/file_version="0.2.1.0"
+application/product_version="0.2.1.0"
 application/company_name="Bronuh"
 application/product_name="Vector Survivors"
 application/file_description=""
diff --git a/src/VectorSurvivors/Scenes/Main/UiContainer.cs b/src/VectorSurvivors/Scenes/Main/UiContainer.cs
index 1128a95..6da7b35 100644
--- a/src/VectorSurvivors/Scenes/Main/UiContainer.cs
+++ b/src/VectorSurvivors/Scenes/Main/UiContainer.cs
@@ -46,7 +46,7 @@ public partial class UiContainer : Node
     {
 	    foreach (IUiScene uiScene in StateStack)
 	    {
-		    if (uiScene is Node node)
+		    if (uiScene is Node node && node.IsValid())
 		    {
 			    node.QueueFree();
 		    }
diff --git a/src/VectorSurvivors/Scenes/States/Gameplay/World.cs b/src/VectorSurvivors/Scenes/States/Gameplay/World.cs
index f161a00..30e1f6d 100644
--- a/src/VectorSurvivors/Scenes/States/Gameplay/World.cs
+++ b/src/VectorSurvivors/Scenes/States/Gameplay/World.cs
@@ -26,6 +26,7 @@ public partial class World : Node2D
 	public override void _Ready()
 	{
 		NotNullChecker.CheckProperties(this);
+		Instance = this;
 		PlayMusic();
 		_tokens.Add(EventBus.Subscribe<LocalPlayerSpawnedEvent>(OnLocalPlayerSpawned));
 		_tokens.Add(EventBus.Subscribe<CameraDroppedEvent>(OnCameraDropped));
diff --git a/src/VectorSurvivors/Scenes/States/Gameplay/WorldApi.cs b/src/VectorSurvivors/Scenes/States/Gameplay/WorldApi.cs
index 8cb0047..0c80a1a 100644
--- a/src/VectorSurvivors/Scenes/States/Gameplay/WorldApi.cs
+++ b/src/VectorSurvivors/Scenes/States/Gameplay/WorldApi.cs
@@ -24,11 +24,7 @@ public partial class World
     public static double Difficulty => (Instance.BaseDifficulty + GameTime / 60 * Instance.DifficultyPerMinute) * Instance.DifficultyFactor;
     public static int MaxEnemies => Mathf.CeilToInt(Instance.BaseEnemyCount + Instance.EnemyPerDifficulty * Difficulty);
     
-    public World()
-    {
-        if(!Instance.IsValid())
-            Instance = this;
-    }
+    
 
     public static void AddEntity(Node2D node)
     {
diff --git a/src/VectorSurvivors/Scenes/States/MainMenu/MainMenu.cs b/src/VectorSurvivors/Scenes/States/MainMenu/MainMenu.cs
index 42cede4..26a53bd 100644
--- a/src/VectorSurvivors/Scenes/States/MainMenu/MainMenu.cs
+++ b/src/VectorSurvivors/Scenes/States/MainMenu/MainMenu.cs
@@ -37,7 +37,12 @@ public partial class MainMenu : AbstractStorage, IUiScene
 			if (tween.IsValid()) tween.Kill();
 		};
 
-		Audio2D.PlayMusic(Music.MainBgm);
+		PlayMusic();
+	}
+
+	private void PlayMusic()
+	{
+		Audio2D.PlayMusic(Music.MainBgm, 0.5f).Finished += PlayMusic;
 	}
 
 
-- 
GitLab