package main

import (
	"../log"
	"../nt"
	"../utils"
	"encoding/json"
	"go.uber.org/zap"
)

var (
	FileConf *string //　配置文件文件名
)

// rpc 客户端需要连接 zk server 查询各个服务器的 rpc 地址和 redis 地址
// 根据具体的请求需求，向不同的 server 发送 rpc 请求
// TODO 动态监控各个服务器的上下线情况，动态调整，不用重启
func init_by_conf() {
	err := nt.InstInit("walletDBDZ", WALLETDBDZ_VER, *FileConf)
	utils.ErrPanic(err)
	// 注册自己
	rawjson, err := json.Marshal(nt.InstConf)
	utils.ErrPanic(err)

	path_of_self := nt.ZkP.HTTP +"/"+ nt.InstName
	err = nt.Zk.CreateEmpNode(path_of_self, rawjson)
	utils.ErrPanic(err)

	err = nt.DynConf.MonitorLobbies()
	utils.ErrPanic(err)

	err = nt.DynConf.MonitorGames()
	utils.ErrPanic(err)
	//conf
	err = nt.DynConf.MonitorWallet()
	utils.ErrPanic(err)
	err = nt.RegisterNodeCallback(nt.ZkP.Wallet, on_zk_data_changed)
	utils.ErrPanic(err)
	aesIvDefValue = nt.DynConf.Wallet.Dbdz.AesIv
	aesKeyDefValue = nt.DynConf.Wallet.Dbdz.AesKey
}

//查找gameId 渠道Id
func findGameIdBygTypemType(gtype string, mtype string) (gameId int64, gameMaker int64, has bool) {
	Games := nt.DynConf.Games
	for i := 0; i < len(Games); i++ {
		if Games[i].IsGame == 1 && len(Games[i].GameParam) == 2 {
			if Games[i].GameParam[0] == gtype && Games[i].GameParam[1] == mtype {
				return Games[i].GetId(), Games[i].GetGameMaker(), true
			}
		}
	}
	log.Error("findGameIdBygTypemType null", zap.String("gType", gtype), zap.String("mType", mtype))
	return 0, 0, false
}
