use crate::packet::header::Header;
use derive_new::new;
use getset::{CopyGetters, Getters};
#[derive(Debug, PartialEq, Copy, Clone, Eq, Ord, PartialOrd, Hash)]
pub enum Controller {
AI,
Human,
}
impl Default for Controller {
fn default() -> Self {
Controller::AI
}
}
#[derive(Debug, PartialEq, Copy, Clone, Eq, Ord, PartialOrd, Hash)]
pub enum Driver {
AlainForest,
AlessioLorandi,
AlexMurray,
AlexanderAlbon,
AnthoineHubert,
AntonioFuoco,
AntonioGiovinazzi,
ArjunMaini,
ArronBarnes,
ArtemMarkelov,
BenjaminCoppens,
CallistoCalabresi,
CallumIlott,
CarlosSainz,
CharlesLeclerc,
DanielJones,
DanielRicciardo,
DaniilKvyat,
DorianBoccolacci,
EstoSaari,
FlavioNieves,
GeorgeRussell,
GertWaldmuller,
GuanyaZhou,
GuilianoAlesi,
HowardClarke,
IgorCorreia,
JackAitken,
JackTremblay,
JayLetourneau,
JonasSchiffer,
JordanKing,
JuanManuelCorrea,
JulianQuesada,
KevinMagnussen,
KimiRaikkonen,
KlimekMichalski,
LanceStroll,
LandoNorris,
LewisHamilton,
LouisDeletraz,
LucaGhiotto,
LucasRoth,
MahaveerRaghunathan,
MarieLaursen,
MartinGiles,
MaxVerstappen,
MaximilianGunther,
MickSchumacher,
NaotaIzum,
NicholasLatifi,
NicoHulkenburg,
NikitaMazepin,
NikoKari,
NireiFukuzumi,
NoahVisser,
NobuharuMatsushita,
NyckDeVries,
PeterBelousov,
PierreGasly,
RalphBoschung,
RashidNair,
RobertKubica,
RobertoMerhi,
RomainGrosjean,
RubenMeijer,
SantiagoMoreno,
SeanGelael,
SebastianVettel,
SergioPerez,
SergioSetteCamara,
SophieLevasseur,
TadasukeMakino,
TatianaCalderon,
ValtteriBottas,
WilheimKaufmann,
YasarAtiyeh,
}
impl Default for Driver {
fn default() -> Self {
Driver::NicoHulkenburg
}
}
#[derive(Debug, PartialEq, Copy, Clone, Eq, Ord, PartialOrd, Hash)]
pub enum Team {
ARTGrandPrix,
AlfaRomeo,
Arden2019,
ArtGP2019,
BWTArden,
Brawn2009,
Campos2019,
CamposVexatecRacing,
Carlin,
Carlin2019,
CharouzRacingSystem,
DAMS,
Dams2019,
Ferrari,
Ferrari1976,
Ferrari1979,
Ferrari1990,
Ferrari1995,
Ferrari2002,
Ferrari2004,
Ferrari2007,
Ferrari2010,
Haas,
Lotus1972,
Lotus1978,
MPMotorsport,
MPMotorsport2019,
McLaren,
McLaren1976,
McLaren1982,
McLaren1988,
McLaren1990,
McLaren1991,
McLaren1998,
McLaren2010,
Mercedes,
Pertamina,
Prema2019,
RacingPoint,
RedBull2010,
RedBullRacing,
Renault,
Renault2006,
RussianTime,
SauberJuniorCharouz2019,
ToroRosso,
Trident,
Trident2019,
UniVirtuosi2019,
Williams,
Williams1992,
Williams1996,
Williams2003,
}
impl Default for Team {
fn default() -> Self {
Team::Mercedes
}
}
#[derive(Debug, PartialEq, Copy, Clone, Eq, Ord, PartialOrd, Hash)]
pub enum Nationality {
American,
Argentinean,
Australian,
Austrian,
Azerbaijani,
Bahraini,
Belgian,
Bolivian,
Brazilian,
British,
Bulgarian,
Cameroonian,
Canadian,
Chilean,
Chinese,
Colombian,
CostaRican,
Croatian,
Cypriot,
Czech,
Danish,
Dutch,
Ecuadorian,
Emirian,
English,
Estonian,
Finnish,
French,
German,
Ghanaian,
Greek,
Guatemalan,
Honduran,
HongKonger,
Hungarian,
Icelander,
Indian,
Indonesian,
Irish,
Israeli,
Italian,
Jamaican,
Japanese,
Jordanian,
Kuwaiti,
Latvian,
Lebanese,
Lithuanian,
Luxembourger,
Malaysian,
Maltese,
Mexican,
Monegasque,
NewZealander,
Nicaraguan,
NorthKorean,
NorthernIrish,
Norwegian,
Omani,
Pakistani,
Panamanian,
Paraguayan,
Peruvian,
Polish,
Portuguese,
Qatari,
Romanian,
Russian,
Salvadoran,
Saudi,
Scottish,
Serbian,
Singaporean,
Slovakian,
Slovenian,
SouthAfrican,
SouthKorean,
Spanish,
Swedish,
Swiss,
Thai,
Turkish,
Ukrainian,
Uruguayan,
Venezuelan,
Welsh,
}
impl Default for Nationality {
fn default() -> Self {
Nationality::Dutch
}
}
#[derive(Debug, PartialEq, Copy, Clone, Eq, Ord, PartialOrd, Hash)]
pub enum TelemetryPrivacy {
Public,
Restricted,
}
impl Default for TelemetryPrivacy {
fn default() -> Self {
TelemetryPrivacy::Public
}
}
#[derive(new, Debug, CopyGetters, Getters, PartialEq, Clone, Eq, Ord, PartialOrd, Hash, Default)]
pub struct Participant {
#[getset(get_copy = "pub")]
controller: Controller,
#[getset(get_copy = "pub")]
driver: Driver,
#[getset(get_copy = "pub")]
team: Team,
#[getset(get_copy = "pub")]
race_number: u8,
#[getset(get_copy = "pub")]
nationality: Nationality,
#[getset(get = "pub")]
name: String,
#[getset(get_copy = "pub")]
telemetry_privacy: Option<TelemetryPrivacy>,
}
#[derive(new, Debug, CopyGetters, Getters, PartialEq, Clone, Eq, Ord, PartialOrd, Hash)]
pub struct ParticipantsPacket {
#[getset(get = "pub")]
header: Header,
#[getset(get_copy = "pub")]
active_participants_count: u8,
#[getset(get = "pub")]
participants: Vec<Participant>,
}