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,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 | +} |