using Chickensoft.AutoInject; using Chickensoft.Introspection; using Godot; using System.Collections.Immutable; using Zennysoft.Game.Abstractions; namespace Zennysoft.Game.Ma; [Meta(typeof(IAutoNode))] public partial class SpecialFloor : Node3D, IDungeonFloor { public override void _Notification(int what) => this.Notify(what); [Node] private Marker3D PlayerSpawnPoint { get; set; } = default!; public ImmutableList Rooms => []; public virtual void InitializeDungeon() { FloorIsLoaded = true; } public virtual void FadeOutAudio() { } public bool FloorIsLoaded { get; set; } public virtual (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() => (PlayerSpawnPoint.Rotation, new Vector3(PlayerSpawnPoint.Position.X, 0, PlayerSpawnPoint.Position.Z)); }