logic.go 1.19 KB
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
}