package model

import (
	"strings"
	"time"
)

// 基础配置类型(key)
const (
	BaseConfig_ChatCfg = "ChatCfg" // 聊天配置
)

type Timestamp int64

func (t *Timestamp) UnmarshalJSON(b []byte) error {
	// Remove quotes
	s := strings.Trim(string(b), "\"")

	// Parse the date string
	parsedTime, err := time.ParseInLocation("2006/01/02", s, time.Local)
	if err != nil {
		return err
	}

	// Convert to Unix timestamp
	*t = Timestamp(parsedTime.Unix())
	return nil
}

// 游戏基础表|Vertical-BaseData exported from Base表.xlsx
type BaseData struct {
	ChapterStartTime    Timestamp `json:"StartTime"`           // 合作模式的周期开始时间，从此天0点开始，包含此天。
	ChatMsgNumMax       int64     `json:"ChatMsgNumMax"`       // 每个频道最多保留对话上限
	ChatContentMax      int64     `json:"ChatContentMax"`      // 单个聊天对话最大字节数，1个汉字=2个字节
	ChatSendCDTs        int64     `json:"ChatSendCDTs"`        // 消息发送CD /秒
	SceneSkillDefault   string    `json:"SceneSkillDefault"`   // 场景皮肤技能穿戴界面，无穿戴皮肤时，默认显示的场景龙骨展示
	ChatPrivateEffectTs int64     `json:"ChatPrivateEffectTs"` // 私聊频道存在时间，单位/天
	Rename              int64     `json:"Rename"`              // 改名花费钻石金额（首次免费，之后按此扣费）
	ChatTime            int64     `json:"ChatTime"`            // 聊天频道时间符出现间隔（秒）
	CoolingTime         int64     `json:"CoolingTime"`         // 合作模式邀请好友时的冷却时间（单位秒）
	EquipBagMax         int64     `json:"EquipBagMax"`         // 装备背包上限 /件
	PrayerConsume       int64     `json:"PrayerConsume"`       // 祈愿消耗幸运币数 全局通用
	RecordingSharing    []int64   `json:"RecordingSharing"`    // 抖音【录制分享】奖励
	RecordingSharingNum int64     `json:"RecordingSharingNum"` // 抖音【录制分享】奖励每日2次
	StartGift           []int64   `json:"StartGift"`           // 抖音【启动礼包】奖励，每日1次
	AddGift             []int64   `json:"AddGift"`             // 抖音【添加好礼】奖励，一次
	OfflineStamina      int64     `json:"OfflineStamina"`      // 前日离线，每小时获得的体力值
}
