scs-sdk-telemetry 1.2.0

Rust wrapper for the ETS2 (Euro Truck Simulator 2) and ATS (American Truck Simulator) Telemetry SDK plug-in.
#[cfg(feature = "json")]
use serde::{Serialize, Deserialize};


#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json", serde(rename_all(serialize = "snake_case")))]
pub enum JobMarket {
  #[default]
  NoValue,
  CargoMarket,
  QuickJob,
  FreightMarket,
  ExternalContracts,
  ExternalMarket
}

impl JobMarket {
  pub fn from_str(value: &str) -> JobMarket {
    match value {
      "cargo_market" => Self::CargoMarket,
      "quick_job" => Self::QuickJob,
      "freight_market" => Self::FreightMarket,
      "external_contracts" => Self::ExternalContracts,
      "external_market" => Self::ExternalMarket,
      _ => Self::NoValue
    }
  }
}

#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json", serde(rename_all(serialize = "snake_case")))]
pub enum ShifterType {
  #[default]
  Unknown,
  Arcade,
  Automatic,
  Manual,
  HShifter
}

impl ShifterType {
  pub fn from_str(value: &str) -> ShifterType {
    match value {
      "arcade" => Self::Arcade,
      "automatic" => Self::Automatic,
      "manual" => Self::Manual,
      "hshifter" => Self::HShifter,
      _ => Self::Unknown
    }
  }
}

#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json", serde(rename_all(serialize = "snake_case")))]
pub enum AuxLevel {
  #[default]
  Off,
  Dimmed,
  Full
}

impl AuxLevel {
  pub fn from_u32(value: u32) -> AuxLevel {
    match value {
      1 => Self::Dimmed,
      2 => Self::Full,
      _ => Self::Off
    }
  }
}

#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json", serde(rename_all(serialize = "snake_case")))]
pub enum Game {
  #[default]
  Unknown,
  Ets2,
  Ats
}

impl Game {
  pub fn from_u32(value: u32) -> Game {
    match value {
      1 => Self::Ets2,
      2 => Self::Ats,
      _ => Self::Unknown
    }
  }
}

#[derive(Debug, Clone, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json", serde(rename_all(serialize = "snake_case")))]
pub enum Offence {
  #[default]
  NoValue,
  Crash,
  AvoidSleeping,
  WrongWay,
  SpeedingCamera,
  NoLights,
  RedSignal,
  AvoidWeighting,
  Speeding,
  IllegalTrailer,
  AvoidInspection,
  IllegalBorderCrossing,
  HardShoulderViolation,
  DamagedVehicleUsage,
  Generic
}

impl Offence {
  pub fn from_str(value: &str) -> Offence {
    match value {
      "crash" => Self::Crash,
      "avoid_sleeping" => Self::AvoidSleeping,
      "wrong_way" => Self::WrongWay,
      "speeding_camera" => Self::SpeedingCamera,
      "no_lights" => Self::NoLights,
      "red_signal" => Self::RedSignal,
      "avoid_weighting" => Self::AvoidWeighting,
      "speeding" => Self::Speeding,
      "illegal_trailer" => Self::IllegalTrailer,
      "avoid_Inspection" => Self::AvoidInspection,
      "illegal_Border_Crossing" => Self::IllegalBorderCrossing,
      "hard_Shoulder_Violation" => Self::HardShoulderViolation,
      "damaged_Vehicle_Usage" => Self::DamagedVehicleUsage,
      "generic" => Self::Generic,
      _ => Self::NoValue
    }
  }
}