package d2dt1 // MaterialFlags represents the material flags. Lots of unknowns for now... type MaterialFlags struct { Other bool Water bool WoodObject bool InsideStone bool OutsideStone bool Dirt bool Sand bool Wood bool Lava bool Snow bool } // NewMaterialFlags represents the material flags // nolint:gomnd // Binary values func NewMaterialFlags(data uint16) MaterialFlags { return MaterialFlags{ Other: data&0x0001 == 0x0001, Water: data&0x0002 == 0x0002, WoodObject: data&0x0004 == 0x0004, InsideStone: data&0x0008 == 0x0008, OutsideStone: data&0x0010 == 0x0010, Dirt: data&0x0020 == 0x0020, Sand: data&0x0040 == 0x0040, Wood: data&0x0080 == 0x0080, Lava: data&0x0100 == 0x0100, Snow: data&0x0400 == 0x0400, } } // Encode encodes MaterialFlags back to uint16 func (m *MaterialFlags) Encode() uint16 { var b uint16 = 0x000 if m.Other { b |= 0x0001 } if m.Water { b |= 0x0002 } if m.WoodObject { b |= 0x0004 } if m.InsideStone { b |= 0x0008 } if m.OutsideStone { b |= 0x0010 } if m.Dirt { b |= 0x0020 } if m.Sand { b |= 0x0040 } if m.Wood { b |= 0x0080 } if m.Lava { b |= 0x0100 } if m.Snow { b |= 0x0400 } return b }