/// <summary> /// Initialize the State Machine node reference in Utils (will be used by the States) /// </summary> private void _Init_StateMachine(string pGroupName) { Node node = Nucleus_Utils.FindNode_BasedOnGroup(this, pGroupName); if (node != null) { Nucleus_Utils.StateMachine_Template = (StateMachine_Template)node; RootNode = (KinematicBody2D)Owner; base.Initialize(InitialState); } else { //GD.Print("ERROR (in States.cs) - State Machine node is null (Class : " + this.GetType() + ")"); Nucleus_Utils.Error($"State Machine node is null (Groupname : {pGroupName}", new NullReferenceException(), GetType().Name, MethodBase.GetCurrentMethod().Name); GetTree().Quit(); // Quit game } }
//*-------------------------------------------------------------------------*// #region USER METHODS /// <summary> /// Load an existing scene in the Spawn_Factory (can be used to spawn random instance of different scene) /// </summary> /// <param name="pPath">the path to the scene (eg : ""res://src/Enemy.tscn")</param> /// <returns>True if no errors occurs</returns> public bool Load_NewScene(string pPath) { if (pPath != "") { try { PackedScene scene = (PackedScene)ResourceLoader.Load(pPath); ListScenes.Add(scene); return(true); } catch (System.Exception ex) { Nucleus_Utils.Error($"Error while loading Path = {pPath}", ex, GetType().Name, MethodBase.GetCurrentMethod().Name); return(false); } } else { Nucleus_Utils.Error("Path is empty", new CustomAttributeFormatException(), GetType().Name, MethodBase.GetCurrentMethod().Name); } return(false); }
/// <summary> /// (From SceneTransition) /// </summary> /// <returns></returns> private void _onSceneTransition_Finished() { PackedScene scene = GD.Load <PackedScene>($"res://src/scenes/{_nextScene}.tscn"); if (scene != null) { // If exists, unload the actual scene if (_actualScene != null) { _actualScene.QueueFree(); } // Load the new scene + connect to its signal _actualScene = scene.Instance(); AddChild(_actualScene); MoveChild(_actualScene, 0); // To display the transition scene before this scene _actualScene.Connect("Generic_TransitionScene", this, nameof(_onCall_TransitionScene)); } else { //GD.PrintErr($"SceneManager._onSceneTransition_Finished - The scene {_nextScene} does not exists"); Nucleus_Utils.Error($"The scene {_nextScene} does not exists !", new TargetException(), GetType().Name, MethodBase.GetCurrentMethod().Name); } }