big revamp

This commit is contained in:
shoopea
2021-11-06 23:33:16 +08:00
parent 90e584fcff
commit 5fad9f085e
11 changed files with 1245 additions and 351 deletions

136
packet.go
View File

@@ -109,6 +109,11 @@ type PacketAdminUpdateFrequency struct {
UpdateFrequency uint16
}
type PacketAdminPoll struct {
Packet
UpdateType uint8
UpdateID uint32
}
type PacketServerDate struct {
Packet
Date uint32
@@ -134,12 +139,52 @@ type PacketServerClientInfo struct {
CompanyID uint8
}
type PacketServerClientUpdate struct {
Packet
ClientID uint32
Name string
CompanyID uint8
}
type PacketServerClientError struct {
Packet
ClientID uint32
ErrorID uint8
}
type PacketServerCompanyNew struct {
Packet
CompanyID uint8
}
type PacketServerCompanyInfo struct {
Packet
CompanyID uint8
Name string
President string
Color uint8
Inauguration uint32
AI bool
Protected bool
Bankruptcies uint8
}
type PacketServerCompanyUpdate struct {
Packet
CompanyID uint8
Name string
President string
Color uint8
Protected bool
Bankruptcies uint8
}
type PacketServerCompanyRemove struct {
Packet
CompanyID uint8
Reason uint8
}
type PacketServerChat struct {
Packet
ActionID uint8
@@ -206,6 +251,18 @@ func (p *PacketAdminUpdateFrequency) Bytes() []byte {
return buf.Bytes()
}
func (p *PacketAdminPoll) Bytes() []byte {
buf := new(bytes.Buffer)
p.PLength = 8
binary.Write(buf, binary.LittleEndian, p.PLength)
binary.Write(buf, binary.LittleEndian, p.PType)
binary.Write(buf, binary.LittleEndian, p.UpdateType)
binary.Write(buf, binary.LittleEndian, p.UpdateID)
return buf.Bytes()
}
func (p *PacketServerWelcome) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
@@ -285,6 +342,18 @@ func (p *PacketServerClientInfo) Read(b []byte) {
p.CompanyID = uint8(c)
}
func (p *PacketServerClientUpdate) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
bs := make([]byte, 4)
_, _ = r.Read(bs)
p.ClientID = binary.LittleEndian.Uint32(bs[0:])
p.Name, _ = r.ReadString(0)
p.Name = p.Name[:len(p.Name)-1]
c, _ := r.ReadByte()
p.CompanyID = uint8(c)
}
func (p *PacketServerClientError) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
@@ -303,6 +372,73 @@ func (p *PacketServerClientQuit) Read(b []byte) {
p.ClientID = binary.LittleEndian.Uint32(bs[0:])
}
func (p *PacketServerCompanyNew) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
c, _ := r.ReadByte()
p.CompanyID = uint8(c)
}
func (p *PacketServerCompanyInfo) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
c, _ := r.ReadByte()
p.CompanyID = uint8(c)
p.Name, _ = r.ReadString(0)
p.Name = p.Name[:len(p.Name)-1]
p.President, _ = r.ReadString(0)
p.President = p.Name[:len(p.Name)-1]
c, _ = r.ReadByte()
p.Color = uint8(c)
c, _ = r.ReadByte()
if c > 0 {
p.Protected = true
} else {
p.Protected = false
}
bs := make([]byte, 4)
_, _ = r.Read(bs)
p.Inauguration = binary.LittleEndian.Uint32(bs[0:])
c, _ = r.ReadByte()
if c > 0 {
p.AI = true
} else {
p.AI = false
}
c, _ = r.ReadByte()
p.Bankruptcies = uint8(c)
}
func (p *PacketServerCompanyUpdate) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
c, _ := r.ReadByte()
p.CompanyID = uint8(c)
p.Name, _ = r.ReadString(0)
p.Name = p.Name[:len(p.Name)-1]
p.President, _ = r.ReadString(0)
p.President = p.Name[:len(p.Name)-1]
c, _ = r.ReadByte()
p.Color = uint8(c)
c, _ = r.ReadByte()
if c > 0 {
p.Protected = true
} else {
p.Protected = false
}
c, _ = r.ReadByte()
p.Bankruptcies = uint8(c)
}
func (p *PacketServerCompanyRemove) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)
c, _ := r.ReadByte()
p.CompanyID = uint8(c)
c, _ = r.ReadByte()
p.Reason = uint8(c)
}
func (p *PacketServerChat) Read(b []byte) {
r := bufio.NewReader(bytes.NewReader(b))
r.Discard(3)