Files
bl/logic/service/service.go
昔念 aeb0d4090e refactor(pack): 重构组包逻辑
- 移除 common/core/pack.go 文件
- 在 TomeeHeader 结构体中添加 Pack 方法实现组包功能
- 更新 Player 结构体和相关方法,使用 Conn 包装 gnet.Conn
- 修改控制器和服务中的组包调用,使用新的 Pack 方法
- 优化部分代码结构,提高可维护性
2025-07-14 11:07:13 +08:00

62 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package service
import (
"blazing/common/core"
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/common/socket/handler"
"github.com/panjf2000/gnet/v2"
)
func GetPlayer(c gnet.Conn, userid uint32) *entity.Player { //TODO 这里待优化,可能存在内存泄漏问题
//检查player初始化是否为conn初始后取map防止二次连接后存在两个player
clientdata := c.Context().(*entity.ClientData)
if clientdata.GetPlayer() != nil {
return clientdata.GetPlayer()
}
var player *entity.Player
if player1, ok := core.Mainplayer.Load((userid)); ok {
player = player1.(*entity.Player) //取成功,否则创建
clientdata.SetPlayer(player)
}
return player
// return nil
}
func KickPlayer(userid uint32) { //踢出玩家
//TODO 返回错误码
//var player *entity.Player
if player1, ok := core.Mainplayer.Load((userid)); ok {
player := player1.(*entity.Player) //取成功,否则创建
head := handler.NewTomeeHeader()
head.Result = uint32(errorcode.ErrorCodes.ErrAlreadyLoggedIn)
head.UserID = userid
head.CMD = 1001
player.SendPack(core.Pack(*head, nil))
player.MainConn.MainConn.Close()
// clientdata.Player = player
}
//return player
// return nil
}
func SetPlayer(c gnet.Conn, userid uint32) *entity.Player { //TODO 这里待优化,
clientdata := c.Context().(*entity.ClientData)
player := entity.NewPlayer(
entity.WithUserID(userid), //注入ID
entity.WithConn(c), //注入conn
)
core.Mainplayer.Store(userid, player)
clientdata.SetPlayer(player) //= player
return player
// return nil
}