game_sync/ranksrv/mq/init.go

56 lines
1.3 KiB
Go

package mq
import (
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/srvlib"
"mongo.games.com/goserver/srvlib/action"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
rankproto "mongo.games.com/game/protocol/rank"
"mongo.games.com/game/ranksrv/rank"
)
// Init 初始化
func Init() {
InitHandler()
// 注册消息
mq.RegisterMessage(&mq.RegisterMessageParam{
Name: mq.DBCustomLogAward,
Data: model.CustomLogAward{},
})
}
// InitHandler 注册消息处理方法
func InitHandler() {
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.RankCustomLogAward,
Data: model.CustomLogAward{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.CustomLogAward)
if !ok {
return nil
}
rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0)
var awards []*rankproto.Item
for _, v := range log.Awards {
awards = append(awards, &rankproto.Item{
Id: v.ItemId,
N: v.ItemNum,
})
}
pack := &rankproto.UserAward{
Snid: log.SnId,
Name: log.Name,
Awards: awards,
Ts: log.EndTs,
}
action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil)
logger.Logger.Tracef("SCRoomAwardOne %v", pack)
return
},
})
}