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 }