homm5_types/player/
mod.rs1use serde::{Serialize, Deserialize};
2use strum_macros::{EnumString, EnumIter};
3use crate::{common::{Trigger, FileRef}, Homm5Type, town::TownType};
4
5#[derive(Debug, Serialize, Deserialize, EnumString, Clone, EnumIter, Eq, PartialEq, Hash)]
6pub enum PlayerID {
7 #[serde(rename = "PLAYER_NONE")]
8 PlayerNone,
9 #[serde(rename = "PLAYER_1")]
10 Player1,
11 #[serde(rename = "PLAYER_2")]
12 Player2,
13 #[serde(rename = "PLAYER_3")]
14 Player3,
15 #[serde(rename = "PLAYER_4")]
16 Player4,
17 #[serde(rename = "PLAYER_5")]
18 Player5,
19 #[serde(rename = "PLAYER_6")]
20 Player6,
21 #[serde(rename = "PLAYER_7")]
22 Player7,
23 #[serde(rename = "PLAYER_8")]
24 Player8,
25}
26
27#[derive(Serialize, Deserialize, Debug, Clone)]
28#[serde(rename = "Item")]
29pub struct BannedRace {
30 pub race: TownType
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone)]
34pub struct BannedHeroesRaces {
35 #[serde(rename = "Item")]
36 pub items: Option<Vec<String>>
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone)]
40pub struct AllowedHeroes {
41 #[serde(rename = "Item")]
42 pub items: Option<Vec<String>>
43}
44
45#[derive(Serialize, Deserialize, Debug, Clone)]
46pub struct TavernFilter {
47 #[serde(rename = "BannedHeroesRaces")]
48 pub banned_heroes_races: Option<BannedHeroesRaces>,
49 #[serde(rename = "BannedHeroes")]
50 pub banned_heroes: Vec<String>,
51 #[serde(rename = "AllowedHeroes")]
52 pub allowed_heroes: Option<AllowedHeroes>
53}
54
55#[derive(Serialize, Deserialize, Debug, Clone)]
56#[serde(rename = "Item")]
57pub struct Player {
58 #[serde(rename = "MainTown")]
59 pub main_town: String,
60 #[serde(rename = "MainHero")]
61 pub main_hero: String,
62 #[serde(rename = "ActivePlayer")]
63 pub active_player: bool,
64 #[serde(rename = "Team")]
65 pub team: usize,
66 #[serde(rename = "CanBeHumanPlayer")]
67 pub can_be_human_player: bool,
68 #[serde(rename = "CanBeComputerPlayer")]
69 pub can_be_computer_player: bool,
70 #[serde(rename = "Behaviour")]
71 pub behaviour: String,
72 #[serde(rename = "CaptureAbility")]
73 pub capture_ability: u8,
74 #[serde(rename = "StartHero")]
75 pub start_hero: String,
76 #[serde(rename = "HeroInTown")]
77 pub hero_in_town: bool,
78 #[serde(rename = "ReserveHeroes")]
79 pub reserve_heroes: Vec<String>,
80 #[serde(rename = "AddHeroTrigger")]
81 pub add_hero_trigger: Trigger,
82 #[serde(rename = "RemoveHeroTrigger")]
83 pub remove_hero_trigger: Trigger,
84 #[serde(rename = "VictoryMessageRef")]
85 pub victory_message_ref: FileRef,
86 #[serde(rename = "DefeatMessageRef")]
87 pub defeat_message_ref: FileRef,
88 #[serde(rename = "Race")]
89 pub race: String,
90 #[serde(rename = "Colour")]
91 pub color: String,
92 #[serde(rename = "CanBeDisabled")]
93 pub can_be_disabled: bool,
94 #[serde(rename = "Attractors")]
95 pub attractors: Vec<String>,
96 #[serde(rename = "TavernFilter")]
97 pub tavern_filter: TavernFilter,
98 #[serde(rename = "DenyFogOfWarForAllies")]
99 pub deny_fog_of_war_for_allies: Vec<String>
100}
101
102impl Homm5Type for Player {
103}