diff --git a/service/roomrank/dto-player.go b/service/roomrank/dto-player.go index 140d138..e40bd82 100644 --- a/service/roomrank/dto-player.go +++ b/service/roomrank/dto-player.go @@ -57,10 +57,10 @@ func (d *Player) Init(uid int64, topType int) { d.CreateTime = lxtime.NowUninx() } -func (d *Player) AddUserScore(count int) { +func (d *Player) AddUserScore(count int, userClassMax int) { d.UserScore += count userScoreMin := UserClassMin * 10 - userScoreMax := UserClassMax*10 + 20 + userScoreMax := userClassMax*10 + 20 if d.UserScore < userScoreMin { d.UserScore = userScoreMin } @@ -71,8 +71,8 @@ func (d *Player) AddUserScore(count int) { if d.UserClass < UserClassMin { d.UserClass = UserClassMin } - if d.UserClass > UserClassMax { - d.UserClass = UserClassMax + if d.UserClass > userClassMax { + d.UserClass = userClassMax } } diff --git a/service/roomrank/logic.go b/service/roomrank/logic.go index 4f36459..1d18054 100644 --- a/service/roomrank/logic.go +++ b/service/roomrank/logic.go @@ -42,6 +42,19 @@ func GetTimeEnd(activityTime int64, releaseTime string) time.Time { return dt } +func GetUserClassMax(config *confroomrank.ActivityConfig) int { + c := 0 + for _, roomConfig := range config.Room { + if roomConfig.UserClass > c { + c = roomConfig.UserClass + } + } + if c < 1 { + c = 1 + } + return c +} + // TrySettle 尝试判断结算 func TrySettle(gameId string, topType int, player *Player) (hasChange bool) { hasChange = false @@ -95,7 +108,8 @@ func TrySettle(gameId string, topType int, player *Player) (hasChange bool) { player.SettleAward = confAward } if len(confRoom.SettleScores) > rankIndex { - player.AddUserScore(confRoom.SettleScores[rankIndex]) + userClassMax := GetUserClassMax(confActivity) + player.AddUserScore(confRoom.SettleScores[rankIndex], userClassMax) player.SettleUserClass = player.UserClass } if len(confRoom.SettleUserType) > rankIndex { -- libgit2 0.21.0