3 #[mt_derive(to = "clt", repr = "u32", enumset)]
4 pub enum HudStyleFlag {
10 #[mt_derive(to = "clt", repr = "u8", tag = "attribute", content = "value")]
21 WorldPos(Point3<f32>),
23 ZIndex(i32), // this is i16 in HudAdd, minetest is weird
25 Style(EnumSet<HudStyleFlag>),
28 #[mt_derive(to = "clt", repr = "u8")]
38 #[mt_derive(to = "clt")]
39 pub struct HudElement {
40 pub hud_type: HudType,
43 pub scale: Vector2<f32>,
48 pub align: Vector2<f32>,
49 pub offset: Vector2<f32>,
50 pub world_pos: Point3<f32>,
51 pub size: Vector2<i32>,
54 pub style: EnumSet<HudStyleFlag>,
58 pub fn apply_change(&mut self, change: HudChange) {
62 Pos(v) => self.pos = v,
63 Name(v) => self.name = v,
64 Scale(v) => self.scale = v,
65 Text(v) => self.text = v,
66 Number(v) => self.number = v,
67 Item(v) => self.item = v,
68 Dir(v) => self.dir = v,
69 Align(v) => self.align = v,
70 Offset(v) => self.offset = v,
71 WorldPos(v) => self.world_pos = v,
72 Size(v) => self.size = v,
73 ZIndex(v) => self.z_index = v.try_into().unwrap_or(0),
74 Text2(v) => self.text_2 = v,
75 Style(v) => self.style = v,
80 #[mt_derive(to = "clt", repr = "u32", enumset)]
91 #[mt_derive(to = "clt", repr = "u16", tag = "attribute", content = "value")]
92 pub enum HotbarParam {
93 Size(#[mt(const_before = "4u16")] u32) = 1,
95 SelectionImage(String),
98 #[mt_derive(to = "clt", repr = "u16")]
99 pub enum MinimapType {
106 #[mt_derive(to = "clt")]
107 pub struct MinimapMode {
108 pub minimap_type: MinimapType,
115 #[mt_derive(to = "clt", custom)]
116 pub struct MinimapModesPkt {
118 modes: Vec<MinimapMode>,
121 #[cfg(feature = "server")]
122 impl MtSerialize for MinimapModesPkt {
123 fn mt_serialize<C: MtCfg>(
125 writer: &mut impl std::io::Write,
126 ) -> Result<(), mt_ser::SerializeError> {
127 DefCfg::write_len(self.modes.len(), writer)?;
128 self.current.mt_serialize::<DefCfg>(writer)?;
129 self.modes.mt_serialize::<()>(writer)?;
135 #[cfg(feature = "client")]
136 impl MtDeserialize for MinimapModesPkt {
137 fn mt_deserialize<C: MtCfg>(
138 reader: &mut impl std::io::Read,
139 ) -> Result<Self, mt_ser::DeserializeError> {
140 let len = DefCfg::read_len(reader)?;
141 let current = MtDeserialize::mt_deserialize::<DefCfg>(reader)?;
142 let modes = mt_ser::mt_deserialize_sized_seq::<DefCfg, _>(&len, reader)?.try_collect()?;
144 Ok(Self { current, modes })
151 var DefaultMinimap = []MinimapMode{
153 {Type: SurfaceMinimap, Size: 256},
154 {Type: SurfaceMinimap, Size: 128},
155 {Type: SurfaceMinimap, Size: 64},
156 {Type: RadarMinimap, Size: 512},
157 {Type: RadarMinimap, Size: 256},
158 {Type: RadarMinimap, Size: 128},