nil_core/military/unit/stats/
mod.rs1pub mod haul;
5pub mod power;
6pub mod prelude;
7pub mod ranged_debuff;
8pub mod speed;
9
10use crate::military::unit::stats::power::DefensePower;
11use bon::Builder;
12use prelude::*;
13use serde::{Deserialize, Serialize};
14
15#[derive(Builder, Debug, Deserialize, Serialize)]
16#[derive_const(Clone)]
17#[serde(rename_all = "camelCase")]
18#[builder(const)]
19pub struct UnitStats {
20 attack: AttackPower,
21 defense: DefensePower,
22 ranged_debuff: RangedDebuff,
23 base_speed: Speed,
24 haul: Haul,
25}
26
27impl UnitStats {
28 #[inline]
30 pub const fn power(&self) -> Power {
31 (*self.attack + self.defense().mean()) / 2
32 }
33
34 #[inline]
35 pub const fn attack(&self) -> AttackPower {
36 self.attack
37 }
38
39 #[inline]
40 pub const fn defense(&self) -> DefensePower {
41 self.defense
42 }
43
44 #[inline]
45 pub const fn ranged_debuff(&self) -> RangedDebuff {
46 self.ranged_debuff
47 }
48
49 #[inline]
50 pub const fn base_speed(&self) -> Speed {
51 self.base_speed
52 }
53
54 #[inline]
55 pub const fn haul(&self) -> Haul {
56 self.haul
57 }
58}