using Godot; using System; public partial class ChangeMenuInitiator : Node2D { public void ChangeMenu(string type, string destination) { if (type == "SLOW") { // Load the menu change manager var scene = GD.Load("res://Assets/Scenes/MenusAndLevels/MenuChangeManager.tscn"); var inst = (Node2D)scene.Instantiate(); GetTree().Root.GetNode("Camera").AddChild(inst); inst.Position = GetTree().Root.GetNode("Camera").GetNode("Camera2D").Position; // Pass args to menu change manager inst.GetNode("MenuChangeManager").TargetMenu = destination; inst.GetNode("MenuChangeManager").TransitionDelay = TransitionDelay; // Wait for intro animation to finish before freeing the scene inst.GetNode("AnimationPlayer").AnimationFinished += DeleteMenu; } if (type == "FAST") { var scene = GD.Load($"res://Assets/Scenes/MenusAndLevels/{destination}.tscn"); var inst = (Node2D)scene.Instantiate(); GetTree().Root.AddChild(inst); //reset camera GetTree().Root.GetNode("Camera").GetNode("Camera2D").TeleportCamera(Vector2.Zero); GetTree().Root.GetNode("Camera").GetNode("Camera2D").FixedPosition = GetTree().Root.GetNode("Camera").GetNode("Camera2D").Position; GetTree().Root.GetNode("Camera").SetMeta("CameraMode", "FIXED"); DeleteMenu("LoadIn"); } } void DeleteMenu(StringName arg) { if (arg == "LoadIn") { // Delete current scene (MAKE SURE THE PARENT OF THE PARENT OF THIS SCRIPT IS THE SCENE YOU CAME FROM) GetParent().GetParent().QueueFree(); } } }