Commit 682c2458929b459370a5bd318828c6f3e14bbebe

Authored by 王家文
1 parent 64c263aa
Exists in master and in 1 other branch dev-wjw

feat:抽卡 封装抽卡逻辑

controllers/ht-cardholder.go
... ... @@ -2,7 +2,7 @@ package controllers
2 2  
3 3 import (
4 4 "apigame/dto"
5   - ht_cardholder "apigame/service/ht-cardholder"
  5 + "apigame/service/ht-cardholder"
6 6 )
7 7  
8 8 // HtCardHolderController 绑定控制器
... ...
service/ht-cardholder/handle.go
... ... @@ -4,7 +4,6 @@ import (
4 4 "apigame/dto"
5 5 "apigame/service/constd"
6 6 "apigame/util/uttype"
7   - "fmt"
8 7 "strconv"
9 8 )
10 9  
... ... @@ -93,19 +92,20 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
93 92  
94 93 // 开始处理抽卡
95 94 sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID)
  95 + //logs.Debug("wjwdbg🐸 用户序列组IDsequenceId", sequenceId)
  96 + //logs.Debug("wjwdbg🐸 用户分组IDcohort:", cohort)
96 97 if confCardholder.IsNew != 0 {
97 98 // 如果是新卡包 按顺序查找数目最少的一张卡抽取
98 99 cardId := GetNewCard(gameData)
  100 + //logs.Debug("wjwdbg🐸 抽取新卡ID:", cardId)
99 101 // 增加卡牌
100 102 gameData.Details.Cards[cardId] += 1
101 103 rsp.NewCards = append(rsp.NewCards, cardId)
102 104 } else {
103   - // 正常抽卡
104   - // 先抽保底卡
105   - if confCardholder.GuaranteedStarCardId != "0" {
106   - confCardSequence, hasCardSequence := FindCardSequenceConfig(confCardholder.GuaranteedStarCardId, sequenceId, cohort)
  105 + getCardFunc := func(cardConfigId string) {
  106 + confCardSequence, hasCardSequence := FindCardSequenceConfig(cardConfigId, sequenceId, cohort)
107 107 if hasCardSequence {
108   - combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStarCardId, sequenceId, cohort)
  108 + combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort)
109 109 scale := gameData.Details.CardSequenceScales[combineId]
110 110 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
111 111 cardIdInt := uttype.StringToInt(cardId)
... ... @@ -113,10 +113,16 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
113 113 gameData.Details.CardSequenceScales[combineId] = scale + 1
114 114 // 增加卡牌
115 115 gameData.Details.Cards[cardIdInt] += 1
116   - fmt.Println("🐸🐸🐸保底卡ID", cardIdInt)
  116 + //logs.Debug("wjwdbg😊 抽取卡牌ID:", cardIdInt)
117 117 rsp.NewCards = append(rsp.NewCards, cardIdInt)
118 118 }
119 119 }
  120 + // 正常抽卡
  121 + // 先抽保底卡
  122 + if confCardholder.GuaranteedStarCardId != "0" {
  123 + getCardFunc(confCardholder.GuaranteedStarCardId)
  124 + //logs.Debug("wjwdbg🐸 保底卡牌配置ID:", confCardholder.GuaranteedStarCardId)
  125 + }
120 126 // 非保底卡
121 127 if confCardholder.NormalCardNumber > 0 {
122 128 count := confCardholder.NormalCardNumber
... ... @@ -127,21 +133,11 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
127 133 starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count)
128 134 // 增加星级刻度
129 135 gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count
  136 + //logs.Debug("wjwdbg🐸 非保底卡星级ID:", confCardholder.MinimumGuaranteeCardId)
  137 + //logs.Debug("wjwdbg🐸 非保底卡星级抽取序列:", starIds)
130 138 // 遍历星级刻度抽取n张卡牌
131 139 for _, id := range starIds {
132   - combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort)
133   - scale := gameData.Details.CardSequenceScales[combineId]
134   - confCardSequence, hasCardSequence := FindCardSequenceConfig(id, sequenceId, cohort)
135   - if hasCardSequence {
136   - cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
137   - cardIdInt := uttype.StringToInt(cardId)
138   - // 增加刻度
139   - gameData.Details.CardSequenceScales[combineId] = scale + 1
140   - // 增加卡牌
141   - gameData.Details.Cards[cardIdInt] += 1
142   - rsp.NewCards = append(rsp.NewCards, cardIdInt)
143   - fmt.Println("😊😊😊非保底卡ID", cardIdInt)
144   - }
  140 + getCardFunc(id)
145 141 }
146 142 }
147 143 }
... ... @@ -153,6 +149,10 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
153 149 // 存档
154 150 SaveData(gameData)
155 151  
  152 + //logs.Debug("wjwdbg🐸 获取卡牌列表:", rsp.NewCards)
  153 + uttype.Shuffle(rsp.NewCards)
  154 + //logs.Debug("wjwdbg🐸 获取卡牌列表打乱:", rsp.NewCards)
  155 +
156 156 // 返回信息
157 157 rsp.HtCardHolderInfo = gameData.GetInfo()
158 158  
... ...
util/uttype/slice.go
1 1 package uttype
2 2  
  3 +import "math/rand"
  4 +
  5 +// Min 最小值
3 6 func Min[T Number](values ...T) T {
4 7 result := values[0]
5 8 for _, v := range values[1:] {
... ... @@ -10,6 +13,7 @@ func Min[T Number](values ...T) T {
10 13 return result
11 14 }
12 15  
  16 +// Max 最大值
13 17 func Max[T Number](values ...T) T {
14 18 result := values[0]
15 19 for _, v := range values[1:] {
... ... @@ -19,3 +23,11 @@ func Max[T Number](values ...T) T {
19 23 }
20 24 return result
21 25 }
  26 +
  27 +// Shuffle 打乱
  28 +func Shuffle[T any](list []T) {
  29 + for i := len(list) - 1; i > 0; i-- {
  30 + j := rand.Intn(i + 1)
  31 + list[i], list[j] = list[j], list[i]
  32 + }
  33 +}
... ...