homm5_types/hero/mod.rs
1use serde::{Serialize, Deserialize};
2use crate::common::FileRef;
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Coordinate {
6 pub x: u8,
7 pub y: u8
8}
9
10#[derive(Debug, Serialize, Deserialize)]
11pub struct PossessionMarkerTile {
12 pub x: u8,
13 pub y: u8
14}
15
16#[derive(Debug, Serialize, Deserialize)]
17#[allow(non_snake_case)]
18pub struct Skill {
19 pub Mastery: String,
20 pub SkillID: String,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24#[allow(non_snake_case)]
25pub struct Editable {
26 pub NameFileRef: Option<FileRef>,
27 pub BiographyFileRef: Option<FileRef>,
28 pub Offence: u16,
29 pub Defence: u16,
30 pub Spellpower: u16,
31 pub Knowledge: u16,
32 // #[serde(rename = "Item")]
33 // pub skills: Option<Vec<Skill>>,
34 // #[serde(rename = "Item")]
35 // pub perkIDs: Option<Vec<String>>,
36 // #[serde(rename = "Item")]
37 // pub spellIDs: Option<Vec<String>>,
38 pub Ballista: bool,
39 pub FirstAidTent: bool,
40 pub AmmoCart: bool,
41 //pub FavoriteEnemies: Option<Vec<String>>
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45#[allow(non_snake_case)]
46pub struct AdvMapHeroShared {
47 pub Model: Option<FileRef>,
48 pub AnimSet: Option<FileRef>,
49 // #[serde(rename = "Item")]
50 // pub blockedTiles: Option<Vec<Coordinate>>,
51 // #[serde(rename = "Item")]
52 // pub holeTiles: Option<Vec<Coordinate>>,
53 // #[serde(rename = "Item")]
54 // pub activeTiles: Option<Vec<Coordinate>>,
55 // #[serde(rename = "Item")]
56 // pub passableTiles: Option<Vec<Coordinate>>,
57 // pub PossessionMarkerTile: Option<PossessionMarkerTile>,
58 // pub Effect: Option<FileRef>,
59 // pub EffectWhenOwned: Option<FileRef>,
60 // pub messageFileRef: Option<FileRef>,
61 pub WaterBased: bool,
62 pub ApplyHeroTrace: bool,
63 // pub SoundEffect: Option<FileRef>,
64 // pub flybyMessageFileRef: Option<FileRef>,
65 // pub ObjectTypeFileRef: Option<FileRef>,
66 pub FlyPassable: bool,
67 //pub AdventureSoundEffect: Option<FileRef>,
68 //pub RazedStatic: Option<FileRef>,
69 pub Icon128: Option<String>,
70 pub InternalName: String,
71 pub Class: String,
72 pub Specialization: String,
73 pub PrimarySkill: Skill,
74 pub SpecializationNameFileRef: Option<FileRef>,
75 pub SpecializationDescFileRef: Option<FileRef>,
76 pub SpecializationIcon: Option<FileRef>,
77 pub FaceTexture: Option<FileRef>,
78 // pub FaceTextureSmall: Option<FileRef>,
79 // pub HeroCharacterArena: Option<FileRef>,
80 // pub HeroCharacterArenaMelee: Option<String>,
81 // pub HeroCharacterAdventure: Option<FileRef>,
82 // pub HeroIndividualCamera: Option<FileRef>,
83 // pub CombatVisual: Option<FileRef>,
84 pub TownType: String,
85 pub Editable: Editable,
86 // pub ArrowButtonState: u8,
87 // pub Decal: Option<FileRef>,
88 // pub Selection: Option<FileRef>,
89 // pub Trace: Option<FileRef>,
90 // pub RaceTraitIcon: Option<FileRef>,
91 // pub RaceTraitDescFileRef: Option<FileRef>,
92 pub ScenarioHero: bool,
93 // pub AdventureMusic: Option<FileRef>,
94 // pub HideInEditor: bool
95}