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,7 +2,7 @@ package controllers
2 2
3 import ( 3 import (
4 "apigame/dto" 4 "apigame/dto"
5 - ht_cardholder "apigame/service/ht-cardholder" 5 + "apigame/service/ht-cardholder"
6 ) 6 )
7 7
8 // HtCardHolderController 绑定控制器 8 // HtCardHolderController 绑定控制器
service/ht-cardholder/handle.go
@@ -4,7 +4,6 @@ import ( @@ -4,7 +4,6 @@ import (
4 "apigame/dto" 4 "apigame/dto"
5 "apigame/service/constd" 5 "apigame/service/constd"
6 "apigame/util/uttype" 6 "apigame/util/uttype"
7 - "fmt"  
8 "strconv" 7 "strconv"
9 ) 8 )
10 9
@@ -93,19 +92,20 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol @@ -93,19 +92,20 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
93 92
94 // 开始处理抽卡 93 // 开始处理抽卡
95 sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID) 94 sequenceId, cohort := GetUserSequenceIdAndCohort(req.UID)
  95 + //logs.Debug("wjwdbg🐸 用户序列组IDsequenceId", sequenceId)
  96 + //logs.Debug("wjwdbg🐸 用户分组IDcohort:", cohort)
96 if confCardholder.IsNew != 0 { 97 if confCardholder.IsNew != 0 {
97 // 如果是新卡包 按顺序查找数目最少的一张卡抽取 98 // 如果是新卡包 按顺序查找数目最少的一张卡抽取
98 cardId := GetNewCard(gameData) 99 cardId := GetNewCard(gameData)
  100 + //logs.Debug("wjwdbg🐸 抽取新卡ID:", cardId)
99 // 增加卡牌 101 // 增加卡牌
100 gameData.Details.Cards[cardId] += 1 102 gameData.Details.Cards[cardId] += 1
101 rsp.NewCards = append(rsp.NewCards, cardId) 103 rsp.NewCards = append(rsp.NewCards, cardId)
102 } else { 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 if hasCardSequence { 107 if hasCardSequence {
108 - combineId := CombineIdSequenceIdCohort(confCardholder.GuaranteedStarCardId, sequenceId, cohort) 108 + combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort)
109 scale := gameData.Details.CardSequenceScales[combineId] 109 scale := gameData.Details.CardSequenceScales[combineId]
110 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) 110 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
111 cardIdInt := uttype.StringToInt(cardId) 111 cardIdInt := uttype.StringToInt(cardId)
@@ -113,10 +113,16 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol @@ -113,10 +113,16 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
113 gameData.Details.CardSequenceScales[combineId] = scale + 1 113 gameData.Details.CardSequenceScales[combineId] = scale + 1
114 // 增加卡牌 114 // 增加卡牌
115 gameData.Details.Cards[cardIdInt] += 1 115 gameData.Details.Cards[cardIdInt] += 1
116 - fmt.Println("🐸🐸🐸保底卡ID", cardIdInt) 116 + //logs.Debug("wjwdbg😊 抽取卡牌ID:", cardIdInt)
117 rsp.NewCards = append(rsp.NewCards, cardIdInt) 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 if confCardholder.NormalCardNumber > 0 { 127 if confCardholder.NormalCardNumber > 0 {
122 count := confCardholder.NormalCardNumber 128 count := confCardholder.NormalCardNumber
@@ -127,21 +133,11 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol @@ -127,21 +133,11 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
127 starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count) 133 starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count)
128 // 增加星级刻度 134 // 增加星级刻度
129 gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count 135 gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count
  136 + //logs.Debug("wjwdbg🐸 非保底卡星级ID:", confCardholder.MinimumGuaranteeCardId)
  137 + //logs.Debug("wjwdbg🐸 非保底卡星级抽取序列:", starIds)
130 // 遍历星级刻度抽取n张卡牌 138 // 遍历星级刻度抽取n张卡牌
131 for _, id := range starIds { 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,6 +149,10 @@ func HandleOpen(req *dto.ReqHtCardHolderOpen) (code string, rsp dto.RspHtCardHol
153 // 存档 149 // 存档
154 SaveData(gameData) 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 rsp.HtCardHolderInfo = gameData.GetInfo() 157 rsp.HtCardHolderInfo = gameData.GetInfo()
158 158
util/uttype/slice.go
1 package uttype 1 package uttype
2 2
  3 +import "math/rand"
  4 +
  5 +// Min 最小值
3 func Min[T Number](values ...T) T { 6 func Min[T Number](values ...T) T {
4 result := values[0] 7 result := values[0]
5 for _, v := range values[1:] { 8 for _, v := range values[1:] {
@@ -10,6 +13,7 @@ func Min[T Number](values ...T) T { @@ -10,6 +13,7 @@ func Min[T Number](values ...T) T {
10 return result 13 return result
11 } 14 }
12 15
  16 +// Max 最大值
13 func Max[T Number](values ...T) T { 17 func Max[T Number](values ...T) T {
14 result := values[0] 18 result := values[0]
15 for _, v := range values[1:] { 19 for _, v := range values[1:] {
@@ -19,3 +23,11 @@ func Max[T Number](values ...T) T { @@ -19,3 +23,11 @@ func Max[T Number](values ...T) T {
19 } 23 }
20 return result 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 +}