handle.go
1.55 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
package roomrank
import (
"apigame/configs/confroomrank"
"apigame/models"
"apigame/service/code-msg"
)
// 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.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
}
// 判断玩家等级
if req.PlayerLevel < config.OpenLevel {
code = code_msg.RECODE_MERGE_ROOMRANK_LEVEL_ERROR
return
}
// 读取游戏数据
player := LoadPlayer(gameId, playerUid)
// 尝试判断结算
hasSettle := TrySettle(gameId, player, config)
if hasSettle {
SavePlayer(gameId, player)
rsp.RoomRankInfo = GetInfo(player, config)
return
}
// 尝试加入房间
room, hasRoom := TryGetRoom(gameId, player, config, playerLevel)
if hasRoom {
TryReSort(room, config)
SavePlayer(gameId, player)
SaveRoom(gameId, room)
}
return
}