diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 7be14116..426a7c9d 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -914,6 +914,7 @@ func (ad *GameLogic) GetStartTime() int64 { func NotifyPlayer(Uid int, m *MsgMod.Msg) { m.To = Uid + m.HandleType = MsgMod.HANDLE_MOD_PLAYER_MSG CenterPlayerMsgHandler(m) } diff --git a/src/server/game/champship_mgr.go b/src/server/game/champship_mgr.go index 574a685b..03f765a1 100644 --- a/src/server/game/champship_mgr.go +++ b/src/server/game/champship_mgr.go @@ -249,6 +249,8 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { RankList: RL, } } + +// TODO 待优化 func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank { ChampshipData := c.getData() GroupId := ChampshipData.GroupInfo[Uid] diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index 9d077517..845096cf 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -105,6 +105,9 @@ func (m *MessageMgr) CenterRegister() { m.RegisterHandler(msg.HANDLE_MOD_USER_VAR_GET, MessageHandlerFunc(GetUserVarDataHandler)) m.RegisterHandler(msg.HANDLE_MOD_CATNIP_PARTNER, MessageHandlerFunc(CatnipPartnerHandler)) m.RegisterHandler(msg.HANDLE_MDO_CHAMPSHIP_INRANK, MessageHandlerFunc(ChampshipInRankHandler)) + m.RegisterHandler(msg.HANDLE_MOD_CHAMPSHIP_RANK_INFO, MessageHandlerFunc(ChampshipRankInfoHandler)) + m.RegisterHandler(msg.HANDLE_MOD_CHAMPSHIP_RANK_LIST, MessageHandlerFunc(ChampshipRankListHandler)) + m.RegisterHandler(msg.HANDLE_MOD_CHAMPSHIP_PRE_RANK, MessageHandlerFunc(ChampshipRankPreHandler)) } } @@ -113,6 +116,28 @@ func getMessageData() *MessageData { } // ----------------------------------- 处理函数实现 --------------------------- +func ChampshipRankPreHandler(data *msg.Msg) (interface{}, error) { + PlayerId := data.From + PreRankMsg := G_GameLogicPtr.ChampshipMgr.GetPreRankMsg(PlayerId) + ReplyPlayerMsgASync(data, PreRankMsg) + return nil, nil +} + +func ChampshipRankListHandler(data *msg.Msg) (interface{}, error) { + PlayerId := data.From + RankMsg := G_GameLogicPtr.ChampshipMgr.GetRankMsg(PlayerId) + ReplyPlayerMsgASync(data, RankMsg) + return nil, nil +} + +func ChampshipRankInfoHandler(data *msg.Msg) (interface{}, error) { + PlayerId := data.From + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(PlayerId) + MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(PlayerId) + ReplyPlayerMsgASync(data, []int{MyRank, MyPreRank}) + return nil, nil +} + func NotifyAllPlayerMsg(m *msg.Msg) { messageMgrData := getMessageData() for PlayerId, node := range messageMgrData.PlayerList { @@ -134,11 +159,8 @@ func CatnipPartnerHandler(data *msg.Msg) (interface{}, error) { return G_GameLogicPtr.VarMgr.HandleCatnipPartner(m.Uid, m.Partner, m.GameId, m.EndTime) } -func ReplyPlayerMsgSync(m *msg.Msg, reply interface{}) (interface{}, error) { - clone := m.Clone() - clone.To = m.From - clone.HandleType = msg.HANDLE_MOD_REPLY_PLAYER_MSG - clone.Extra = reply +func ReplyPlayerMsgASync(m *msg.Msg, reply interface{}) (interface{}, error) { + clone := m.Reply(reply) messageMgrData := getMessageData() if node, ok := messageMgrData.PlayerList[int64(m.From)]; ok { go SendMsgToNodeAsync(clone, node) diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index ed3ffd8a..02c7077b 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -174,6 +174,21 @@ func (m *Msg) Clone() *Msg { } } +func (m *Msg) Reply(data interface{}) *Msg { + return &Msg{ + Type: m.Type, + To: m.From, + Item: m.Item, + SendT: m.SendT, + End: m.End, + Extra: data, + Id: m.Id, + H: m.H, + UniKey: m.UniKey, + HandleType: HANDLE_MOD_REPLY_PLAYER_MSG, + } +} + func Handle(fun func(Msg) error, m Msg) error { return fun(m) } diff --git a/src/server/game/var_mgr.go b/src/server/game/var_mgr.go index deb2d655..1df2c8ca 100644 --- a/src/server/game/var_mgr.go +++ b/src/server/game/var_mgr.go @@ -231,7 +231,7 @@ func GetUserVarDataHandler(m *msg.Msg) (interface{}, error) { if userVar == nil { userVar = &VarExpireData{} } - ReplyPlayerMsgSync(m, userVar.D) + ReplyPlayerMsgASync(m, userVar.D) return userVar, nil } return nil, fmt.Errorf("invalid parameters for getting var data") @@ -288,7 +288,7 @@ func GetVarDataHandler(m *msg.Msg) (interface{}, error) { if varData == nil { varData = &VarExpireData{} } - ReplyPlayerMsgSync(m, varData.D) + ReplyPlayerMsgASync(m, varData.D) return varData, nil } return nil, fmt.Errorf("invalid parameters for getting var data")