jsonconf.go 3.77 KB
package jsonconf

import (
	"common/logger"
	"encoding/json"
	"io/ioutil"
	"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"`
}

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 GameConfig struct {
	CardConfig      []CardDesc
	CatConfig       []CatDesc
	RedCatConfig    []RedCatDesc
	TurnTableConfig []TurnTableDesc
}

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

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