// Package d2tcpclientconnection provides a TCP protocol implementation of a client connection package d2tcpclientconnection import ( "encoding/json" "net" "github.com/OpenDiablo2/OpenDiablo2/d2core/d2hero" "github.com/OpenDiablo2/OpenDiablo2/d2networking/d2client/d2clientconnectiontype" "github.com/OpenDiablo2/OpenDiablo2/d2networking/d2netpacket" ) // TCPClientConnection represents a client connection over TCP type TCPClientConnection struct { id string tcpConnection net.Conn playerState *d2hero.HeroState } // CreateTCPClientConnection creates a new tcp client connection instance func CreateTCPClientConnection(tcpConnection net.Conn, id string) *TCPClientConnection { return &TCPClientConnection{ tcpConnection: tcpConnection, id: id, } } // GetUniqueID returns the unique ID for the tcp client connection func (t TCPClientConnection) GetUniqueID() string { return t.id } // SendPacketToClient marshals and sends (writes) NetPackets func (t *TCPClientConnection) SendPacketToClient(p d2netpacket.NetPacket) error { encoder := json.NewEncoder(t.tcpConnection) err := encoder.Encode(p) if err != nil { return err } return nil } // SetPlayerState sets the game client player state func (t *TCPClientConnection) SetPlayerState(playerState *d2hero.HeroState) { t.playerState = playerState } // GetPlayerState gets the game client player state func (t *TCPClientConnection) GetPlayerState() *d2hero.HeroState { return t.playerState } // GetConnectionType returns an enum representing the connection type. // See: d2clientconnectiontype. func (t TCPClientConnection) GetConnectionType() d2clientconnectiontype.ClientConnectionType { return d2clientconnectiontype.LANClient }