package jsonconf import ( "common/logger" "encoding/json" "io/ioutil" "os" ) var ( g_jsonconf = new(GameConfig) ) type SignConfig struct { Id int `json:"id"` Num int `json:"num"` } type GoldGunsConfig struct { Level int `json:"level"` Speed int64 `json:"speed"` } type GoldChestConfig struct { Boxid int `json:"boxid"` Score int64 `json:"score"` Reward int `json:"reward"` } type GameConfig struct { SignCfg []SignConfig GunConfig []GoldGunsConfig BoxConfig []GoldChestConfig } func GetJsonConf() *GameConfig { return g_jsonconf } func GetSignConfig(daynum int) *SignConfig { var rt *SignConfig for _, val := range g_jsonconf.SignCfg { if val.Id == daynum { rt = &val break } } return rt } func GetGoldGunsConfig(level int) *GoldGunsConfig { var rt *GoldGunsConfig for _, val := range g_jsonconf.GunConfig { if val.Level == level { rt = &val break } } return rt } func GetGoldChestConfig(boxid int) *GoldChestConfig { finalid := boxid if finalid > len(g_jsonconf.BoxConfig) { finalid = g_jsonconf.BoxConfig[len(g_jsonconf.BoxConfig)-1].Boxid } var rt *GoldChestConfig for _, val := range g_jsonconf.BoxConfig { if val.Boxid == finalid { rt = &val break } } return rt } 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/GoldChestConfig.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/GoldGunsConfig.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.GunConfig) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err } path = "../jsonconf/SignConfig.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.SignCfg) 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 }