Fix up special floors

This commit is contained in:
2026-04-27 23:33:03 -07:00
parent a55ab4a342
commit f2a164b262
21 changed files with 1335 additions and 781 deletions
@@ -0,0 +1,36 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
using System.Linq;
using Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode))]
public partial class BadEnd : SpecialFloor
{
public override void _Notification(int what) => this.Notify(what);
[Node] public Node3D EnemySpawnPoints { get; set; } = default!;
[Node] public Marker3D PlayerSpawnPoint { get; set; } = default!;
public void OnReady()
{
SpawnEnemies();
}
public void SpawnEnemies()
{
var enemySpawnPoints = EnemySpawnPoints.GetChildren().OfType<Marker3D>();
foreach (var spawnPoint in enemySpawnPoints)
{
var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(EnemyType.Michael);
AddChild(instantiatedEnemy);
instantiatedEnemy.GlobalPosition = new Vector3(spawnPoint.GlobalPosition.X, 2.4f, spawnPoint.GlobalPosition.Z);
ResetPhysicsInterpolation();
var enemyWithFollowBehavior = (IHaveFollowBehavior)instantiatedEnemy;
enemyWithFollowBehavior.FollowBehavior.StartFollow(enemyWithFollowBehavior.NavigationAgent);
}
}
public override (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() { return (PlayerSpawnPoint.Rotation, new Vector3(PlayerSpawnPoint.GlobalPosition.X, 2.4f, PlayerSpawnPoint.GlobalPosition.Z)); }
}