package roomrank import ( "apigame/configs/confroomrank" "apigame/models" "apigame/service-common/svcommon" "apigame/service-common/svmysql" "apigame/util/util-lx/lxalilog" "apigame/util/util-lx/lxtime" "math/rand" ) // SavePlayer 存储数据 func SavePlayer(gameId string, player *Player) { player.UpdateTime = lxtime.NowUninx() err := svmysql.Save(player, gameId) if err != nil { lxalilog.Errors(err, "roomrank.SavePlayer error", gameId, player.Uid, player.ActivityId) return } } // LoadPlayer 获取数据 外部接口 func LoadPlayer(gameId string, playerUid int64) (player *Player) { player = NewPlayer(playerUid) has, err := svmysql.First(player, gameId) if has { } else { player.Init(playerUid) err = svmysql.Create(player, gameId) if err != nil { lxalilog.Errors(err, "roomrank._LoadPlayer Create error", gameId, player.Uid, player.ActivityId) return } } return } // NewRoomRobot 新建房间机器人 func NewRoomRobot(gameId string, robotConfigId int, userType int) *RoomPlayer { d := &RoomPlayer{ Uid: rand.Int63(), Name: svcommon.GetName(gameId), Icon: svcommon.GetIcon(gameId), Score: 0, JoinTime: lxtime.NowUninx(), UserType: userType, RobotConfigId: robotConfigId, } return d } // NewRoomPlayer 新建房间玩家 func NewRoomPlayer(player *Player) *RoomPlayer { d := &RoomPlayer{ Uid: player.Uid, Name: player.Name, Icon: player.Icon, Score: 0, JoinTime: lxtime.NowUninx(), UserType: player.UserType, RobotConfigId: 0, } return d } // GetInfoFromSettle 活动信息 从结算 func GetInfoFromSettle(player *Player, conf *confroomrank.ActivityConfig) models.RoomRankInfo { info := models.RoomRankInfo{} if player.SettleHas { info.SettleHas = player.SettleHas info.SettleAward = player.SettleAward } return info } // GetInfoFromRoom 活动信息 从房间 func GetInfoFromRoom(player *Player, room *Room) models.RoomRankInfo { info := models.RoomRankInfo{} for i := 0; i < len(room.Details.Players); i++ { p := room.Details.Players[i] rank := i + 1 node := models.RoomRankTopNode{ Rank: rank, Uid: p.Uid, Score: p.Score, Name: p.Name, Icon: p.Icon, } if player.Uid == p.Uid { info.SelfRank = rank info.SelfScore = p.Score } info.Tops = append(info.Tops, node) } return info }