package main import ( "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/game/common" "mongo.games.com/game/protocol/tournament" ) func CSTMInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSTMInfoHandler ", data) _, ok := data.(*tournament.CSTMInfo) if !ok { return nil } p := PlayerMgrSington.GetPlayer(sid) if p == nil { logger.Logger.Warnf("CSTMInfo p == nil.") return nil } pack := TournamentMgr.GetSCTMInfosPack(p.Platform, p.AppChannel) p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCTMInfos), pack) logger.Logger.Trace("SCTMInfos ", pack) return nil } func CSSignRace(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSSignRaceHandler ", data) msg, ok := data.(*tournament.CSSignRace) if !ok { return nil } p := PlayerMgrSington.GetPlayer(sid) if p == nil { logger.Logger.Warnf("CSSignRace p == nil.") return nil } if p.scene != nil { logger.Logger.Warnf("CSSignRace p.scene != nil.") return nil } if p.IsRob { logger.Logger.Warnf("CSSignRace p.IsRob.") return nil } platform := p.Platform tmId := msg.TMId pack := &tournament.SCSignRace{} switch msg.GetOpCode() { case 0: // 报名 ok, code := TournamentMgr.SignUp(tmId, p) if !ok { logger.Logger.Infof("player(%v) match(%v) SignUp is fail.", p.SnId, tmId) pack.RetCode = code //0成功 1重复报名 2比赛没有开启 3道具不足 4不在报名时间段 5金币不足 6钻石不足 } logger.Logger.Infof("player(%v) match(%v) SignUp is ok.", p.SnId, tmId) if code == int32(tournament.SignRaceCode_OPRC_Close) || code == int32(tournament.SignRaceCode_OPRC_Time) { TournamentMgr.CancelSignUpAll(platform, tmId) } waitStart := TournamentMgr.playerWaitStart[p.SnId] if pack.RetCode == 0 && waitStart != 0 { pack.WaitStartTime = waitStart } signSucc := p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCSignRace), pack) logger.Logger.Trace("SCSignRace ", pack) // 检查是否可以开始比赛(关闭机器人时,比赛开赛) if code == 0 && signSucc && !TournamentMgr.IsUseRobot(platform, tmId, 0) { if TournamentMgr.CanStart(platform, tmId) { TournamentMgr.Start(platform, tmId) } } default: // 取消报名 if TournamentMgr.IsMatching(p.SnId) { logger.Logger.Warnf("player(%v) IsMatching.", p.SnId) } else { //取消报名 TournamentMgr.CancelSignUp(platform, tmId, p.SnId) } return nil } return nil } func init() { // 比赛信息列表 common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSTMInfo), tournament.CSTMInfo{}, CSTMInfo) // 比赛报名 common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSSignRace), tournament.CSSignRace{}, CSSignRace) }