handle.go
4.52 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package ht_cardholder
import (
"apigame/dto"
"apigame/service/constd"
"apigame/util/uttype"
"fmt"
"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.GuaranteedStarCardId != "0" {
confCardSequence, hasCardSequence := FindCardSequenceConfig(confCardholder.GuaranteedStarCardId, sequenceId, cohort)
if hasCardSequence {
combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStarCardId, sequenceId, cohort)
scale := gameData.Details.CardSequenceScales[combineId]
cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
cardIdInt := uttype.StringToInt(cardId)
// 增加刻度
gameData.Details.CardSequenceScales[combineId] = scale + 1
// 增加卡牌
gameData.Details.Cards[cardIdInt] += 1
fmt.Println("🐸🐸🐸保底卡ID", cardIdInt)
rsp.NewCards = append(rsp.NewCards, cardIdInt)
}
}
// 非保底卡
if confCardholder.NormalCardNumber > 0 {
count := confCardholder.NormalCardNumber
confNormalCardStar, hasNormalCardStar := FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort)
if hasNormalCardStar {
combineIdStar := CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort)
scaleStar := gameData.Details.StarSequenceScales[combineIdStar]
starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count)
// 增加星级刻度
gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count
// 遍历星级刻度抽取n张卡牌
for _, id := range starIds {
combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort)
scale := gameData.Details.CardSequenceScales[combineId]
confCardSequence, hasCardSequence := FindCardSequenceConfig(id, sequenceId, cohort)
if hasCardSequence {
cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
cardIdInt := uttype.StringToInt(cardId)
// 增加刻度
gameData.Details.CardSequenceScales[combineId] = scale + 1
// 增加卡牌
gameData.Details.Cards[cardIdInt] += 1
rsp.NewCards = append(rsp.NewCards, cardIdInt)
fmt.Println("😊😊😊非保底卡ID", cardIdInt)
}
}
}
}
}
// 删除一个卡包
gameData.Details.Cardholder[req.Id] = countOld - 1
// 存档
SaveData(gameData)
// 返回信息
rsp.HtCardHolderInfo = gameData.GetInfo()
return
}