jsonconf.go 6.29 KB
package jsonconf

import (
	"common/logger"
	"encoding/json"
	"io/ioutil"
	"math/rand"
	"os"
)

var (
	g_jsonconf = new(GameConfig)
)

type CardDesc struct {
	Time      int    `json:"time"`
	Ctype     int    `json:"type"`
	Desc      string `json:"desc"`
	Flop_card string `json:"flop_card"`
}

type CatDesc struct {
	Id            int     `json:"id"`
	Name          string  `json:"name"`
	Level_buy     int     `json:"level_buy"`
	Rec_buy       int     `json:"rec_buy"`
	Price         string  `json:"price"`
	Gold_get      string  `json:"gold_get"`
	Ratio         float32 `json:"ratio"`
	Increse_limit int     `json:"increse_limit"`
	Interval      float32 `json:"interval"`
	Redpacket     float32 `json:"redpacket"`
}

type RedCatDesc struct {
	Id      int     `json:"id"`
	Name    string  `json:"name"`
	Skin    string  `json:"skin"`
	Money   float32 `json:"money"`
	Rate    float32 `json:"rate"`
	Is_37   int     `json:"is_37"`
	Dec_red string  `json:"dec_red"`
	Dec_get string  `json:"dec_get"`
}

type TurnTableDesc struct {
	Id        int     `json:"id"`
	Ttype     int     `json:"type"`
	Rate      float32 `json:"rate"`
	Parameter int     `json:"parameter"`
	Desc      string  `json:"desc"`
	Idx       int     `json:"idx"`
}

type BoxConfigDesc struct {
	Id      int     `json:"id"`
	Ttype   int     `json:"type"`
	Time    float32 `json:"time"`
	Rate    int     `json:"rate"`
	Rmb_num string  `json:"rmb_num"`
}

type RMBConfigDesc struct {
	Id        int     `json:"id"`
	Time      int     `json:"time"`
	Rmb_num   float32 `json:"rmb_num"`
	Login_day int     `json:"login_day"`
	Cat_level int     `json:"cat_level"`
}

type RobotCatDesc struct {
	Id    int     `json:"id"`
	Name  string  `json:"name"`
	Image float32 `json:"image"`
}

type GameConfig struct {
	CardConfig      []CardDesc
	CatConfig       []CatDesc
	RedCatConfig    []RedCatDesc
	TurnTableConfig []TurnTableDesc
	BoxConfig       []BoxConfigDesc
	GiftConfig      []BoxConfigDesc
	RMBConfig       []RMBConfigDesc
	RobotConfig     []RobotCatDesc
}

func GetBoxConfif(id int) *BoxConfigDesc {
	for _, v := range g_jsonconf.BoxConfig {
		if v.Id == id {
			return &v
		}
	}
	return nil
}

func GetGiftConfif(id int) *BoxConfigDesc {
	for _, v := range g_jsonconf.GiftConfig {
		if v.Id == id {
			return &v
		}
	}
	return nil
}

func GetJsonConf() *GameConfig {
	return g_jsonconf
}

func GetCardConfig(time int) *CardDesc {
	for _, v := range g_jsonconf.CardConfig {
		if v.Time == time {
			return &v
		}
	}

	return &g_jsonconf.CardConfig[len(g_jsonconf.CardConfig)-1]
}

func GetTurnTable(ctype int) []TurnTableDesc {
	var rtslice []TurnTableDesc
	for _, v := range g_jsonconf.TurnTableConfig {
		if v.Ttype == ctype {
			rtslice = append(rtslice, v)
		}
	}
	return rtslice
}

func GetCatConfig(lv int) *CatDesc {
	for _, v := range g_jsonconf.CatConfig {
		if v.Id == lv {
			return &v
		}
	}
	return nil
}

//获取转盘配置
func GetTurnTableCfg(id int) *TurnTableDesc {
	for _, v := range g_jsonconf.TurnTableConfig {
		if v.Id == id {
			return &v
		}
	}
	return nil
}

//获取红包猫配置
func GetRedCatConfig(lv int) *RedCatDesc {
	reallv := lv - 37
	if reallv < 1 {
		reallv = 1
	}
	for _, v := range g_jsonconf.RedCatConfig {
		if v.Id == reallv {
			return &v
		}
	}
	return nil
}

//计算中奖名字
func CalcWinner(round int) (string, int) {
	length := round % len(g_jsonconf.RobotConfig)
	return g_jsonconf.RobotConfig[length].Name, int(g_jsonconf.RobotConfig[length].Image)
}

//获取一个随机名字
func GetRandName() string {
	length := len(g_jsonconf.RobotConfig)
	randindex := rand.Intn(length)
	return g_jsonconf.RobotConfig[randindex].Name
}

func file_get_contents(path string) ([]byte, error) {
	f, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	return ioutil.ReadAll(f)
}

func LoadJsonConf() error {
	//pconf := &GameConfig{}
	//加载第一个配置
	path := "../jsonconf/CardConfig.json"
	content, err := file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.CardConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/CatConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.CatConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/RedCatConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.RedCatConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/TurntableConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.TurnTableConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/RmbConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.RMBConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/BoxConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.BoxConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/GiftConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.GiftConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/RobotConfig.json"
	content, err = file_get_contents(path)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	err = json.Unmarshal([]byte(content), &g_jsonconf.RobotConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	logger.Info("loadJsonConf success pconf=%v,err=%v", *g_jsonconf, err)
	return err
}