比赛场轮次淘汰允许不淘汰人员

This commit is contained in:
sk 2024-08-10 11:49:07 +08:00
parent cdc3b3d3da
commit 7f75f9a0a4
3 changed files with 54 additions and 42 deletions

View File

@ -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

View File

@ -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)
// }
//}
}

View File

@ -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
}