use crate::grid::cell::CellID;
use crate::traffic_lights::lights::{TrafficLightID};
use crate::agents_types::AgentType;
use crate::agents::VehicleID;
use crate::traffic_lights::signals::SignalType;
use crate::trips::trip::TripID;
use std::collections::HashMap;
#[derive(Debug)]
pub struct StepResult {
pub err: Option<Box<dyn std::error::Error>>,
pub data: AutomataState,
}
#[derive(Debug, Clone)]
pub struct AutomataState {
pub timestamp: i32,
pub vehicles: Vec<VehicleState>,
pub tls: HashMap<TrafficLightID, Vec<TrafficLightGroupState>>,
}
#[derive(Debug, Clone)]
pub struct VehicleState {
pub occupied_points: Vec<[f64; 2]>,
pub last_point: [f64; 2],
pub last_cell: CellID,
pub tail_cells: Vec<CellID>,
pub last_intermediate_cells: Vec<CellID>,
pub last_speed: i32,
pub last_angle: f64,
pub vehicle_type: AgentType,
pub travel_time: i64,
pub id: VehicleID,
pub trip_id: TripID,
}
#[derive(Debug, Clone)]
pub struct TrafficLightGroupState {
pub group_id: i64,
pub last_signal: SignalType
}