refactor(logic): 重构服务器启动逻辑与任务状态管理

- 移除了 `gcmd` 包在 controller 中的直接使用,改为通过参数传递端口和服务器类型
- 统一使用 `GetTask` 和 `SetTask` 方法替代直接访问 `TaskList` 数组,提升代码可维护性
- 修改了战斗逻辑中部分调试打印语句,并优化战斗循环结束日志输出
- 调整了新手玩家初始化流程,默认完成新手任务4
- 更新了数据库模型字段及结构定义,如增加 `max_ts` 字段、扩展 `TaskList` 长度等
- 改进了宠物添加逻辑,采用 SQL 方式确保捕捉时间唯一递增
- 清理了无用或注释掉的旧代码块
This commit is contained in:
2025-12-08 17:03:43 +08:00
parent 7005c1047f
commit 8983222dcb
21 changed files with 341 additions and 177 deletions

View File

@@ -0,0 +1,55 @@
package model
import (
"blazing/cool" // 沿用你项目中已有的基础Model包
)
// 表名常量(遵循项目现有命名规范)
const TableNameMineralCollectionConfig = "mineral_collection_config"
// MineralCollectionConfig 挖矿/采集/采摘矿产配置表Model定义
// 字段完全匹配数据表结构,包含最小/最大产出核心字段
type MineralCollectionConfig struct {
*cool.Model // 嵌入基础Model包含id(主键)、createTime、updateTime等通用字段
// MapID 矿产所在地图ID
MapID uint32 `gorm:"column:map_id;not null;index:idx_mineral_collection_config_map_id;comment:矿产所在地图ID" json:"map_id"`
Type uint32 `gorm:"column:type;not null;index:idx_mineral_collection_config_type;comment:类型" json:"type"`
// DailyCollectCount 每日可采集次数
DailyCollectCount uint32 `gorm:"column:daily_collect_count;not null;comment:每日可采集次数" json:"daily_collect_count"`
// ItemID 物品编号对应道具系统ID
ItemID string `gorm:"column:item_id;type:varchar(16);not null;index:idx_mineral_collection_config_item_id;comment:物品编号对应道具系统ID" json:"item_id"`
// ItemMinCount 单次采集最小产出数量
ItemMinCount uint32 `gorm:"column:item_min_count;not null;comment:单次采集最小产出数量" json:"item_min_count"`
// ItemMaxCount 单次采集最大产出数量
ItemMaxCount uint32 `gorm:"column:item_max_count;not null;comment:单次采集最大产出数量" json:"item_max_count"`
// Description 矿产描述
Description string `gorm:"column:description;type:varchar(128); comment:矿产描述" json:"description"`
}
// TableName 指定数据表名(必须匹配数据库表名,遵循项目规范)
func (*MineralCollectionConfig) TableName() string {
return TableNameMineralCollectionConfig
}
// GroupName 指定表分组(与项目现有表保持一致,默认分组)
func (*MineralCollectionConfig) GroupName() string {
return "default"
}
// NewMineralCollectionConfig 创建挖矿配置表实例初始化基础Model
// 保证通用字段createTime/updateTime被正确初始化
func NewMineralCollectionConfig() *MineralCollectionConfig {
return &MineralCollectionConfig{
Model: cool.NewModel(), // 调用基础Model的初始化方法
}
}
// init 程序启动时自动创建数据表(与项目现有表初始化逻辑一致)
// 若项目有统一的表初始化入口,可将此逻辑迁移至对应位置
func init() {
// 自动创建表(不存在则创建,已存在则不操作)
cool.CreateTable(&MineralCollectionConfig{})
}