handle.go
3.12 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
package ht_cardholder
import (
"apigame/dto"
"apigame/service/constd"
"apigame/util/uttype"
"strconv"
)
// HandleInfo 卡包信息
func HandleInfo(req *dto.ReqHtCardHolderInfo) (code string, rsp dto.RspHtCardHolderInfo) {
rsp = dto.RspHtCardHolderInfo{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
// 读取游戏数据
gameData := LoadData(req.UID)
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}
// HandleGetNew 获取卡包
func HandleGetNew(req *dto.ReqHtCardHolderGetNew) (code string, rsp dto.RspHtCardHolderGetNew) {
rsp = dto.RspHtCardHolderGetNew{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
// 检查活动状态
code = CheckStatus()
if code != constd.RECODE_OK {
return
}
// 检查卡包ID
_, okCardholderConfig := Config.CardholderConfig[strconv.Itoa(req.Id)]
if !okCardholderConfig {
code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR
return
}
// 检查卡包数量
if req.Count < 1 {
code = constd.RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR
return
}
// 读取游戏数据
gameData := LoadData(req.UID)
gameData.Details.Cardholder[req.Id] += req.Count
SaveData(gameData)
// 返回信息
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}
// HandleOpen 打开卡包
func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHolderOpen) {
rsp = dto.RspHtCardHolderOpen{}
code = constd.RECODE_OK
// 尝试更新配置
TryUpdateConfigs()
// 检查活动状态
code = CheckStatus()
if code != constd.RECODE_OK {
return
}
// 检查卡包ID
confCardholder, okCardholderConfig := Config.CardholderConfig[strconv.Itoa(req.Id)]
if !okCardholderConfig {
code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR
return
}
// 读取游戏数据
gameData := LoadData(req.UID)
// 判断卡包数目
countOld, _ := gameData.Details.Cardholder[req.Id]
if countOld < 1 {
code = constd.RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR
return
}
// 开始处理抽卡
sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID)
if confCardholder.IsNew != 0 {
// 如果是新卡包 按顺序查找数目最少的一张卡抽取
cardId := GetNewCard(gameData)
// 增加卡牌
gameData.Details.Cards[cardId] += 1
rsp.NewCards = append(rsp.NewCards, cardId)
} else {
// 正常抽卡
// 先抽保底卡
if confCardholder.GuaranteedStar != "0" {
confGuaranteed, hasGuaranteed := FindCardSequenceConfig(confCardholder.GuaranteedStar, sequenceId, cohort)
if hasGuaranteed {
combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStar, sequenceId, cohort)
scale := gameData.Details.CardSequenceScales[combineId]
cardId := GetOneFromArray(confGuaranteed.CardIdLists, scale)
cardIdInt := uttype.StringToInt(cardId)
// 增加刻度
gameData.Details.CardSequenceScales[combineId] = scale + 1
// 增加卡牌
gameData.Details.Cards[cardIdInt] += 1
rsp.NewCards = append(rsp.NewCards, cardIdInt)
}
}
}
// 删除一个卡包
gameData.Details.Cardholder[req.Id] = countOld - 1
// 存档
SaveData(gameData)
// 返回信息
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}