package model import ( "blazing/cool" ) // 这个是替换盖亚的实现,因为是单独类的 const ( // 新增地图节点表常量 TableNameMapNode = "config_map_node" // 地图节点配置表(记录地图各节点的类型、绑定BOSS、剧情等信息) ) // 节点类型常量定义 const ( MapNodeTypeBoss = 1 // BOSS节点 MapNodeTypeNPC = 2 // NPC节点 MapNodeTypeScene = 3 // 场景触发节点 MapNodeTypePortal = 4 // 传送门节点 ) // MapNode 地图节点配置模型 type MapNode struct { *BaseConfig // 基础关联字段 MapID uint32 `gorm:"not null;index;comment:'所属地图ID'" json:"map_id" description:"地图ID"` NodeName string `gorm:"type:varchar(100);default:'';comment:'节点名称'" json:"node_name" description:"节点名称"` //节点激活脚本 NodeActiveScript string `gorm:"type:text;comment:'节点激活脚本'" json:"node_active_script" description:"节点激活脚本"` // 节点核心配置 NodeType int `gorm:"not null;default:0;comment:'节点类型(1-BOSS,2-NPC,3-场景触发,4-传送门)'" json:"node_type" description:"节点类型"` PositionX float64 `gorm:"not null;default:0;comment:'节点X坐标'" json:"position_x" description:"X坐标"` PositionY float64 `gorm:"not null;default:0;comment:'节点Y坐标'" json:"position_y" description:"Y坐标"` // 剧情相关配置 TriggerPlotID uint32 `gorm:"default:0;comment:'触发剧情ID(0表示无剧情)'" json:"trigger_plot_id" description:"触发剧情ID"` BindPlotIDs []uint32 `gorm:"type:int[];comment:'绑定的剧情ID列表'" json:"bind_plot_ids" description:"绑定剧情ID列表"` //完成后的脚本回调,比如战胜和击败绑定不同的任务ID,以及剧情绑定不同的ID PlotFinishScript string `gorm:"type:text;comment:'剧情完成后脚本回调'" json:"plot_finish_script" description:"剧情完成后脚本回调"` // BOSS相关配置 BindBossID uint32 `gorm:"default:0;comment:'绑定的BOSS ID(0表示无BOSS)'" json:"bind_boss_id" description:"绑定BOSS ID"` } // -------------------------- MapNode 配套方法(遵循项目规范)-------------------------- // TableName 指定数据库表名 func (*MapNode) TableName() string { return TableNameMapNode } // GroupName 指定分组名称(与原有规范保持一致) func (*MapNode) GroupName() string { return "default" } // NewMapNode 创建MapNode实例 func NewMapNode() *MapNode { return &MapNode{ BaseConfig: NewBaseConfig(), } } // GetNodeTypeName 获取节点类型的中文名称(方便展示) func (m *MapNode) GetNodeTypeName() string { switch m.NodeType { case MapNodeTypeBoss: return "BOSS节点" case MapNodeTypeNPC: return "NPC节点" case MapNodeTypeScene: return "场景触发节点" case MapNodeTypePortal: return "传送门节点" default: return "未知节点" } } // -------------------------- 表结构自动同步 -------------------------- func init() { // 同步原有地图配置表 cool.CreateTable(&MapConfig{}) // 同步新增的地图节点配置表 cool.CreateTable(&MapNode{}) }