1
This commit is contained in:
parent
257dde8f10
commit
dd868a958f
@ -14,6 +14,7 @@ type Team interface {
|
||||
GetTeamUuid() string
|
||||
CanJoin(string) bool
|
||||
Join(Player) bool
|
||||
GetMemberByAccountId(string) Player
|
||||
OnPlayerOffline(Player)
|
||||
OnPlayerOnline(Player)
|
||||
}
|
||||
@ -25,6 +26,7 @@ type TeamMgr interface {
|
||||
}
|
||||
|
||||
type Player interface {
|
||||
GetSocket() f5.WspCliConn
|
||||
GetAccountId() string
|
||||
GetSessionId() string
|
||||
GetName() string
|
||||
|
@ -42,6 +42,23 @@ func (this *player) init(req *pendingLoginRequest, name string, avatarUrl string
|
||||
this.headFrame = headFrame
|
||||
}
|
||||
|
||||
func (this *player) againInit(req *pendingLoginRequest, name string, avatarUrl string, heroId string,
|
||||
headFrame string){
|
||||
this.socket = req.hdr.GetSocket()
|
||||
this.accountId = req.msg.GetAccountId()
|
||||
this.sessionId = req.msg.GetSessionId()
|
||||
this.zoneId = req.msg.GetZoneId()
|
||||
this.nodeId = req.msg.GetNodeId()
|
||||
this.name = name
|
||||
this.avatarUrl = avatarUrl
|
||||
this.heroId = heroId
|
||||
this.headFrame = headFrame
|
||||
}
|
||||
|
||||
func (this *player) GetSocket() f5.WspCliConn {
|
||||
return this.socket
|
||||
}
|
||||
|
||||
func (this *player) onOffline(){
|
||||
this.socket.Reset()
|
||||
}
|
||||
|
@ -193,17 +193,34 @@ func (this *playerMgr) apiAuthCb(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.HttpCli
|
||||
GetWspListener().SendProxyMsg(pendingReq.hdr.Conn, pendingReq.hdr.SocketHandle, &rspMsg)
|
||||
return
|
||||
}
|
||||
member := team.GetMemberByAccountId(msg.GetAccountId())
|
||||
if !team.CanJoin(msg.GetAccountId()) {
|
||||
rspMsg.Errcode = proto.Int32(103)
|
||||
rspMsg.Errmsg = proto.String("join team error")
|
||||
GetWspListener().SendProxyMsg(pendingReq.hdr.Conn, pendingReq.hdr.SocketHandle, &rspMsg)
|
||||
return
|
||||
}
|
||||
|
||||
hum := new(player)
|
||||
hum.init(pendingReq, rspObj.Info.Name, rspObj.Info.HeadId, rspObj.Info.HeroId, rspObj.Info.HeadFrame)
|
||||
this.socketHash[pendingReq.hdr.GetSocket()] = hum
|
||||
team.Join(hum)
|
||||
if member != nil {
|
||||
hum := member.(*player)
|
||||
if hum.socket.IsValid() {
|
||||
delete(this.socketHash, hum.socket)
|
||||
}
|
||||
hum.againInit(pendingReq,
|
||||
rspObj.Info.Name,
|
||||
rspObj.Info.HeadId,
|
||||
rspObj.Info.HeroId,
|
||||
rspObj.Info.HeadFrame)
|
||||
this.socketHash[pendingReq.hdr.GetSocket()] = hum
|
||||
} else {
|
||||
hum := new(player)
|
||||
hum.init(pendingReq,
|
||||
rspObj.Info.Name,
|
||||
rspObj.Info.HeadId,
|
||||
rspObj.Info.HeroId,
|
||||
rspObj.Info.HeadFrame)
|
||||
this.socketHash[pendingReq.hdr.GetSocket()] = hum
|
||||
team.Join(hum)
|
||||
}
|
||||
|
||||
rspMsg.TeamUuid = proto.String(team.GetTeamUuid())
|
||||
rspMsg.ServerInfo = proto.String(mt.Table.MatchCluster.GetServerInfo())
|
||||
|
Loading…
x
Reference in New Issue
Block a user