nil_core/report/
battle.rs1use crate::battle::BattleResult;
5use crate::continent::Coord;
6use crate::report::ReportId;
7use crate::resources::Resources;
8use crate::round::RoundId;
9use crate::ruler::Ruler;
10use bon::Builder;
11use jiff::Zoned;
12use nil_core_macros::Report;
13use serde::{Deserialize, Serialize};
14
15#[derive(Report, Builder, Clone, Debug, Deserialize, Serialize)]
16#[serde(rename_all = "camelCase")]
17pub struct BattleReport {
18 #[builder(skip = ReportId::new())]
19 id: ReportId,
20 attacker: Ruler,
21 defender: Ruler,
22 origin: Coord,
23 destination: Coord,
24 result: BattleResult,
25 hauled_resources: Resources,
26 round: RoundId,
27 #[builder(skip = Zoned::now())]
28 time: Zoned,
29}
30
31impl BattleReport {
32 #[inline]
33 pub fn attacker(&self) -> &Ruler {
34 &self.attacker
35 }
36
37 #[inline]
38 pub fn defender(&self) -> &Ruler {
39 &self.defender
40 }
41
42 #[inline]
43 pub fn result(&self) -> &BattleResult {
44 &self.result
45 }
46
47 #[inline]
48 pub fn origin(&self) -> Coord {
49 self.origin
50 }
51
52 #[inline]
53 pub fn destination(&self) -> Coord {
54 self.destination
55 }
56
57 #[inline]
58 pub fn hauled_resources(&self) -> &Resources {
59 &self.hauled_resources
60 }
61}