diff --git a/worldsrv/action_hundredscene.go b/worldsrv/action_hundredscene.go index e8a25de..5bdca82 100644 --- a/worldsrv/action_hundredscene.go +++ b/worldsrv/action_hundredscene.go @@ -8,6 +8,7 @@ import ( "mongo.games.com/game/srvdata" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" + "time" ) type CSHundredSceneGetPlayerNumPacketFactory struct { @@ -210,38 +211,38 @@ func (this *CSGameObservePacketFactory) CreatePacket() interface{} { func (this *CSGameObserveHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGameObserveHandler Process recv ", data) - if _, ok := data.(*gamehall.CSGameObserve); ok { + if msg, ok := data.(*gamehall.CSGameObserve); ok { p := PlayerMgrSington.GetPlayer(sid) if p != nil { - //if msg.GetStartOrEnd() { - // gameStateMgr.PlayerRegiste(p, msg.GetGameId(), msg.GetStartOrEnd()) - // pack := &gamehall.SCGameSubList{} - // statePack := &gamehall.SCGameState{} - // scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId()) - // for _, value := range scenes { - // pack.List = append(pack.List, &gamehall.GameSubRecord{ - // GameFreeId: proto.Int32(value.dbGameFree.GetId()), - // NewLog: proto.Int32(-1), - // LogCnt: proto.Int(len(value.GameLog)), - // TotleLog: value.GameLog, - // }) - // leftTime := int64(value.StateSec) - (time.Now().Unix() - value.StateTs) - // if leftTime < 0 { - // leftTime = 0 - // } - // statePack.List = append(statePack.List, &gamehall.GameState{ - // GameFreeId: proto.Int32(value.dbGameFree.GetId()), - // Ts: proto.Int64(leftTime), - // Sec: proto.Int32(value.StateSec), - // }) - // } - // p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESUBLIST), pack) - // logger.Logger.Trace("SCGameSubList:", pack) - // p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESTATE), statePack) - // logger.Logger.Trace("SCGameState:", statePack) - //} else { - // gameStateMgr.PlayerClear(p) - //} + if msg.GetStartOrEnd() { + gameStateMgr.PlayerRegiste(p, msg.GetGameId(), msg.GetStartOrEnd()) + pack := &gamehall.SCGameSubList{} + statePack := &gamehall.SCGameState{} + scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId()) + for _, value := range scenes { + pack.List = append(pack.List, &gamehall.GameSubRecord{ + GameFreeId: proto.Int32(value.dbGameFree.GetId()), + NewLog: proto.Int32(-1), + LogCnt: proto.Int(len(value.GameLog)), + TotleLog: value.GameLog, + }) + leftTime := int64(value.StateSec) - (time.Now().Unix() - value.StateTs) + if leftTime < 0 { + leftTime = 0 + } + statePack.List = append(statePack.List, &gamehall.GameState{ + GameFreeId: proto.Int32(value.dbGameFree.GetId()), + Ts: proto.Int64(leftTime), + Sec: proto.Int32(value.StateSec), + }) + } + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESUBLIST), pack) + logger.Logger.Trace("SCGameSubList:", pack) + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESTATE), statePack) + logger.Logger.Trace("SCGameState:", statePack) + } else { + gameStateMgr.PlayerClear(p) + } } } return nil diff --git a/worldsrv/tmmatch.go b/worldsrv/tmmatch.go index 5442439..8eeddc7 100644 --- a/worldsrv/tmmatch.go +++ b/worldsrv/tmmatch.go @@ -177,7 +177,16 @@ func (tm *TmMatch) CreateRobotGrades(round int) { } } sort.Slice(tm.robotGrades[round-1], func(i, j int) bool { - return tm.robotGrades[round-1][i].grade > tm.robotGrades[round-1][j].grade + if tm.robotGrades[round-1][i].copySnid > 0 && tm.robotGrades[round-1][j].copySnid == 0 { + return true + } + if tm.robotGrades[round-1][i].copySnid > 0 && tm.robotGrades[round-1][j].copySnid > 0 { + return tm.robotGrades[round-1][i].grade > tm.robotGrades[round-1][j].grade + } + if tm.robotGrades[round-1][i].copySnid == 0 && tm.robotGrades[round-1][j].copySnid > 0 { + return false + } + return false }) // 当前轮数据 @@ -291,11 +300,11 @@ func (tm *TmMatch) RobotGradesDecline(round int) { } } } - logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round) - for i, infos := range tm.robotGrades { - logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i) - for _, info := range infos { - logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId) - } - } + //logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round) + //for i, infos := range tm.robotGrades { + // logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i) + // for _, info := range infos { + // logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId) + // } + //} } diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index ea0527f..cb12023 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -137,9 +137,9 @@ func (this *Tournament) checkData(cfg *webapiproto.GameMatchDate) bool { if num%4 != 0 { //必须是4的整倍数 return false } - if num <= cfg.MatchPromotion[i+1] { //必须递减 - return false - } + //if num <= cfg.MatchPromotion[i+1] { //必须递减 + // return false + //} } } @@ -959,7 +959,9 @@ func (this *Tournament) NextRoundStartSingle(sortId int64, playerCtx *PlayerMatc } if promotionNum != 1 { - arr = arr[:promotionNum] + if int(promotionNum) < len(arr) { + arr = arr[:promotionNum] + } playerCtx.tm.robotGrades[int(round)] = arr }