3 #[mt_derive(to = "clt", repr = "u32", enumset)]
4 pub enum HudStyleFlag {
10 #[mt_derive(to = "clt", repr = "u8", tag = "attribute", content = "value")]
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,
50 pub world_pos: [f32; 3],
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<(), 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>(reader: &mut impl std::io::Read) -> Result<Self, DeserializeError> {
138 let len = DefCfg::read_len(reader)?;
139 let current = MtDeserialize::mt_deserialize::<DefCfg>(reader)?;
140 let modes = mt_ser::mt_deserialize_sized_seq::<DefCfg, _>(&len, reader)?.try_collect()?;
142 Ok(Self { current, modes })
149 var DefaultMinimap = []MinimapMode{
151 {Type: SurfaceMinimap, Size: 256},
152 {Type: SurfaceMinimap, Size: 128},
153 {Type: SurfaceMinimap, Size: 64},
154 {Type: RadarMinimap, Size: 512},
155 {Type: RadarMinimap, Size: 256},
156 {Type: RadarMinimap, Size: 128},