package roomrank import ( "apigame/configs/confroomrank" ) // TrySettle 尝试判断结算 func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfig) (hasChange bool) { hasChange = false if player.SettleHas { return } if player.ActivityId == 0 { return } if player.ActivityId == config.Id { return } // 查找玩家所在的房间 room, hasRoom := LoadRoom(gameId, player.ActivityId, player.RoomUid) if !hasRoom { return } // 找到玩家在房间里的名次 rankIndex := room.FindPlayer(player.Uid) if rankIndex < 0 { return } confActivity, hasConfActivity := confroomrank.GetConfig(gameId, room.ActivityId) if !hasConfActivity { return } TrySettleRoom(gameId, room, confActivity) // 设置玩家奖励等数据 hasChange = true player.SettleHas = true confRoom, hasConfRoom := confActivity.Room[room.ConfigId] if !hasConfRoom { return } if len(confRoom.Awards) > rankIndex { player.SettleAward = confRoom.Awards[rankIndex] } if len(confRoom.SettleScores) > rankIndex { player.AddUserScore(confRoom.SettleScores[rankIndex]) } if len(confRoom.SettleUserType) > rankIndex { player.UserType = confRoom.SettleUserType[rankIndex] } return }