jsonconf.go 3.14 KB
package jsonconf

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

var (
	g_jsonconf = new(GameConfig)
)

type SignConfig struct {
	Signday int `json:"signday"`
	Reward  int `json:"reward"`
}

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 AidsConfig struct {
	AppName     string `json:"appname"`
	TaskID      int    `json:"taskid"`
	TaskKey     string `json:"taskkey"`
	Description string `json:"description"`
}

type GameConfig struct {
	SignCfg   []SignConfig
	GunConfig []GoldGunsConfig
	BoxConfig []GoldChestConfig
	AidsCfg   []AidsConfig
}

func GetJsonConf() *GameConfig {
	return g_jsonconf
}

func GetSignConfig(daynum int) *SignConfig {
	var rt *SignConfig
	for _, val := range g_jsonconf.SignCfg {
		if val.Signday == 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 GetAidsConfig(appname string) *AidsConfig {

	var rt *AidsConfig
	for _, val := range g_jsonconf.AidsCfg {
		if val.AppName == appname {
			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
	}

	path = "../jsonconf/AidsConfig.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.AidsCfg)
	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
}