using System.Collections.Generic;

namespace CounterDrone.Core.Simulation
{
    public enum SimulationState { Idle, Running, Paused, Stopped, Completed }

    public class SimEvent
    {
        public Models.SimEventType Type { get; set; }
        public float OccurredAt { get; set; }
        public string SourceId { get; set; } = string.Empty;
        public string TargetId { get; set; } = string.Empty;
        public string DataJson { get; set; } = "{}";
        public string Description { get; set; } = string.Empty;
    }

    public class SimulationFrameResult
    {
        public List<EntitySnapshot> EntitySnapshots { get; set; } = new();
        public List<SimEvent> NewEvents { get; set; } = new();
        public SimulationState State { get; set; }
        public int FrameIndex { get; set; }
        public float SimulationTime { get; set; }
    }

    public class EntitySnapshot
    {
        public string EntityId { get; set; } = string.Empty;
        public Models.EntityType EntityType { get; set; }
        public float PosX, PosY, PosZ, RotX, RotY, RotZ;
        public string StateData { get; set; } = "{}";
    }

    public enum DroneStatus { Flying, Destroyed, ReachedTarget, ZoneIntruded }
}
