config-registry.go 3.61 KB
package ht_cardholder

import (
	"apigame/lx-util/lxalilog"
	"apigame/service/constd"
	"encoding/json"
	"github.com/astaxie/beego/logs"
)

var (
	configGameId = "10128"
	configTable  = constd.MYSQL_TABLE_ACTIVITY_S_CARD_ACTIVITY + configGameId
	Registry     RegistryConfigs // 卡牌活动配置

	CardConfigs             = make(map[int]CardConfig)          // 卡牌表
	CardholderConfigs       = make(map[int]CardholderConfig)    // 卡包开卡规则表
	NormalCardStarSequences = make([]NormalCardStarSequence, 0) // 非保底卡星级ID
	CardSequenceConfigs     = make([]CardSequenceConfig, 0)     // 星级ID对应的卡片
)

// RegistryConfigs 卡牌活动配置
type RegistryConfigs struct {
	CardActivityConfigRaws map[int64]CardActivityConfigRaw // 活动配置列表 原始数据
	CardActivityConfig     map[int64]CardActivityConfig    // 活动配置列表 分析后数据
}

func NewRegistryConfigs() {
	Registry = RegistryConfigs{
		CardActivityConfigRaws: make(map[int64]CardActivityConfigRaw),
		CardActivityConfig:     make(map[int64]CardActivityConfig),
	}
}

// Decode 解析配置原始数据
func (r RegistryConfigs) Decode(confRaw CardActivityConfigRaw) {
	conf := CardActivityConfig{
		Raw:                    confRaw,
		Id:                     confRaw.Id,
		Awards:                 make(map[string]string),
		AlbumConfig:            make(map[string]AlbumConfig),
		CardConfig:             make(map[int]CardConfig),
		CardholderConfig:       make(map[string]CardholderConfig),
		NormalCardStarSequence: make([]NormalCardStarSequence, 0),
		CardSequenceConfig:     make([]CardSequenceConfig, 0),
	}
	// 解析奖励
	{
		err := json.Unmarshal([]byte(confRaw.Awards), &conf.Awards)
		if err != nil {
			lxalilog.Errors(err, confRaw.Awards, configGameId, confRaw.Id)
			return
		}
	}
	// 卡组配置
	{
		configs := make([]AlbumConfig, 0)
		err := json.Unmarshal([]byte(confRaw.AlbumConfig), &configs)
		if err != nil {
			lxalilog.Errors(err, confRaw.AlbumConfig, configGameId, confRaw.Id)
			return
		}
		for _, i2 := range configs {
			conf.AlbumConfig[i2.SetId] = i2
		}
	}
	// 卡牌配置
	{
		configs := make([]CardConfig, 0)
		err := json.Unmarshal([]byte(confRaw.CardConfig), &configs)
		if err != nil {
			lxalilog.Errors(err, confRaw.CardConfig, configGameId, confRaw.Id)
			return
		}
		for _, i2 := range configs {
			conf.CardConfig[i2.Id] = i2
		}
	}
	// 卡包开卡规则
	{
		configs := make([]CardholderConfig, 0)
		err := json.Unmarshal([]byte(confRaw.CardHolderConfig), &configs)
		if err != nil {
			lxalilog.Errors(err, confRaw.CardHolderConfig, configGameId, confRaw.Id)
			return
		}
		for _, i2 := range configs {
			conf.CardholderConfig[i2.Id] = i2
		}
	}
	// 卡片星级配置
	{
		configs := make([]NormalCardStarSequence, 0)
		err := json.Unmarshal([]byte(confRaw.NormalCardStarSequence), &configs)
		if err != nil {
			lxalilog.Errors(err, confRaw.NormalCardStarSequence, configGameId, confRaw.Id)
			return
		}
		for _, i2 := range configs {
			conf.NormalCardStarSequence = append(conf.NormalCardStarSequence, i2)
		}
	}
	// 卡片星级对应卡牌配置
	{
		configs := make([]CardSequenceConfig, 0)
		err := json.Unmarshal([]byte(confRaw.CardSequenceConfig), &configs)
		if err != nil {
			lxalilog.Errors(err, confRaw.CardSequenceConfig, configGameId, confRaw.Id)
			return
		}
		for _, i2 := range configs {
			conf.CardSequenceConfig = append(conf.CardSequenceConfig, i2)
		}
	}

	r.CardActivityConfig[conf.Id] = conf
	logs.Debug(conf.Awards)
	logs.Debug(conf.AlbumConfig)
	logs.Debug(conf.CardConfig)
	logs.Debug(conf.CardholderConfig)
	logs.Debug("🐸", conf.NormalCardStarSequence)
	logs.Debug("🐸", conf.CardSequenceConfig)
}