diff --git a/server/hallserver/app/app.go b/server/hallserver/app/app.go index 0cc7364e..42008aac 100644 --- a/server/hallserver/app/app.go +++ b/server/hallserver/app/app.go @@ -62,6 +62,9 @@ func (this *app) Update() { case constant.PLAYER_MGR_HANDLER_ID: case constant.PLAYER_HANDLER_ID: GetPlayerMgr().ProcessCMMsg(handler, hdr) + case constant.ROOM_HANDLER_ID: + case constant.ROOM_MGR_HANDLER_ID: + GetRoomMgr().ProcessCMMsg(handler, hdr) } } } diff --git a/server/hallserver/common/types.go b/server/hallserver/common/types.go index b4df104f..2c5fb493 100644 --- a/server/hallserver/common/types.go +++ b/server/hallserver/common/types.go @@ -15,7 +15,7 @@ type Room interface { } type RoomMgr interface { - + ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr) } type Player interface { @@ -23,6 +23,8 @@ type Player interface { type PlayerMgr interface { ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr) + GetPlayerBySocket(f5.WspCliConn) Player + GetPlayerByAccountId(string) Player } type WspListener interface { diff --git a/server/hallserver/constant/constant.go b/server/hallserver/constant/constant.go index c1726233..8ef20f2a 100644 --- a/server/hallserver/constant/constant.go +++ b/server/hallserver/constant/constant.go @@ -3,6 +3,8 @@ package constant const ( PLAYER_MGR_HANDLER_ID = iota PLAYER_HANDLER_ID + ROOM_HANDLER_ID + ROOM_MGR_HANDLER_ID WSP_LISTENER_HANDLER_ID ) diff --git a/server/hallserver/listener/handlermgr.go b/server/hallserver/listener/handlermgr.go index d7de2c51..fb3f5e96 100644 --- a/server/hallserver/listener/handlermgr.go +++ b/server/hallserver/listener/handlermgr.go @@ -18,15 +18,16 @@ func (this *HandlerMgr) Init() { cs.RegHandlerId(int(cs.CMMessageIdE__CMLogin), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMReconnect), constant.PLAYER_MGR_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMCreateRoom), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMRoomList), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMJoinRoom), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMDisbandRoom), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMLeaveRoom), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMModifyRoom), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMStartGame), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMSetPrepare), constant.PLAYER_HANDLER_ID) - cs.RegHandlerId(int(cs.CMMessageIdE__CMKickout), constant.PLAYER_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMCreateRoom), constant.ROOM_MGR_HANDLER_ID) + + cs.RegHandlerId(int(cs.CMMessageIdE__CMRoomList), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMJoinRoom), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMDisbandRoom), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMLeaveRoom), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMModifyRoom), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMStartGame), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMSetPrepare), constant.ROOM_HANDLER_ID) + cs.RegHandlerId(int(cs.CMMessageIdE__CMKickout), constant.ROOM_HANDLER_ID) } func (this *HandlerMgr) UnInit() { diff --git a/server/hallserver/player/playermgr.go b/server/hallserver/player/playermgr.go index 72f1731c..364860ca 100644 --- a/server/hallserver/player/playermgr.go +++ b/server/hallserver/player/playermgr.go @@ -9,6 +9,7 @@ import ( "mt" "q5" "main/constant" + "main/common" "github.com/golang/protobuf/proto" . "main/global" ) @@ -51,7 +52,7 @@ func (this *playerMgr) UnInit() { func (this *playerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) { { - oldplayer := this.getPlayerBySocket(hdr.GetSocket()) + oldplayer := this.internalGetPlayerBySocket(hdr.GetSocket()) if oldplayer != nil { rspMsg := cs.SMLogin{} rspMsg.Errcode = proto.Int32(0) @@ -61,7 +62,7 @@ func (this *playerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) { } } { - oldplayer := this.getPlayerByAccountId(msg.GetAccountId()) + oldplayer := this.internalGetPlayerByAccountId(msg.GetAccountId()) if oldplayer != nil { rspMsg := cs.SMLogin{} rspMsg.Errcode = proto.Int32(0) @@ -179,7 +180,11 @@ func (this *playerMgr) reportServerState(masterIp string, masterPort int32) { }) } -func (this *playerMgr) getPlayerByAccountId(accountId string) *player { +func (this *playerMgr) GetPlayerByAccountId(accountId string) common.Player { + return this.internalGetPlayerByAccountId(accountId) +} + +func (this *playerMgr) internalGetPlayerByAccountId(accountId string) *player { player, ok := this.accountIdHash[accountId] if ok { return player @@ -187,7 +192,11 @@ func (this *playerMgr) getPlayerByAccountId(accountId string) *player { return nil } -func (this *playerMgr) getPlayerBySocket(socket f5.WspCliConn) *player { +func (this *playerMgr) GetPlayerBySocket(socket f5.WspCliConn) common.Player { + return this.internalGetPlayerBySocket(socket) +} + +func (this *playerMgr) internalGetPlayerBySocket(socket f5.WspCliConn) *player { player, ok := this.socketHash[socket] if ok { return player @@ -200,7 +209,7 @@ func (this* playerMgr) ProcessCMMsg(handler *cs.CsNetMsgHandler, hdr *f5.MsgHdr) case constant.PLAYER_MGR_HANDLER_ID: cs.DispatchMsg(handler, hdr, this) case constant.PLAYER_HANDLER_ID: - player := this.getPlayerBySocket(hdr.GetSocket()) + player := this.internalGetPlayerBySocket(hdr.GetSocket()) if player != nil { cs.DispatchMsg(handler, hdr, player) } @@ -222,7 +231,7 @@ func (this *playerMgr) genSeqId() *int64 { } func (this *playerMgr) SS_WSP_SocketDisconnect(hdr *f5.MsgHdr, msg *ss.SS_WSP_SocketDisconnect) { - hum := this.getPlayerBySocket(hdr.GetSocket()) + hum := this.internalGetPlayerBySocket(hdr.GetSocket()) if hum == nil { return } diff --git a/server/hallserver/proto/cs_proto.proto b/server/hallserver/proto/cs_proto.proto index 47a5d9ef..adcdc096 100644 --- a/server/hallserver/proto/cs_proto.proto +++ b/server/hallserver/proto/cs_proto.proto @@ -193,13 +193,14 @@ message SMCreateRoom //获取房间列表 message CMRoomList { - optional int32 page = 1; // + optional int32 page = 1; //第几页 + optional int32 room_id = 2; //房间id } message SMRoomList { optional MFPagination Pagination = 1; //分页信息 - repeated MFRoom rows = 2; // + repeated MFRoom rows = 2; //数据 } //加入房间 diff --git a/server/hallserver/room/roommgr.go b/server/hallserver/room/roommgr.go index d87d2ca9..f35fb643 100644 --- a/server/hallserver/room/roommgr.go +++ b/server/hallserver/room/roommgr.go @@ -2,6 +2,9 @@ package room import ( "cs" + "f5" + "main/constant" + . "main/global" ) type roomMgr struct { @@ -17,3 +20,14 @@ func (this *roomMgr) Init() { func (this *roomMgr) UnInit() { } + +func (this *roomMgr) ProcessCMMsg(handler *cs.CsNetMsgHandler, hdr *f5.MsgHdr) { + switch handler.HandlerId { + case constant.PLAYER_MGR_HANDLER_ID: + cs.DispatchMsg(handler, hdr, this) + case constant.PLAYER_HANDLER_ID: + player := GetPlayerMgr().GetPlayerBySocket(hdr.GetSocket()) + if player != nil { + } + } +}