package miningCfg import ( "server/game/mod/item" GoUtil "server/game_util" "server/gamedata" "strconv" "strings" ) const ( CFG_MINING_TEMPLATE = "MiningTemplate" CFG_MINING_JACKPOT = "MiningJackpot" CFG_MINING_GEM = "MiningGem" CFG_MINING_PASS = "MiningPass" ) func init() { gamedata.InitCfg(CFG_MINING_TEMPLATE) gamedata.InitCfg(CFG_MINING_JACKPOT) gamedata.InitCfg(CFG_MINING_GEM) gamedata.InitCfg(CFG_MINING_PASS) } func GetTemplate(Id int) int { data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id) if err != nil { return 0 } return gamedata.GetIntValue(data, "Template") } func GetActivityItemId(Id int) int { data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id) if err != nil { return 0 } return gamedata.GetIntValue(data, "ItemId") } func GetLoseItem(Id int) []*item.Item { data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id) if err != nil { return nil } return gamedata.GetItemList(data, "ItemCost") } func GetPassArea(Id int) int { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { return 0 } Area := gamedata.GetStringValue(data, "Area") strArr := strings.Split(Area, "*") a, _ := strconv.Atoi(strArr[0]) b, _ := strconv.Atoi(strArr[1]) return a * b } func GetPassGem(Id int) []int { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { return nil } Gem := gamedata.GetStringValue(data, "Gem") strArr := strings.Split(Gem, "|") result := make([]int, 0, len(strArr)) for _, v := range strArr { a, _ := strconv.Atoi(v) result = append(result, a) } return result } func GetRandItem() []*item.Item { data, err := gamedata.GetData(CFG_MINING_JACKPOT) if err != nil { return nil } ProbMap := make(map[int]int) for k, v := range data { Id := GoUtil.Int(k) ProbMap[Id] = gamedata.GetIntValue(v, "Prob") } RandId := GoUtil.RandMap(ProbMap) Info, _ := gamedata.GetDataByIntKey(CFG_MINING_JACKPOT, RandId) return gamedata.GetItemList(Info, "Items") } func GetPassItem(Id int, needStar int) []*item.Item { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { return nil } items := gamedata.GetItemList(data, "Items") starReward := gamedata.GetIntValue(data, "StarReward") var starnum int if starReward > 0 { starnum = int(needStar * starReward / 100) if starnum > 0 { items = append(items, &item.Item{ Id: item.ITEM_STAR_ID, Num: starnum, }) } } return items } func GetPassItemList(needStar int) map[int][]*item.Item { data, err := gamedata.GetData(CFG_MINING_PASS) if err != nil { return nil } result := make(map[int][]*item.Item) for k := range data { Id := GoUtil.Int(k) result[Id] = GetPassItem(Id, needStar) } return result }