package model

import (
	"blazing/cool"
)

// 资源采集计数表名
const TableNameResourceCollection = "resource_collection"

func NewTalk() *ResourceCollection {
	return &ResourceCollection{
		Model: cool.NewModel(),
	}
}

// ResourceCollection 记录玩家每种资源的采集计数
type ResourceCollection struct {
	*cool.Model
	PlayerID uint64 `gorm:"not null;index:idx_player_resource;comment:'所属玩家ID'" json:"player_id"`
	Data     string `gorm:"type:text;not null;comment:'全部数据'" json:"data"` //map[uint32]uint32
}
type Talk struct {
	ResourceCollection
	Data map[uint32]uint32 `orm:"data" dc:"资源规格"`
}

// TableName 资源采集表名
func (*ResourceCollection) TableName() string {
	return TableNameResourceCollection
}

// GroupName 资源采集表分组
func (*ResourceCollection) GroupName() string {
	return "default"
}

// // 检查是否可以采集（未超过每日上限）
// func (rc *ResourceCollection) CanCollect(maxDaily uint32) bool {
// 	// 先检查是否需要重置计数
// 	rc.checkAndReset()
// 	return rc.CollectCnt < maxDaily
// }

// // 增加采集计数，返回是否成功
// func (rc *ResourceCollection) AddCollectCount(maxDaily uint32) bool {
// 	if !rc.CanCollect(maxDaily) {
// 		return false
// 	}
// 	rc.CollectCnt++
// 	return true
// }

// // 检查并重置每日计数
// func (rc *ResourceCollection) checkAndReset() {
// 	now := time.Now()
// 	if now.After(rc.DailyReset) {
// 		rc.CollectCnt = 0
// 		// 重置为明天24点
// 		rc.DailyReset = now.Truncate(24 * time.Hour).Add(24 * time.Hour)
// 	}
// }

// ResourceConfig 资源配置信息（对应XML中的配置）
type ResourceConfig struct {
	Type        uint32 `json:"type"`          // 资源类型ID
	MapID       uint32 `json:"map_id"`        // 所在地图ID
	Name        string `json:"name"`          // 资源名称
	CollectType string `json:"collect_type"`  // 采集类型
	MaxDailyCnt uint32 `json:"max_daily_cnt"` // 每日最大采集次数
	Unit        string `json:"unit"`          // 单位
	Dir         uint32 `json:"dir"`           // 方向
}

// 初始化创建表
func init() {
	cool.CreateTable(&ResourceCollection{})
	// 可以在这里加载资源配置
	// LoadResourceConfigsFromXML()
}
