using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GTAOnlineCasinoHelper.Classes { public class CeoPlate { private static readonly Dictionary PLATE_OBJECT_MAP = new Dictionary(); #region Mid Range public static readonly CeoPlate COQUETTE_CLASSIC_TOPLESS = new CeoPlate(CeoModel.COQUETTE_CLASSIC, "T0PL3SS", true); public static readonly CeoPlate COQUETTE_CLASSIC_TOFFEE = new CeoPlate(CeoModel.COQUETTE_CLASSIC, "T0FF33", false); public static readonly CeoPlate COQUETTE_CLASSIC_CLASSY = new CeoPlate(CeoModel.COQUETTE_CLASSIC, "CL45SY", false); public static readonly CeoPlate VERLIERER_PRECIOUS = new CeoPlate(CeoModel.VERLIERER, "PR3C1OUS", true); public static readonly CeoPlate VERLIERER_OUTFRONT = new CeoPlate(CeoModel.VERLIERER, "0UTFR0NT", false); public static readonly CeoPlate VERLIERER_CURVES = new CeoPlate(CeoModel.VERLIERER, "CURV35", false); public static readonly CeoPlate ZENTORNO_WINNING = new CeoPlate(CeoModel.ZENTORNO, "W1NN1NG", true); public static readonly CeoPlate ZENTORNO_OLDNEWS = new CeoPlate(CeoModel.ZENTORNO, "0LDN3W5", false); public static readonly CeoPlate ZENTORNO_HERO = new CeoPlate(CeoModel.ZENTORNO, "H3R0", false); public static readonly CeoPlate TROPOS_RALLYE_1985 = new CeoPlate(CeoModel.TROPOS_RALLYE, "1985", true); public static readonly CeoPlate TROPOS_RALLYE_IMSORAD = new CeoPlate(CeoModel.TROPOS_RALLYE, "1MS0RAD", false); public static readonly CeoPlate TROPOS_RALLYE_EIGHTIES = new CeoPlate(CeoModel.TROPOS_RALLYE, "31GHT135", false); public static readonly CeoPlate SULTAN_RS_SNOWFLKE = new CeoPlate(CeoModel.SULTAN_RS, "SN0WFLK3", true); public static readonly CeoPlate SULTAN_RS_FIDELITY = new CeoPlate(CeoModel.SULTAN_RS, "F1D3L1TY", false); public static readonly CeoPlate SULTAN_RS_SHOWOFF = new CeoPlate(CeoModel.SULTAN_RS, "5H0W0FF", false); public static readonly CeoPlate CHEETAH_BUZZED = new CeoPlate(CeoModel.CHEETAH, "BUZZ3D", true); public static readonly CeoPlate CHEETAH_MIDNIGHT = new CeoPlate(CeoModel.CHEETAH, "M1DN1GHT", false); public static readonly CeoPlate CHEETAH_BIGCAT = new CeoPlate(CeoModel.CHEETAH, "B1GC4T", false); public static readonly CeoPlate SEVEN_SEVENTY_ALLOYS = new CeoPlate(CeoModel.SEVEN_SEVENTY, "4LL0Y5", true); public static readonly CeoPlate SEVEN_SEVENTY_FRUITY = new CeoPlate(CeoModel.SEVEN_SEVENTY, "FRU1TY", false); public static readonly CeoPlate SEVEN_SEVENTY_SPEEDY = new CeoPlate(CeoModel.SEVEN_SEVENTY, "SP33DY", false); public static readonly CeoPlate OMNIS_WIDEBOD = new CeoPlate(CeoModel.OMNIS, "W1D3B0D", true); public static readonly CeoPlate OMNIS_OBEYME = new CeoPlate(CeoModel.OMNIS, "0BEYM3", false); public static readonly CeoPlate OMNIS_DIRTY = new CeoPlate(CeoModel.OMNIS, "D1RTY", false); public static readonly CeoPlate ENTITY_XF_OVERFLOD = new CeoPlate(CeoModel.ENTITY_XF, "0V3RFL0D", true); public static readonly CeoPlate ENTITY_XF_IMLATE = new CeoPlate(CeoModel.ENTITY_XF, "IML4TE", false); public static readonly CeoPlate ENTITY_XF_WIDEBOY = new CeoPlate(CeoModel.ENTITY_XF, "W1DEB0Y", false); public static readonly CeoPlate COQUETTE_BLACKFIN_VINTAGE = new CeoPlate(CeoModel.COQUETTE_BLACKFIN, "V1NT4G3", true); public static readonly CeoPlate COQUETTE_BLACKFIN_WIPEOUT = new CeoPlate(CeoModel.COQUETTE_BLACKFIN, "W1P3OUT", false); public static readonly CeoPlate COQUETTE_BLACKFIN_BLKFIN = new CeoPlate(CeoModel.COQUETTE_BLACKFIN, "BLKF1N", false); #endregion #region Top Range public static readonly CeoPlate Z_TYPE_BIGMONEY = new CeoPlate(CeoModel.Z_TYPE, "B1GMON3Y", true); public static readonly CeoPlate Z_TYPE_KINGPIN = new CeoPlate(CeoModel.Z_TYPE, "K1NGP1N", false); public static readonly CeoPlate Z_TYPE_CEO = new CeoPlate(CeoModel.Z_TYPE, "CE0", false); public static readonly CeoPlate ETR_ONE_PRETTY = new CeoPlate(CeoModel.ETR_ONE, "PR3TTY", true); public static readonly CeoPlate ETR_ONE_BIGBOY = new CeoPlate(CeoModel.ETR_ONE, "B1GB0Y", false); public static readonly CeoPlate ETR_ONE_MONARCH = new CeoPlate(CeoModel.ETR_ONE, "M0N4RCH", false); public static readonly CeoPlate EIGHT_ELEVEN_SLICK = new CeoPlate(CeoModel.EIGHT_ELEVEN, "SL1CK", true); public static readonly CeoPlate EIGHT_ELEVEN_MIDLIFE = new CeoPlate(CeoModel.EIGHT_ELEVEN, "M1DL1F3", false); public static readonly CeoPlate EIGHT_ELEVEN_REGAL = new CeoPlate(CeoModel.EIGHT_ELEVEN, "R3G4L", false); public static readonly CeoPlate OSIRIS_SLEEK = new CeoPlate(CeoModel.OSIRIS, "SL33K", true); public static readonly CeoPlate OSIRIS_OHELLO = new CeoPlate(CeoModel.OSIRIS, "OH3LL0", false); public static readonly CeoPlate OSIRIS_PHARAOH = new CeoPlate(CeoModel.OSIRIS, "PH4R40H", false); public static readonly CeoPlate REAPER_DEATH4U = new CeoPlate(CeoModel.REAPER, "D34TH4U", true); public static readonly CeoPlate REAPER_2FAST4U = new CeoPlate(CeoModel.REAPER, "2FA5T4U", false); public static readonly CeoPlate REAPER_GRIM = new CeoPlate(CeoModel.REAPER, "GR1M", false); public static readonly CeoPlate MAMBA_BLKMAMBA = new CeoPlate(CeoModel.MAMBA, "BLKM4MB4", true); public static readonly CeoPlate MAMBA_OLDBLUE = new CeoPlate(CeoModel.MAMBA, "0LDBLU3", false); public static readonly CeoPlate MAMBA_VIP = new CeoPlate(CeoModel.MAMBA, "V1P", false); public static readonly CeoPlate FMJ_CATCHME = new CeoPlate(CeoModel.FMJ, "C4TCHM3", true); public static readonly CeoPlate FMJ_JOKER = new CeoPlate(CeoModel.FMJ, "J0K3R", false); public static readonly CeoPlate FMJ_HOT4U = new CeoPlate(CeoModel.FMJ, "H0T4U", false); public static readonly CeoPlate STIRLING_GT_RALLY = new CeoPlate(CeoModel.STIRLING_GT, "R4LLY", true); public static readonly CeoPlate STIRLING_GT_MAJESTIC = new CeoPlate(CeoModel.STIRLING_GT, "M4J3ST1C", false); public static readonly CeoPlate STIRLING_GT_TOURER = new CeoPlate(CeoModel.STIRLING_GT, "T0UR3R", false); public static readonly CeoPlate X_EIGHTY_PROTO_MAKEBANK = new CeoPlate(CeoModel.X_EIGHTY_PROTO, "M4K3B4NK", true); public static readonly CeoPlate X_EIGHTY_PROTO_FUTURE = new CeoPlate(CeoModel.X_EIGHTY_PROTO, "FUTUR3", false); public static readonly CeoPlate X_EIGHTY_PROTO_TURBO = new CeoPlate(CeoModel.X_EIGHTY_PROTO, "TURB0", false); public static readonly CeoPlate TYRUS_CITRUS = new CeoPlate(CeoModel.TYRUS, "C1TRUS", true); public static readonly CeoPlate TYRUS_BESTLAP = new CeoPlate(CeoModel.TYRUS, "B35TL4P", false); public static readonly CeoPlate TYRUS_TREX = new CeoPlate(CeoModel.TYRUS, "TR3X", false); public static readonly CeoPlate T_TWENTY_DEVIL = new CeoPlate(CeoModel.T_TWENTY, "D3V1L", true); public static readonly CeoPlate T_TWENTY_CARAMEL = new CeoPlate(CeoModel.T_TWENTY, "CAR4M3L", false); public static readonly CeoPlate T_TWENTY_TOPSPEED = new CeoPlate(CeoModel.T_TWENTY, "T0PSP33D", false); public static readonly CeoPlate ROOSEVELT_VALOR_OLDTIMER = new CeoPlate(CeoModel.ROOSEVELT_VALOR, "0LDT1M3R", true); public static readonly CeoPlate ROOSEVELT_VALOR_LAWLESS = new CeoPlate(CeoModel.ROOSEVELT_VALOR, "L4WLE55", false); public static readonly CeoPlate ROOSEVELT_VALOR_VALOR = new CeoPlate(CeoModel.ROOSEVELT_VALOR, "V4L0R", false); #endregion public CeoModel Model { get; } public string Plate { get; } public bool IsCollection { get; } public string FormattedPlate { get { return $"{Plate}{(IsCollection ? "*" : "")}"; } } private CeoPlate(CeoModel model, string plate, bool collection) { Model = model; Plate = plate; IsCollection = collection; PLATE_OBJECT_MAP[plate.ToLower()] = this; } public override string ToString() { return $"{Plate}{(IsCollection ? "*" : "")} ({Model.ToString()})"; } public override bool Equals(object obj) { return ReferenceEquals(this, obj); } public override int GetHashCode() { int hashCode = 17; hashCode = 31 * hashCode + Model.GetHashCode(); hashCode = 31 * hashCode + Plate.GetHashCode(); hashCode = 31 * hashCode + IsCollection.GetHashCode(); return hashCode; } public static bool TryFind(string plate, out CeoPlate ceoPlate) { if (plate.EndsWith("*")) { plate = plate.Substring(0, plate.Length - 1); } return PLATE_OBJECT_MAP.TryGetValue(plate.ToLower(), out ceoPlate); } } }