This commit is contained in:
殷勇 2023-10-10 15:51:00 +08:00
parent 22031c44ef
commit 5ddd1c748d
6 changed files with 86 additions and 27 deletions

View File

@ -18,6 +18,7 @@ type Room interface {
type RoomMgr interface {
ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr)
RemoveRoomMember(*f5.MsgHdr)
}
type Player interface {

View File

@ -2,17 +2,17 @@ package player
import (
"cs"
"ss"
"encoding/json"
"f5"
"fmt"
"net"
"mt"
"q5"
"main/constant"
"main/common"
"github.com/golang/protobuf/proto"
"main/common"
"main/constant"
. "main/global"
"mt"
"net"
"q5"
"ss"
)
type pendingLoginRequest struct {
@ -51,12 +51,12 @@ func (this *playerMgr) Init() {
func(args q5.Args) {
conn := args[0].(net.Conn)
deletedPlayers := make(map[f5.WspCliConn]*player)
for socket, hum := range(this.socketHash) {
for socket, hum := range this.socketHash {
if conn == socket.Conn {
deletedPlayers[socket] = hum
}
}
for socket, _ := range(deletedPlayers) {
for socket, _ := range deletedPlayers {
this.onSocketClose(socket)
}
})
@ -75,7 +75,9 @@ func (this *playerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) {
rspMsg.ServerInfo = proto.String(mt.Table.HallCluster.GetServerInfo())
oldHum.reBind(hdr.GetSocket())
oldHum.SendMsg(&rspMsg)
return;
GetRoomMgr().RemoveRoomMember(hdr)
return
}
}
{
@ -87,7 +89,9 @@ func (this *playerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) {
rspMsg.ServerInfo = proto.String(mt.Table.HallCluster.GetServerInfo())
oldHum.reBind(hdr.GetSocket())
oldHum.SendMsg(&rspMsg)
return;
GetRoomMgr().RemoveRoomMember(hdr)
return
}
}
reqId := this.genSeqId()
@ -179,6 +183,7 @@ func (this *playerMgr) apiAuthCb(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.HttpCli
rspMsg.ServerInfo = proto.String(mt.Table.HallCluster.GetServerInfo())
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, &rspMsg)
GetRoomMgr().RemoveRoomMember(hdr)
}
func (this *playerMgr) reportServerState(masterIp string, masterPort int32) {

View File

@ -352,3 +352,27 @@ message SMRoomGameStartNotify
optional string team_uuid = 3; //CMJoin战斗服时用
optional string custom_room_payload = 4; //
}
//
message CMEnterObserver
{
optional string room_id = 1; //
}
message SMEnterObserver
{
optional int32 errcode = 1; // 0 1:
optional string errmsg = 2; //
}
//
message CMLeaveObserver
{
optional string room_id = 1; //
}
message SMLeaveObserver
{
optional int32 errcode = 1; // 0 1:
optional string errmsg = 2; //
}

View File

@ -15,4 +15,10 @@ const (
ROOM_MANUAL_START_TYPE
)
const (
ROOM_DISBAND_DEFAULT_REASON = iota
ROOM_DISBAND_1_REASON
ROOM_DISBAND_NO_NEXT_OWNER_REASON
)
const ROOM_MIN_START_TEAM_NUM = 2

View File

@ -110,7 +110,7 @@ func (this *room) canJoin(member common.Player, msg *cs.CMJoinRoom) bool {
if member.GetRoom() != nil {
return false
}
if int32(len(this.teamUuidHash)) >= this.config.maxTeamNum {
if this.getTeamNum() >= this.config.maxTeamNum {
return false
}
if this.getMember(member.GetAccountId()) != nil {
@ -193,7 +193,7 @@ func (this *room) CMDisbandRoom(hdr *f5.MsgHdr, msg *cs.CMDisbandRoom) {
return
}
if this.roomState == ROOM_INIT_STATE {
this.doDisband(1)
this.doDisband(ROOM_DISBAND_1_REASON)
}
hum.SendMsg(rspMsg)
}
@ -205,7 +205,7 @@ func (this *room) CMLeaveRoom(hdr *f5.MsgHdr, msg *cs.CMLeaveRoom) {
if this.isOwner(hum) {
nextOwner := this.getNextOwner()
if nextOwner == nil {
this.doDisband(1)
this.doDisband(ROOM_DISBAND_NO_NEXT_OWNER_REASON)
return
} else {
this.removeMember(this.owner.hum.GetAccountId())
@ -295,6 +295,22 @@ func (this *room) CMCloseNotify(hdr *f5.MsgHdr, msg *cs.CMCloseNotify) {
}
}
func (this *room) CMEnterObserver(hdr *f5.MsgHdr, msg *cs.CMEnterObserver) {
//hum := hdr.Context.(common.Player)
//m := this.getMember(hum.GetAccountId())
// if this.isOwner(hum) {
// t := this.owner.team
// }
}
func (this *room) CMLeaveObserver(hdr *f5.MsgHdr, msg *cs.CMLeaveObserver) {
//hum := hdr.Context.(common.Player)
//m := this.getMember(hum.GetAccountId())
// if this.isOwner(hum) {
// t := this.owner.team
// }
}
func (this *room) broadcastMsg(msg proto.Message) {
for _, m := range this.members {
if m.hum.GetRoom() == this {
@ -308,7 +324,7 @@ func (this *room) autoStart() {
if this.canStart() {
this.doStart(0)
} else {
this.doDisband(0)
this.doDisband(ROOM_DISBAND_DEFAULT_REASON)
}
}
}

View File

@ -146,3 +146,10 @@ func (this *roomMgr) CMGetCurrentRoom(hdr *f5.MsgHdr, msg *cs.CMGetCurrentRoom)
}
hum.SendMsg(rspMsg)
}
func (this *roomMgr) RemoveRoomMember(hdr *f5.MsgHdr) {
hum := GetPlayerMgr().GetPlayerBySocket(hdr.GetSocket())
if roomPtr, ok := hum.GetRoom().(*room); ok {
roomPtr.removeMember(hum.GetAccountId())
}
}