203 lines
5.0 KiB
Go
203 lines
5.0 KiB
Go
package cardCfg
|
|
|
|
import (
|
|
"server/GoUtil"
|
|
"server/game/mod/item"
|
|
"server/gamedata"
|
|
"server/pkg/github.com/name5566/leaf/log"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
CARD_CONST_CFG_NAME = "CardConst"
|
|
CARD_DETAIL_CFG_NAME = "CardDetail"
|
|
CARD_PACK_CFG_NAME = "CardPack"
|
|
CARD_COLLECT_CFG_NAME = "CardCollect"
|
|
CARD_EXCHANGE_CFG = "CardExchange"
|
|
)
|
|
|
|
func init() {
|
|
gamedata.InitCfg(CARD_CONST_CFG_NAME)
|
|
gamedata.InitCfg(CARD_DETAIL_CFG_NAME)
|
|
gamedata.InitCfg(CARD_PACK_CFG_NAME)
|
|
gamedata.InitCfg(CARD_COLLECT_CFG_NAME)
|
|
gamedata.InitCfg(CARD_EXCHANGE_CFG)
|
|
}
|
|
|
|
func GetAllCollectReward() []*item.Item {
|
|
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "all_collect_reward")
|
|
if err != nil {
|
|
log.Debug("GetAllCollectReward data not found")
|
|
}
|
|
return item.ParseItem(data["Value"])
|
|
}
|
|
func GetStarById(Id int) int {
|
|
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
|
|
if err != nil {
|
|
log.Debug("GetStarById data not found")
|
|
}
|
|
return gamedata.GetIntValue(data, "Star")
|
|
}
|
|
|
|
// 获取开启卡包获得的卡牌数量
|
|
func GetPackRewardCnt(Star int) int {
|
|
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
|
|
|
|
if err != nil {
|
|
log.Debug("GetPackRewardCnt data not found")
|
|
}
|
|
|
|
return gamedata.GetIntValue(data, "RewardCnt")
|
|
}
|
|
|
|
// 获取开启开包比得x星卡
|
|
func GetPackMustHave(Star int) int {
|
|
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
|
|
if err != nil {
|
|
log.Debug("GetPackMustHave data not found")
|
|
}
|
|
|
|
return gamedata.GetIntValue(data, "MustHave")
|
|
}
|
|
|
|
// 根据星级获取卡牌列表
|
|
func GetCardListByStar(Round, Star, IsGold int) []int {
|
|
var CardList []int
|
|
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
|
|
if err != nil {
|
|
log.Debug("GetCardListByStar data not found")
|
|
}
|
|
for k, v := range data {
|
|
Extra := gamedata.GetIntValue(v, "Round")
|
|
if Round < Extra {
|
|
continue
|
|
}
|
|
vStar := gamedata.GetIntValue(v, "Star")
|
|
isGold := gamedata.GetIntValue(v, "IsGold")
|
|
if vStar == Star && IsGold == isGold {
|
|
id, _ := strconv.Atoi(k)
|
|
CardList = append(CardList, id)
|
|
}
|
|
}
|
|
return CardList
|
|
}
|
|
|
|
// 获取随机卡牌
|
|
func GetRandListByStar(Star int) map[int]int {
|
|
var randList []int
|
|
data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star)
|
|
if err != nil {
|
|
log.Debug("GetRandListByStar data not found")
|
|
}
|
|
r1 := gamedata.GetStringValue(data, "RandRate")
|
|
r2 := strings.Split(r1, ",")
|
|
randList = GoUtil.SliceStringToInt(r2)
|
|
r := make(map[int]int)
|
|
for k, v := range randList {
|
|
r[k+1] = v
|
|
}
|
|
return r
|
|
}
|
|
|
|
// 获取卡牌收集奖励
|
|
func GetCollectReward(Color int) ([]*item.Item, int) {
|
|
data, err := gamedata.GetDataByIntKey(CARD_COLLECT_CFG_NAME, Color)
|
|
if err != nil {
|
|
log.Debug("GetCollectReward data not found")
|
|
return nil, 0
|
|
}
|
|
itemCfg := gamedata.GetValue(data, "Item")
|
|
Chess := gamedata.GetIntValue(data, "Chess")
|
|
itemList := item.ParseItem(itemCfg)
|
|
return itemList, Chess
|
|
}
|
|
|
|
// 获取兑换奖励
|
|
func GetExchangeCfg(Id int) (int, []*item.Item) {
|
|
data, err := gamedata.GetDataByIntKey(CARD_EXCHANGE_CFG, Id)
|
|
if err != nil {
|
|
log.Debug("GetExchangeCfg data not found")
|
|
}
|
|
CostStar := gamedata.GetIntValue(data, "CostStar")
|
|
itemList := gamedata.GetItemList(data, "Item")
|
|
return CostStar, itemList
|
|
}
|
|
|
|
// 根据系列获取卡牌列表
|
|
func GetCardListByColor(Id int) []int {
|
|
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
|
|
if err != nil {
|
|
log.Debug("GetCardListByColor data not found")
|
|
return []int{}
|
|
}
|
|
var r []int
|
|
for k, v := range data {
|
|
color := gamedata.GetIntValue(v, "PictureAlbum")
|
|
if color == Id {
|
|
k1, _ := strconv.Atoi(k)
|
|
r = append(r, k1)
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
// 获取所有卡牌id
|
|
func GetAllCardId(Round int) []int {
|
|
data, err := gamedata.GetData(CARD_DETAIL_CFG_NAME)
|
|
if err != nil {
|
|
log.Debug("GetCardListByColor data not found")
|
|
return []int{}
|
|
}
|
|
var r []int
|
|
for k, v := range data {
|
|
Extra := gamedata.GetIntValue(v, "Round")
|
|
if Round < Extra {
|
|
continue
|
|
}
|
|
k1, _ := strconv.Atoi(k)
|
|
r = append(r, k1)
|
|
}
|
|
return r
|
|
}
|
|
|
|
func CheckCardIsGold(Id int) bool {
|
|
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
|
|
if err != nil {
|
|
log.Debug("CheckCardIsGold data not found")
|
|
}
|
|
return gamedata.GetIntValue(data, "IsGold") == 1
|
|
}
|
|
|
|
func GetCardDuration() int64 {
|
|
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "duration")
|
|
if err != nil {
|
|
log.Debug("GetCardDuration data not found")
|
|
}
|
|
return int64(gamedata.GetIntValue(data, "Value"))
|
|
}
|
|
|
|
func GetExTimes() int {
|
|
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "exchange_times")
|
|
if err != nil {
|
|
log.Debug("GetExTimes data not found")
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetReqTimes() int {
|
|
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "request_times")
|
|
if err != nil {
|
|
log.Debug("GetReqTimes data not found")
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetItemIdByCardId(CardId int) int {
|
|
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, CardId)
|
|
if err != nil {
|
|
log.Debug("GetItemIdByCardId data not found")
|
|
}
|
|
return gamedata.GetIntValue(data, "ItemId")
|
|
}
|