Core/RelicRosterReviewStage.cs
namespace Prototype;

/// <summary>Isolated import review for the three independent enemy models.</summary>
public sealed class RelicRosterReviewStage : Component
{
    protected override void OnStart()
    {
        PrototypeFactory.Box( "Review floor", new Vector3( 0, 0, -3 ), new Vector3( 500, 500, 6 ), new Color( .12f, .14f, .16f ), true );
        var ids = new[] { "chaser", "gunner", "charger", "boss" };
        for ( int i = 0; i < ids.Length; i++ )
        {
            var go = new GameObject( true, $"Relic {ids[i]}" );
            go.WorldPosition = new Vector3( 0, (i - 1.5f) * 145, 0 );
            go.Tags.Add( "enemy" );
            go.Tags.Add( "enemy_model_proxy" );
            go.Components.Create<EnemyBrain>().Configure( PrototypeCatalog.Enemy( (EnemyRole)i, 0 ) with { Speed = 0, Damage = 0 } );
            var capsule = go.Components.Create<CapsuleCollider>();
            capsule.Radius = 20; capsule.Start = Vector3.Up * 20; capsule.End = Vector3.Up * 55;
            var renderer = go.Components.Create<SkinnedModelRenderer>();
            var folder = i == 0 ? "chaser_stylized_v001" : $"{ids[i]}_relic_v001";
            renderer.Model = Model.Load( $"models/review/{folder}/{ids[i]}.vmdl" );
            renderer.UseAnimGraph = false;
            renderer.Sequence.Name = "idle";
            renderer.Sequence.Looping = true;
            var hitboxes = go.Components.Create<ModelHitboxes>();
            hitboxes.Renderer = renderer;
            hitboxes.Target = go;
        }
        var fillObject = new GameObject( true, "Review fill" );
        fillObject.WorldPosition = new Vector3( 120, -80, 155 );
        var fill = fillObject.Components.Create<PointLight>();
        fill.Radius = 550; fill.LightColor = new Color( 1.4f, 1.3f, 1.15f ); fill.Shadows = false;
    }
}