ed_journals/modules/logs/content/log_event_content/
engineer_contribution_event.rs1use crate::civilization::Engineer;
4use crate::modules::materials::Material;
5use crate::modules::trading::Commodity;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
10#[serde(rename_all = "PascalCase")]
11pub struct EngineerContributionEvent {
12 pub engineer: String,
14
15 #[serde(rename = "EngineerID")]
17 pub engineer_id: Engineer,
18
19 #[serde(rename = "Type", flatten)]
21 pub kind: EngineerContributionEventType,
22}
23
24#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
26#[serde(rename_all = "PascalCase", tag = "Type")]
27pub enum EngineerContributionEventType {
28 Commodity(EngineerContributionEventCommodityContribution),
30
31 Materials(EngineerContributionEventMaterialContribution),
33
34 Bounty(EngineerContributionEventBountyContribution),
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
40#[serde(rename_all = "PascalCase")]
41pub struct EngineerContributionEventCommodityContribution {
42 pub commodity: Commodity,
44
45 pub quantity: u16,
47
48 pub total_quantity: u16,
50}
51
52#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
54#[serde(rename_all = "PascalCase")]
55pub struct EngineerContributionEventMaterialContribution {
56 pub material: Material,
58
59 pub quantity: u16,
61
62 pub total_quantity: u16,
64}
65
66#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
68#[serde(rename_all = "PascalCase")]
69pub struct EngineerContributionEventBountyContribution {
70 pub quantity: u32,
72
73 pub total_quantity: u32,
75}