103 lines
2.8 KiB
Go
103 lines
2.8 KiB
Go
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)
|
|
}
|