handle.go
3.16 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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package roomrank
import (
"apigame/configs/confroomrank"
"apigame/models"
"apigame/service/code-msg"
"fmt"
)
// HandleGetConfig 活动配置
func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.RspRoomRankGetConfig) {
rsp = models.RspRoomRankGetConfig{}
code = code_msg.RECODE_OK
gameId := req.GameID
// 尝试更新配置
config, hasConfig := confroomrank.GetCurrent(gameId)
if !hasConfig {
code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
return
}
rsp.ActivityId = config.Id
rsp.PrepareTime = config.PreviewTime
rsp.StartTime = config.StartTime
rsp.EndTime = config.EndTime
rsp.ReleaseTime = config.ReleaseTime
rsp.OpenLevel = config.OpenLevel
rsp.Config = config.Client
return
}
// HandleInfo 房间排行信息
func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRankInfo) {
rsp = models.RspRoomRankInfo{}
code = code_msg.RECODE_OK
gameId := req.GameID
playerUid := req.UID
playerLevel := req.PlayerLevel
// 尝试更新配置
config, hasConfig := confroomrank.GetCurrent(gameId)
if !hasConfig {
config = new(confroomrank.ActivityConfig)
code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
return
}
// 读取游戏数据
player := LoadPlayer(gameId, playerUid)
player.Name = req.PlayerName
player.Icon = req.PlayerIcon
// 尝试判断结算
hasSettle := TrySettle(gameId, player, config)
if hasSettle {
SavePlayer(gameId, player)
rsp.RoomRankInfo = GetInfoFromSettle(player, config)
return
}
// 判断玩家等级
if req.PlayerLevel < config.OpenLevel {
code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR
return
}
// 尝试加入房间
room, hasRoom := TryGetRoom(gameId, player, config, playerLevel)
if hasRoom {
TryReSort(room, config)
SavePlayer(gameId, player)
SaveRoom(gameId, room)
}
rsp.RoomRankInfo = GetInfoFromRoom(player, room)
fmt.Println("dwjw🐸 len(room.Details.Players) 1:", len(room.Details.Players))
return
}
// HandleAddScore 房间排行增加积分
func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.RspRoomRankAddScore) {
rsp = models.RspRoomRankAddScore{}
code = code_msg.RECODE_OK
gameId := req.GameID
playerUid := req.UID
playerLevel := req.PlayerLevel
// 尝试更新配置
config, hasConfig := confroomrank.GetCurrent(gameId)
if !hasConfig {
config = new(confroomrank.ActivityConfig)
code = code_msg.RECODE_MERGE_ROOMRANK_NOTOPEN_ERROR
return
}
// 读取游戏数据
player := LoadPlayer(gameId, playerUid)
player.Name = req.PlayerName
player.Icon = req.PlayerIcon
// 尝试判断结算
hasSettle := TrySettle(gameId, player, config)
if hasSettle {
SavePlayer(gameId, player)
rsp.RoomRankInfo = GetInfoFromSettle(player, config)
return
}
// 判断玩家等级
if req.PlayerLevel < config.OpenLevel {
code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR
return
}
// 尝试加入房间
room, hasRoom := TryGetRoom(gameId, player, config, playerLevel)
// 房间排行增加积分
ChangePlayerScore(room, player, req.AddScore)
if hasRoom {
TryReSort(room, config)
SavePlayer(gameId, player)
SaveRoom(gameId, room)
}
rsp.RoomRankInfo = GetInfoFromRoom(player, room)
return
}