package roomrank import ( "apigame/configs/confroomrank" "apigame/service-common/svconst" "apigame/util/utstring" "apigame/util/zjson" "fmt" ) func getLockKey(gameId string, topType int, activityId int64) string { return fmt.Sprintf("%s:lock:roomrank:%s:%d:%d", svconst.REDIS_CACHEP_REFIX, gameId, topType, activityId) } // TrySettle 尝试判断结算 func TrySettle(gameId string, topType int, player *Player, config *confroomrank.ActivityConfig) (hasChange bool) { hasChange = false if player.SettleActivityId == config.Id { return } if player.ActivityId == 0 { return } if player.ActivityId == config.Id { return } fmt.Println(zjson.Str(player)) // 查找玩家所在的房间 room, hasRoom := LoadRoom(gameId, topType, player.ActivityId, player.RoomUid) if !hasRoom { return } confActivity, hasConfActivity := confroomrank.GetConfig(gameId, room.ActivityId) if !hasConfActivity { return } TrySettleRoom(gameId, room, confActivity) // 找到玩家在房间里的名次 // rankIndex = 0-49 rank = 1-50 rankIndex, rankScore := room.FindPlayer(player.Uid) if rankIndex < 0 { return } player.SettleRank = rankIndex + 1 player.SettleScore = rankScore // 设置玩家奖励等数据 hasChange = true player.SettleActivityId = config.Id confRoom, hasConfRoom := confActivity.Room[room.ConfigId] if !hasConfRoom { return } if confAward, hasConfAward := confRoom.Awards[utstring.IntToString(player.SettleRank)]; hasConfAward { player.SettleAward = confAward } if len(confRoom.SettleScores) > rankIndex { player.AddUserScore(confRoom.SettleScores[rankIndex]) player.SettleUserClass = player.UserClass } if len(confRoom.SettleUserType) > rankIndex { player.UserType = confRoom.SettleUserType[rankIndex] } return } // ChangePlayerScore 房间排行增加积分 func ChangePlayerScore(room *Room, player *Player, addScore int64) (oldScore, newScore int64) { for i := 0; i < len(room.Details.Players); i++ { p := room.Details.Players[i] if player.Uid == p.Uid { oldScore = p.Score p.Score += addScore newScore = p.Score return } } return }