player.go
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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"
"apigame/util/utstring"
"math/rand"
)
func tryInitPlayer(gameId string, player *Player) {
svmysql.InitTable(player, gameId, false)
}
// SavePlayer 存储数据
func SavePlayer(gameId string, player *Player) {
tryInitPlayer(gameId, 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, topType int) (player *Player) {
player = NewPlayer(playerUid, topType)
tryInitPlayer(gameId, player)
has, err := svmysql.First(player, gameId)
if has {
} else {
player.Init(playerUid, topType)
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.GetAvatar(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, config *confroomrank.ActivityConfig) models.RoomRankInfo {
info := models.RoomRankInfo{}
if player.SettleHas() {
info.SettleHas = true
info.SettleRank = player.SettleRank
info.SettleScore = player.SettleScore
info.SettleUserClass = player.SettleUserClass
info.SettleAward = player.SettleAward
}
return info
}
// GetInfoFromRoom 活动信息 从房间
func GetInfoFromRoom(player *Player, room *Room, config *confroomrank.ActivityConfig) models.RoomRankInfo {
info := models.RoomRankInfo{}
info.UserClass = player.UserClass
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 confRoom, hasConfRoom := config.Room[room.ConfigId]; hasConfRoom {
if confAward, hasConfAward := confRoom.Awards[utstring.IntToString(rank)]; hasConfAward {
node.Award = confAward
}
}
if player.Uid == p.Uid {
info.SelfRank = rank
info.SelfScore = p.Score
}
info.Tops = append(info.Tops, node)
}
return info
}