Skip to main content

homm5_types/building/
mod.rs

1use serde::{Serialize, Deserialize};
2use strum_macros::{EnumString, Display};
3use crate::{common::{FileRef, Pos, Trigger}, Homm5Type, town::CreaturesUpgradesFilter};
4
5#[derive(Debug, Serialize, Deserialize, PartialEq, Hash, Eq, EnumString, Clone, Copy, Display)]
6#[allow(non_camel_case_types)]
7pub enum BankType {
8    BANK_NAGA_TEMPLE,
9    BANK_DEMOLISH,
10    BANK_SUNKEN_TEMPLE,
11    BANK_CRYPT,
12    BANK_UNKEMPT,
13    BANK_DRAGON_UTOPIA,
14    BANK_ELEMENTAL_STOCKPILE,
15    BANK_DWARVEN_TREASURE,
16    BANK_MAGI_VAULT,
17    BANK_PYRAMID,
18    BANK_TREANT_THICKET,
19    BANK_BLOOD_TEMPLE,
20    BANK_GARGOYLE_STONEVAULT,
21    BANK_NAMTARU_TEMPLE,
22    BANK_SNOW_APE_CAVE,
23    BANK_BTDSUNKENTEMPLE
24}
25
26#[derive(Debug, Serialize, Deserialize, PartialEq, Hash, Eq, EnumString, Clone, Copy, Display)]
27#[allow(non_camel_case_types)]
28pub enum NewBuildingType {
29    BTD_STATUE_OF_REVELATION,
30    BTD_SUN_RIDER_MONUMENT,
31    BTD_WARMEN_HOUSE,
32    BTD_KNOWLEDGE_MEGALITH,
33    BTD_DWARVEN_MINE
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37pub struct AdvMapBuilding {
38    #[serde(rename = "Pos")]
39    pub pos: Option<Pos>,
40    #[serde(rename = "Rot")]
41    pub rot: f32,
42    #[serde(rename = "Floor")]
43    pub floor: f32,
44    #[serde(rename = "Name")]
45    pub name: String,
46    #[serde(rename = "CombatScript")]
47    pub combat_script: String,
48    #[serde(rename = "pointLights")]
49    pub point_lights: String,
50    #[serde(rename = "Shared")]
51    pub shared: FileRef,
52    #[serde(rename = "PlayerID")]
53    pub player_id: String,
54    #[serde(rename = "CaptureTrigger")]
55    pub capture_trigger: Trigger,
56    #[serde(rename = "GroupID")]
57    pub group_id: u32,
58    #[serde(rename = "showCameras")]
59    pub show_cameras: String
60}
61
62impl Homm5Type for AdvMapBuilding {
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66#[allow(non_snake_case)]
67pub struct AdvMapShrine {
68    pub Pos: Option<Pos>,
69    pub Rot: f32,
70    pub Floor: u16,
71    pub Name: String,
72    pub CombatScript: String,
73    pub pointLights: String,
74    pub Shared: FileRef,
75    pub SpellID: String
76}
77
78impl Homm5Type for AdvMapShrine {
79}
80
81#[derive(Serialize, Deserialize, Debug)]
82pub struct AdvMapHillFort {
83    #[serde(rename = "Pos")]
84    pub pos: Option<Pos>,
85    #[serde(rename = "Rot")]
86    pub rot: f32,
87    #[serde(rename = "Floor")]
88    pub floor: u16,
89    #[serde(rename = "Name")]
90    pub name: String,
91    #[serde(rename = "CombatScript")]
92    pub combat_script: String,
93    #[serde(rename = "pointLights")]
94    pub point_lights: String,
95    #[serde(rename = "Shared")]
96    pub shared: FileRef,
97    #[serde(rename = "CreaturesUpgradesFilter")]
98    pub creatures_upgrades_filter: CreaturesUpgradesFilter
99}
100
101#[derive(Serialize, Deserialize, Debug, Clone)]
102pub struct AdvMapStatic {
103    #[serde(rename = "Pos")]
104    pub pos: Option<Pos>,
105    #[serde(rename = "Rot")]
106    pub rot: f32,
107    #[serde(rename = "Floor")]
108    pub floor: u16,
109    #[serde(rename = "Name")]
110    pub name: String,
111    #[serde(rename = "CombatScript")]
112    pub combat_script: String,
113    #[serde(rename = "pointLights")]
114    pub point_lights: String,
115    #[serde(rename = "Shared")]
116    pub shared: FileRef,
117    #[serde(rename = "IsRemovable")]
118    pub is_removable: bool,
119    #[serde(rename = "TerrainAligned")]
120    pub terrain_aligned: bool,
121    #[serde(rename = "ScalePercent")]
122    pub scale_percent: u16
123}