```
refactor(socket): 更新广播和退出逻辑中的类型引用 更新socket服务器中广播功能和退出功能的代码, 将player.Player类型替换为player.ClientData类型, 并相应调整方法调用以适应新的数据结构。 feat(map): 添加LoadOrStore方法支持 在并发安全的swiss map中新增LoadOrStore方法, 提供原子性的加载或存储功能,增强map的操作能力。 refactor(login): 优化登录逻辑中的玩家获取方式 重构登录控制器中获取玩家对象的方式, 直接从
This commit is contained in:
@@ -1,37 +1,10 @@
|
||||
package player
|
||||
|
||||
import (
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
func GetPlayer(c gnet.Conn, userid uint32) *Player { //TODO 这里待优化,可能存在内存泄漏问题
|
||||
|
||||
//检查player初始化,是否为conn初始后取map,防止二次连接后存在两个player
|
||||
|
||||
clientdata, ok := c.Context().(*ClientData)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
if clientdata.Player == nil {
|
||||
|
||||
clientdata.Player = NewPlayer(c)
|
||||
|
||||
}
|
||||
|
||||
// gff := socket.NewClientData()
|
||||
|
||||
// gff.Player = clientdata.Player
|
||||
// c.MainConn.SetContext(gff)
|
||||
Mainplayer.Store(userid, clientdata.Player)
|
||||
|
||||
return clientdata.Player
|
||||
// return nil
|
||||
}
|
||||
func KickPlayer(userid uint32) error { //踢出玩家
|
||||
//TODO 返回错误码
|
||||
//var player *entity.Player
|
||||
if player1, ok := Mainplayer.Load(userid); ok {
|
||||
player1.Kick(false)
|
||||
player1.Player.Kick(false)
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user