Commit 682c2458929b459370a5bd318828c6f3e14bbebe
1 parent
64c263aa
Exists in
master
and in
1 other branch
feat:抽卡 封装抽卡逻辑
Showing
3 changed files
with
33 additions
and
21 deletions
Show diff stats
controllers/ht-cardholder.go
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 | +} | ... | ... |