ed_journals/modules/logs/content/log_event_content/
engineer_craft_event.rs1use crate::civilization::Engineer;
4use serde::{Deserialize, Serialize};
5
6use crate::modules::materials::Material;
7use crate::modules::ship::{Blueprint, BlueprintModifier, ShipModule, ShipSlot};
8
9#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
11#[serde(rename_all = "PascalCase")]
12pub struct EngineerCraftEvent {
13 pub slot: ShipSlot,
15
16 pub module: ShipModule,
18
19 pub ingredients: Vec<EngineerCraftEventIngredient>,
22
23 pub engineer: Option<String>,
26
27 #[serde(rename = "EngineerID")]
29 pub engineer_id: Engineer,
30
31 #[serde(rename = "BlueprintID")]
33 pub blueprint_id: u64,
34
35 pub blueprint_name: Blueprint,
37
38 pub level: u8,
40
41 pub quality: f32,
43
44 pub modifiers: Vec<EngineerCraftEventModifier>,
46}
47
48#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
50#[serde(rename_all = "PascalCase")]
51pub struct EngineerCraftEventIngredient {
52 pub name: Material,
54
55 pub count: u16,
57}
58
59#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
61#[serde(rename_all = "PascalCase")]
62pub struct EngineerCraftEventModifier {
63 pub label: BlueprintModifier,
65
66 #[serde(flatten)]
68 pub kind: EngineerCraftEventModifierKind,
69}
70
71#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
73#[serde(untagged)]
74pub enum EngineerCraftEventModifierKind {
75 ValueChange(EngineerCraftEventValueChange),
77
78 StringChange(EngineerCraftEventStringChange),
80}
81
82#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
84#[serde(rename_all = "PascalCase")]
85pub struct EngineerCraftEventValueChange {
86 pub value: f32,
88
89 pub original_value: f32,
91
92 pub less_is_good: u8,
94}
95
96#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
98#[serde(rename_all = "PascalCase")]
99pub struct EngineerCraftEventStringChange {
100 pub value_str: String,
102
103 #[serde(rename = "ValueStr_Localised")]
105 pub value_str_localized: String,
106}