- 移除了 player.go 中的 SendPackBytes 方法 - 将 TomeeHeader 中的 CMDID 改为 CMD,类型从 uint32 改为 EnumCommandID - 删除了 controller 文件夹下的 service.go 和 login.go - 新增了 login 文件夹下的 PlayerLoginService.go - 优化了 main.go 中的 Start 函数,使用 controller.Recv 作为回调
32 lines
865 B
Go
32 lines
865 B
Go
package service
|
||
|
||
import (
|
||
"blazing/common/core"
|
||
"blazing/common/data/entity"
|
||
|
||
"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 != nil && clientdata.Player != nil {
|
||
return clientdata.Player
|
||
}
|
||
var player *entity.Player
|
||
if player1, ok := core.Mainplayer.Load((userid)); !ok {
|
||
player = entity.NewPlayer(
|
||
entity.WithUserID(userid), //注入ID
|
||
entity.WithConn(c), //注入conn
|
||
)
|
||
core.Mainplayer.Store(userid, player)
|
||
} else {
|
||
player = player1.(*entity.Player) //取成功,否则创建
|
||
}
|
||
clientdata.Player = player
|
||
return player
|
||
// return nil
|
||
}
|