conf-roomrank-decode.go 1.23 KB
package configs

import (
	"apigame/util/util-lx/lxalilog"
	"encoding/json"
)

// Decode 解析配置原始数据
func (c *RoomRankConfig) Decode(gameId string, configRaw *RoomRankConfigRaw) {
	c.GameId = gameId
	c.Raw = configRaw

	c.Id = configRaw.Id
	c.OpenLevel = configRaw.OpenLevel
	c.PreviewTime = configRaw.PreviewTime
	c.StartTime = configRaw.StartTime
	c.EndTime = configRaw.EndTime

	c.Robot = make(map[int]RoomRankRobotConfig)
	c.Room = make(map[int]RoomRankRoomConfig)

	// 解析 机器人
	{
		configs := make([]RoomRankRobotConfig, 0)
		err := json.Unmarshal([]byte(configRaw.Robot), &configs)
		if err != nil {
			lxalilog.Errors(err, configRaw.Robot, gameId, configRaw.Id)
			return
		}
		for _, i2 := range configs {
			c.Robot[i2.Id] = i2
		}
	}
	// 解析 房间
	{
		configs := make([]RoomRankRoomConfig, 0)
		err := json.Unmarshal([]byte(configRaw.Room), &configs)
		if err != nil {
			lxalilog.Errors(err, configRaw.Room, gameId, configRaw.Id)
			return
		}
		for _, i2 := range configs {
			c.Room[i2.Id] = i2
		}
	}
	c.GenerateConfigClient()
}

// GenerateConfigClient 生成给客户端的配置
func (c *RoomRankConfig) GenerateConfigClient() {
	configClient := &RoomRankConfigClient{
		Id: c.Id,
	}
	c.Client = configClient
}