use crate::inspect::smp::catalog::conditions::*;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(in crate::inspect::smp) struct KnownCargoSlotDefinition {
    pub(in crate::inspect::smp) slot_id: u32,
    pub(in crate::inspect::smp) label: &'static str,
    pub(in crate::inspect::smp) cargo_class: RuntimeCargoClass,
    pub(in crate::inspect::smp) descriptor_id: u32,
}

pub(in crate::inspect::smp) const KNOWN_CARGO_SLOT_DEFINITIONS: [KnownCargoSlotDefinition; 11] = [
    KnownCargoSlotDefinition {
        slot_id: 1,
        label: "Cargo Production Slot 1",
        cargo_class: RuntimeCargoClass::Factory,
        descriptor_id: 230,
    },
    KnownCargoSlotDefinition {
        slot_id: 2,
        label: "Cargo Production Slot 2",
        cargo_class: RuntimeCargoClass::Factory,
        descriptor_id: 231,
    },
    KnownCargoSlotDefinition {
        slot_id: 3,
        label: "Cargo Production Slot 3",
        cargo_class: RuntimeCargoClass::Factory,
        descriptor_id: 232,
    },
    KnownCargoSlotDefinition {
        slot_id: 4,
        label: "Cargo Production Slot 4",
        cargo_class: RuntimeCargoClass::Factory,
        descriptor_id: 233,
    },
    KnownCargoSlotDefinition {
        slot_id: 5,
        label: "Cargo Production Slot 5",
        cargo_class: RuntimeCargoClass::FarmMine,
        descriptor_id: 234,
    },
    KnownCargoSlotDefinition {
        slot_id: 6,
        label: "Cargo Production Slot 6",
        cargo_class: RuntimeCargoClass::FarmMine,
        descriptor_id: 235,
    },
    KnownCargoSlotDefinition {
        slot_id: 7,
        label: "Cargo Production Slot 7",
        cargo_class: RuntimeCargoClass::FarmMine,
        descriptor_id: 236,
    },
    KnownCargoSlotDefinition {
        slot_id: 8,
        label: "Cargo Production Slot 8",
        cargo_class: RuntimeCargoClass::FarmMine,
        descriptor_id: 237,
    },
    KnownCargoSlotDefinition {
        slot_id: 9,
        label: "Cargo Production Slot 9",
        cargo_class: RuntimeCargoClass::Other,
        descriptor_id: 238,
    },
    KnownCargoSlotDefinition {
        slot_id: 10,
        label: "Cargo Production Slot 10",
        cargo_class: RuntimeCargoClass::Other,
        descriptor_id: 239,
    },
    KnownCargoSlotDefinition {
        slot_id: 11,
        label: "Cargo Production Slot 11",
        cargo_class: RuntimeCargoClass::Other,
        descriptor_id: 240,
    },
];

pub(in crate::inspect::smp) const GROUNDED_LOCOMOTIVE_PREFIX: [&str; 61] = [
    "2-D-2",
    "E-88",
    "Adler  2-2-2",
    "USA 103",
    "American 4-4-0",
    "Atlantic 4-4-2",
    "Baldwin 0-6-0",
    "Be 5/7",
    "Beuth 2-2-2",
    "Big Boy 4-8-8-4",
    "C55 Deltic",
    "Camelback 0-6-0",
    "Challenger 4-6-6-4",
    "Class 01 4-6-2",
    "Class 103",
    "Class 132",
    "Class 500 4-6-0",
    "Class 9100",
    "Class EF 66",
    "Class 6E",
    "Consolidation 2-8-0",
    "Crampton 4-2-0",
    "DD 080-X",
    "DD40AX",
    "Duke Class 4-4-0",
    "E18",
    "E428",
    "Brenner E412",
    "E60CP",
    "Eight Wheeler 4-4-0",
    "EP-2 Bipolar",
    "ET22",
    "F3",
    "Fairlie 0-6-6-0",
    "Firefly 2-2-2",
    "FP45",
    "Ge 6/6 Crocodile",
    "GG1",
    "GP7",
    "H10 2-8-2",
    "HST 125",
    "Kriegslok 2-10-0",
    "Mallard 4-6-2",
    "Norris 4-2-0",
    "Northern 4-8-4",
    "Orca NX462",
    "Pacific 4-6-2",
    "Planet 2-2-0",
    "Re 6/6",
    "Red Devil 4-8-4",
    "S3 4-4-0",
    "NA-90D",
    "Shay (2-Truck)",
    "Shinkansen Series 0",
    "Stirling 4-2-2",
    "Trans-Euro",
    "V200",
    "VL80T",
    "GP 35",
    "U1",
    "Zephyr",
];
