Skip to content

Commit

Permalink
Feat: SendPacket(peer, gameMessageType uint32, strData string), and S…
Browse files Browse the repository at this point in the history
…endRawPacket(peer, gameMessageType uint32, data []byte)
  • Loading branch information
eikarna committed May 25, 2024
1 parent 3c2c51c commit bb4394b
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package enet
// #include <enet/enet.h>
import "C"
import (
"encoding/binary"
"errors"
"unsafe"
)
Expand Down Expand Up @@ -75,3 +76,42 @@ func NewPacket(data []byte, flags PacketFlags) (Packet, error) {
cPacket: packet,
}, nil
}

func GetMessageFromPacket(packet Packet) string {
gamePacket := packet.GetData()
copy(gamePacket[len(gamePacket)-1:], []byte{0})
return string(gamePacket[4:])
}

func SendPacket(peer Peer, gameMessageType int32, strData string) error {
packetSize := 5 + len(strData)
netPacket := make([]byte, packetSize)

binary.LittleEndian.PutUint32(netPacket[0:4], uint32(gameMessageType))
if strData != "" {
copy(netPacket[4:4+len(strData)], []byte(strData))
}
netPacket[4+len(strData)] = 0
packet, err := NewPacket(netPacket, PacketFlagReliable)
if err != nil {
return errors.New("unable to create packet on SendPacket.")
}
peer.SendPacket(packet, 0)
return nil
}

func SendRawPacket(peer Peer, gameMessageType int32, data []byte) error {
packetSize := 5 + len(data)
netPacket := make([]byte, packetSize)
binary.LittleEndian.PutUint32(netPacket[0:4], uint32(gameMessageType))
if data != nil {
copy(netPacket[4:4+len(data)], data)
}
netPacket[4+len(data)] = 0
packet, err := NewPacket(netPacket, PacketFlagReliable)
if err != nil {
return errors.New("unable to create packet on SendRawPacket.")
}
peer.SendPacket(packet, 0)
return nil
}

0 comments on commit bb4394b

Please sign in to comment.