Files
fracturepoint/Assets/Scripts/CommonScripts/ChangeMenuInitiator.cs
2026-01-19 10:41:03 -07:00

53 lines
1.7 KiB
C#

using Godot;
using System;
public partial class ChangeMenuInitiator : Node
{
float TransitionDelay = 0; // seconds
Node cameFrom;
public void ChangeMenu(string type, string destination, Node cameFromInput)
{
cameFromInput = cameFrom;
if (type == "SLOW")
{
// Load the menu change manager
var scene = GD.Load<PackedScene>("res://Assets/Scenes/MenusAndLevels/MenuChangeManager.tscn");
var inst = (Node2D)scene.Instantiate();
GetTree().Root.GetNode("Camera").AddChild(inst);
inst.Position = GetTree().Root.GetNode("Camera").GetNode<Node2D>("Camera2D").Position;
// Pass args to menu change manager
inst.GetNode<MenuChangeManager>("MenuChangeManager").TargetMenu = destination;
inst.GetNode<MenuChangeManager>("MenuChangeManager").TransitionDelay = TransitionDelay;
// Wait for intro animation to finish before freeing the scene
inst.GetNode<AnimationPlayer>("AnimationPlayer").AnimationFinished += DeleteMenu;
}
if (type == "FAST")
{
var scene = GD.Load<PackedScene>($"res://Assets/Scenes/MenusAndLevels/{destination}.tscn");
var inst = (Node2D)scene.Instantiate();
GetTree().Root.AddChild(inst);
//reset camera
GetTree().Root.GetNode("Camera").GetNode<CameraMovement>("Camera2D").TeleportCamera(Vector2.Zero);
GetTree().Root.GetNode("Camera").GetNode<CameraMovement>("Camera2D").FixedPosition = GetTree().Root.GetNode("Camera").GetNode<Node2D>("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)
cameFrom.QueueFree();
}
}
}