jsonconf.go 5.63 KB
package jsonconf

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

var (
	g_jsonconf = new(GameConfig)
)

type AchieveDesc struct {
	Id       int    `json:"id"`
	Task     string `json:"task"`
	Num      int    `json:"num"`
	Reward   []int  `json:"reward"`
	TaskType int    `json:"type"`
}

type LevelDesc struct {
	Id        int `json:"id"`
	Level     int `json:"level"`
	Exp       int `json:"exp"`
	Cash      int `json:"cash"`
	Extracash int `json:"extracash"`
}

type MoneyBoxLevelDesc struct {
	Id    int `json:"id"`
	Level int `json:"level"`
	Min   int `json:"min"`
	Max   int `json:"max"`
}

type MoneyBoxTimesDesc struct {
	Id    int `json:"id"`
	Times int `json:"times"`
	Login int `json:"login"`
	Score int `json:"score"`
}

type WithDrawDesc struct {
	Id    int     `json:"id"`
	Money float32 `json:"money"`
	Coin  int     `json:"coin"`
	Task  int     `json:"task"`
	Level int     `json:"level"`
	Isnew int     `json:"new"`
	Day   int     `json:"day"`
}

type SignRewardDetail struct {
	Id  int `json:"id"`
	Num int `json:"num"`
}

type SignReward struct {
	Reward1 []SignRewardDetail `json:"reward1"`
	Reward2 []SignRewardDetail `json:"reward2"`
}

type SignConfigDesc struct {
	Id     int `json:"id"`
	Day    int `json:"day"`
	Reward int `json:"reward"`
}

type ActiveWithdrawConfigDesc struct {
	Id    int     `json:"id"`
	Money float32 `json:"money"`
	Coin  int     `json:"coin"`
	Task  int     `json:"task"`
	Level int     `json:"level"`
	Isnew int     `json:"new"`
	Day   int     `json:"day"`
}

type RedpacketConfigDesc struct {
	Id   int `json:"id"`
	Cash int `json:"cash"`
}

type GameConfig struct {
	AchieventConfig      []AchieveDesc
	TaskConfig           []AchieveDesc
	LevelConfig          []LevelDesc
	MoneyBoxConfig       []MoneyBoxLevelDesc
	MoneyBoxTimeConfig   []MoneyBoxTimesDesc
	WithDrawConfig       []WithDrawDesc
	SignConfig        []SignConfigDesc
	ActiveWithdrawConfig []ActiveWithdrawConfigDesc
	RedpacketConfig      []RedpacketConfigDesc
}

func GetJsonConf() *GameConfig {
	return g_jsonconf
}

func GetsignConfig(id int) *SignConfigDesc {
	for _, v := range g_jsonconf.SignConfig {
		if v.Id == id {
			return &v
		}
	}
	return nil
}

func GetRedpacketNum(id int) int {
	for _, val := range g_jsonconf.RedpacketConfig {
		if val.Id == id {
			return val.Cash
		}
	}

	return g_jsonconf.RedpacketConfig[len(g_jsonconf.RedpacketConfig)-1].Cash
}

func GetMoneyBoxCfg(lv int) *MoneyBoxLevelDesc {
	rt := new(MoneyBoxLevelDesc)
	rt = nil
	for _, val := range g_jsonconf.MoneyBoxConfig {
		if val.Level == lv {
			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/AchievementConfig.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.AchieventConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/DailyTask.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.TaskConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/LevelConfig.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.LevelConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/MoneyboxLevel.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.MoneyBoxConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/MoneyboxTimes.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.MoneyBoxTimeConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/WithdrawConfig.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.WithDrawConfig)
	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.SignConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

	path = "../jsonconf/ActiveWithdrawConfig.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.ActiveWithdrawConfig)
	if err != nil {
		logger.Info("loadJsonConf failed1,err=%v", err)
		return err
	}

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