using System.Linq; using Babushka.scripts.CSharp.GameEntity.Entities; using Godot; using PositionalEntity = Babushka.scripts.CSharp.GameEntity.Entities.PositionalEntity; namespace Babushka.scripts.CSharp.GameEntity.Management; public partial class EntitySceneContainer : Node2D { [Export] public string sceneName = "none"; public override void _EnterTree() { EntityManager.Instance.SetSceneContainer(this); } public override void _ExitTree() { EntityManager.Instance.Save(); EntityManager.Instance.UnsetSceneContainer(); } public override void _Ready() { AddAllEntities(); CallDeferred(nameof(RegisterWithScenesEntity)); } private void RegisterWithScenesEntity() { var loadedScenesEntity = EntityManager.Instance.GetUniqueEntity(); loadedScenesEntity.AddScene(sceneName); } public void AddAllEntities() { foreach (var positionalEntity in EntityManager.Instance.AllPositionalEntities.Where(x => x.sceneName == sceneName)) { AddEntity(positionalEntity); } } public void AddEntity(PositionalEntity entity) { entity.InstantiateEntityNode(this); } }