Skip to main content

ed_journals/modules/materials/models/
material_grade.rs

1use serde::Serialize;
2
3use crate::modules::materials::Material;
4
5#[derive(Debug, Serialize)]
6pub enum MaterialGrade {
7    Grade1,
8    Grade2,
9    Grade3,
10    Grade4,
11    Grade5,
12
13    /// Used for odyssey materials
14    None,
15
16    #[cfg(feature = "allow-unknown")]
17    #[cfg_attr(docsrs, doc(cfg(feature = "allow-unknown")))]
18    Unknown,
19}
20
21impl MaterialGrade {
22    pub fn grade_nr(&self) -> u8 {
23        match self {
24            MaterialGrade::Grade1 => 1,
25            MaterialGrade::Grade2 => 2,
26            MaterialGrade::Grade3 => 3,
27            MaterialGrade::Grade4 => 4,
28            MaterialGrade::Grade5 => 5,
29            MaterialGrade::None => 0,
30
31            #[cfg(feature = "allow-unknown")]
32            MaterialGrade::Unknown => 0,
33        }
34    }
35
36    pub fn grade_storage_limit(&self) -> u16 {
37        match self {
38            MaterialGrade::Grade1 => 300,
39            MaterialGrade::Grade2 => 250,
40            MaterialGrade::Grade3 => 200,
41            MaterialGrade::Grade4 => 150,
42            MaterialGrade::Grade5 => 100,
43            MaterialGrade::None => 0,
44
45            #[cfg(feature = "allow-unknown")]
46            MaterialGrade::Unknown => 250,
47        }
48    }
49}
50
51impl From<&Material> for MaterialGrade {
52    fn from(value: &Material) -> Self {
53        match value {
54            // Raw
55            Material::Carbon => MaterialGrade::Grade1,
56            Material::Vanadium => MaterialGrade::Grade2,
57            Material::Niobium => MaterialGrade::Grade3,
58            Material::Yttrium => MaterialGrade::Grade4,
59
60            Material::Phosphorus => MaterialGrade::Grade1,
61            Material::Chromium => MaterialGrade::Grade2,
62            Material::Molybdenum => MaterialGrade::Grade3,
63            Material::Technetium => MaterialGrade::Grade4,
64
65            Material::Sulphur => MaterialGrade::Grade1,
66            Material::Manganese => MaterialGrade::Grade2,
67            Material::Cadmium => MaterialGrade::Grade3,
68            Material::Ruthenium => MaterialGrade::Grade4,
69
70            Material::Iron => MaterialGrade::Grade1,
71            Material::Zinc => MaterialGrade::Grade2,
72            Material::Tin => MaterialGrade::Grade3,
73            Material::Selenium => MaterialGrade::Grade4,
74
75            Material::Nickel => MaterialGrade::Grade1,
76            Material::Germanium => MaterialGrade::Grade2,
77            Material::Tungsten => MaterialGrade::Grade3,
78            Material::Tellurium => MaterialGrade::Grade4,
79
80            Material::Rhenium => MaterialGrade::Grade1,
81            Material::Arsenic => MaterialGrade::Grade2,
82            Material::Mercury => MaterialGrade::Grade3,
83            Material::Polonium => MaterialGrade::Grade4,
84
85            Material::Lead => MaterialGrade::Grade1,
86            Material::Zirconium => MaterialGrade::Grade2,
87            Material::Boron => MaterialGrade::Grade3,
88            Material::Antimony => MaterialGrade::Grade4,
89
90            // Manufactured
91            Material::ChemicalStorageUnits => MaterialGrade::Grade1,
92            Material::ChemicalProcessors => MaterialGrade::Grade2,
93            Material::ChemicalDistillery => MaterialGrade::Grade3,
94            Material::ChemicalManipulators => MaterialGrade::Grade4,
95            Material::PharmaceuticalIsolators => MaterialGrade::Grade5,
96
97            Material::TemperedAlloys => MaterialGrade::Grade1,
98            Material::HeatResistantCeramics => MaterialGrade::Grade2,
99            Material::PrecipitatedAlloys => MaterialGrade::Grade3,
100            Material::ThermicAlloys => MaterialGrade::Grade4,
101            Material::MilitaryGradeAlloys => MaterialGrade::Grade5,
102
103            Material::HeatConductionWiring => MaterialGrade::Grade1,
104            Material::HeatDispersionPlate => MaterialGrade::Grade2,
105            Material::HeatExchangers => MaterialGrade::Grade3,
106            Material::HeatVanes => MaterialGrade::Grade4,
107            Material::ProtoHeatRadiators => MaterialGrade::Grade5,
108
109            Material::BasicConductors => MaterialGrade::Grade1,
110            Material::ConductiveComponents => MaterialGrade::Grade2,
111            Material::ConductiveCeramics => MaterialGrade::Grade3,
112            Material::ConductivePolymers => MaterialGrade::Grade4,
113            Material::BiotechConductors => MaterialGrade::Grade5,
114
115            Material::MechanicalScrap => MaterialGrade::Grade1,
116            Material::MechanicalEquipment => MaterialGrade::Grade2,
117            Material::MechanicalComponents => MaterialGrade::Grade3,
118            Material::ConfigurableComponents => MaterialGrade::Grade4,
119            Material::ImprovisedComponents => MaterialGrade::Grade5,
120
121            Material::GridResistors => MaterialGrade::Grade1,
122            Material::HybridCapacitors => MaterialGrade::Grade2,
123            Material::ElectrochemicalArrays => MaterialGrade::Grade3,
124            Material::PolymerCapacitors => MaterialGrade::Grade4,
125            Material::MilitarySupercapacitors => MaterialGrade::Grade5,
126
127            Material::WornShieldEmitters => MaterialGrade::Grade1,
128            Material::ShieldEmitters => MaterialGrade::Grade2,
129            Material::ShieldingSensors => MaterialGrade::Grade3,
130            Material::CompoundShielding => MaterialGrade::Grade4,
131            Material::ImperialShielding => MaterialGrade::Grade5,
132
133            Material::CompactComposites => MaterialGrade::Grade1,
134            Material::FilamentComposites => MaterialGrade::Grade2,
135            Material::HighDensityComposites => MaterialGrade::Grade3,
136            Material::ProprietaryComposites => MaterialGrade::Grade4,
137            Material::CoreDynamicsComposites => MaterialGrade::Grade5,
138
139            Material::CrystalShards => MaterialGrade::Grade1,
140            Material::FlawedFocusCrystals => MaterialGrade::Grade2,
141            Material::FocusCrystals => MaterialGrade::Grade3,
142            Material::RefinedFocusCrystals => MaterialGrade::Grade4,
143            Material::ExquisiteFocusCrystals => MaterialGrade::Grade5,
144
145            Material::SalvagedAlloys => MaterialGrade::Grade1,
146            Material::GalvanisingAlloys => MaterialGrade::Grade2,
147            Material::PhaseAlloys => MaterialGrade::Grade3,
148            Material::ProtoLightAlloys => MaterialGrade::Grade4,
149            Material::ProtoRadiolicAlloys => MaterialGrade::Grade5,
150
151            Material::HardenedSurfaceFragments => MaterialGrade::Grade1,
152            Material::CausticShard => MaterialGrade::Grade2,
153            Material::TacticalCoreChip => MaterialGrade::Grade2,
154            Material::ThargoidCarapace => MaterialGrade::Grade2,
155            Material::BioMechanicalConduits => MaterialGrade::Grade3,
156            Material::CorrosiveMechanisms => MaterialGrade::Grade3,
157            Material::PhasingMembraneResidue => MaterialGrade::Grade3,
158            Material::ThargoidEnergyCell => MaterialGrade::Grade3,
159            Material::WreckageComponents => MaterialGrade::Grade3,
160            Material::CausticCrystal => MaterialGrade::Grade4,
161            Material::ThargoidTechnologicalComponents => MaterialGrade::Grade4,
162            Material::WeaponParts => MaterialGrade::Grade4,
163            Material::HeatExposureSpecimen => MaterialGrade::Grade5,
164            Material::PropulsionElements => MaterialGrade::Grade5,
165            Material::SensorFragment => MaterialGrade::Grade5,
166            Material::ThargoidOrganicCircuitry => MaterialGrade::Grade5,
167
168            Material::GuardianPowerCell => MaterialGrade::Grade1,
169            Material::GuardianWreckageComponents => MaterialGrade::Grade1,
170            Material::GuardianPowerConduit => MaterialGrade::Grade2,
171            Material::GuardianSentinelWeaponParts => MaterialGrade::Grade3,
172            Material::GuardianTechnologyComponent => MaterialGrade::Grade3,
173
174            // Encoded
175            Material::ExceptionScrambledEmissionData => MaterialGrade::Grade1,
176            Material::IrregularEmissionData => MaterialGrade::Grade2,
177            Material::UnexpectedEmissionData => MaterialGrade::Grade3,
178            Material::DecodedEmissionData => MaterialGrade::Grade4,
179            Material::AbnormalCompactEmissionData => MaterialGrade::Grade5,
180
181            Material::AtypicalDisruptedWakeEchoes => MaterialGrade::Grade1,
182            Material::AnomalousFSDTelemetry => MaterialGrade::Grade2,
183            Material::StrangeWakeSolutions => MaterialGrade::Grade3,
184            Material::EccentricHyperspaceTrajectories => MaterialGrade::Grade4,
185            Material::DataminedWakeExceptions => MaterialGrade::Grade5,
186
187            Material::DistortedShieldCycleRecordings => MaterialGrade::Grade1,
188            Material::InconsistentShieldSoakAnalysis => MaterialGrade::Grade2,
189            Material::UntypicalShieldScans => MaterialGrade::Grade3,
190            Material::AberrantShieldPatternAnalysis => MaterialGrade::Grade4,
191            Material::PeculiarShieldFrequencyData => MaterialGrade::Grade5,
192
193            Material::UnusualEncryptedFiles => MaterialGrade::Grade1,
194            Material::TaggedEncryptionCodes => MaterialGrade::Grade2,
195            Material::OpenSymmetricKeys => MaterialGrade::Grade3,
196            Material::AtypicalEncryptionArchives => MaterialGrade::Grade4,
197            Material::AdaptiveEncryptorsCapture => MaterialGrade::Grade5,
198
199            Material::AnomalousBulkScanData => MaterialGrade::Grade1,
200            Material::UnidentifiedScanArchives => MaterialGrade::Grade2,
201            Material::ClassifiedScanDatabanks => MaterialGrade::Grade3,
202            Material::DivergentScanData => MaterialGrade::Grade4,
203            Material::ClassifiedScanFragment => MaterialGrade::Grade5,
204
205            Material::SpecializedLegacyFirmware => MaterialGrade::Grade1,
206            Material::ModifiedConsumerFirmware => MaterialGrade::Grade2,
207            Material::CrackedIndustrialFirmware => MaterialGrade::Grade3,
208            Material::SecurityFirmwarePatch => MaterialGrade::Grade4,
209            Material::ModifiedEmbeddedFirmware => MaterialGrade::Grade5,
210
211            Material::ThargoidStructuralData => MaterialGrade::Grade2,
212            Material::MassiveEnergySurgeAnalytics => MaterialGrade::Grade3,
213            Material::ShipFlightData => MaterialGrade::Grade3,
214            Material::ShipSystemsData => MaterialGrade::Grade3,
215            Material::ThargoidInterdictionTelemetry => MaterialGrade::Grade3,
216            Material::ThargoidMaterialCompositionData => MaterialGrade::Grade3,
217            Material::ThargoidShipSignature => MaterialGrade::Grade3,
218            Material::ThargoidResidueData => MaterialGrade::Grade4,
219            Material::ThargoidWakeData => MaterialGrade::Grade4,
220
221            Material::PatternGammaObeliskData => MaterialGrade::Grade1,
222            Material::PatternBetaObeliskData => MaterialGrade::Grade2,
223            Material::PatternAlphaObeliskData => MaterialGrade::Grade3,
224            Material::PatternDeltaObeliskData => MaterialGrade::Grade4,
225            Material::PatternEpsilonObeliskData => MaterialGrade::Grade4,
226            Material::GuardianModuleBlueprintFragment => MaterialGrade::Grade5,
227            Material::GuardianVesselBlueprintFragment => MaterialGrade::Grade5,
228            Material::GuardianWeaponBlueprintFragment => MaterialGrade::Grade5,
229
230            #[cfg(feature = "allow-unknown")]
231            Material::Unknown(_) => MaterialGrade::Unknown,
232        }
233    }
234}