13 const genericCAO aoType = 101
15 type AOInitData struct {
30 // See (de)serialize.fmt.
38 MaxHP uint16 // Player only.
40 Weight float32 // deprecated
46 SpritesheetSize [2]int16 // in sprites.
47 SpritePos [2]int16 // in sprite sheet.
50 RotateSpeed float32 // in radians per second.
56 FaceRotateDirOff float32 // in degrees.
59 NametagColor color.NRGBA
60 FaceRotateSpeed float32 // in degrees per second.
64 MaxBreath uint16 // Player only.
65 EyeHeight float32 // Player only.
66 ZoomFOV float32 // in degrees. Player only.
68 DmgTextureMod Texture // suffix
81 UpdateInterval float32
84 type AOSprite struct {
98 type AOBonePos struct {
103 type AOAttach struct {
111 type AOPhysOverride struct {
112 Walk, Jump, Gravity float32
115 NoSneak, NoSneakGlitch, OldSneak bool
118 type AOCmdProps struct {
122 type AOCmdPos struct {
126 type AOCmdTextureMod struct {
127 Mod Texture // suffix
130 type AOCmdSprite struct {
134 type AOCmdHP struct {
138 type AOCmdArmorGroups struct {
142 type AOCmdAnim struct {
146 type AOCmdBonePos struct {
151 type AOCmdAttach struct {
155 type AOCmdPhysOverride struct {
159 type AOCmdSpawnInfant struct {
163 //mt:const genericCAO
166 type AOCmdAnimSpeed struct {
170 //go:generate ./cmdno.sh aocmds AOCmd ao uint8 AOMsg newAOMsg
172 type AOMsg interface {
176 func writeAOMsg(w io.Writer, msg AOMsg) error {
177 if _, err := w.Write([]byte{msg.aoCmdNo()}); err != nil {
180 return serialize(w, msg)
183 func readAOMsg(r io.Reader) (AOMsg, error) {
184 buf := make([]byte, 1)
185 if _, err := io.ReadFull(r, buf); err != nil {
188 newCmd, ok := newAOMsg[buf[0]]
190 return nil, fmt.Errorf("unsupported ao msg: %d", buf[0])
193 return msg, deserialize(r, msg)
196 type IDAOMsg struct {