cavestory_save/items/
weapon.rs1use strum::{Display, EnumIter, FromRepr};
2
3#[derive(Default, Clone, Copy, Debug, PartialEq, Eq)]
4pub struct Weapon {
5 pub classification: WeaponType,
7
8 pub level: i32,
10
11 pub exp: i32,
12
13 pub ammo: i32,
14
15 pub max_ammo: i32,
17}
18
19#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Display, EnumIter, FromRepr)]
20#[strum(serialize_all = "PascalCase")]
21#[repr(u32)]
22pub enum WeaponType {
23 #[default]
24 None,
25 Snake,
26 PolarStar,
27 Fireball,
28 MachineGun,
29 MissileLauncher,
30 #[strum(serialize = "Missiles [bad]")]
31 Missiles,
32 Bubbler,
33 #[strum(serialize = "Unknown [bad]")]
34 Unknown,
35 Blade,
36 SuperMissile,
37 #[strum(serialize = "SuperMissiles [bad]")]
38 SuperMissiles,
39 Nemesis,
40 Spur,
41 #[strum(serialize = "Hajime [bad]")]
42 Hajime,
43}
44
45impl From<i32> for WeaponType {
46 fn from(v: i32) -> Self {
47 WeaponType::from_repr(v as u32).unwrap_or_default()
48 }
49}