homm5_types/building/
mod.rs1use 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}