diff --git a/modules/blazing/model/ItemBonus.go b/modules/blazing/model/ItemBonus.go new file mode 100644 index 00000000..464566c9 --- /dev/null +++ b/modules/blazing/model/ItemBonus.go @@ -0,0 +1,111 @@ +package model + +import ( + "blazing/cool" +) + +// ---------------- 精灵奖励表(MonBonus)---------------- +// 表名常量(遵循小写+下划线命名规范) +const TableNameMonBonus = "mon_bonus" + +// MonBonus 精灵奖励表 +// 存储打赢BOSS/野怪后奖励的精灵属性配置(包含核心战斗属性、特性、闪光、性格等) +type MonBonus struct { + *cool.Model // 嵌入基础Model(主键ID、创建/更新时间等通用字段) + + // 核心唯一标识 + MonBonusID uint32 `gorm:"not null;uniqueIndex:idx_mon_bonus_id;comment:'精灵奖励唯一标识ID(对应XML中的MonBonusOutID)'" json:"mon_bonus_id"` + + // 你指定的精灵核心属性字段 + MonID int32 `gorm:"not null;index:idx_mon_id;comment:'BOSS对应的精灵ID'" json:"mon_id"` + Hp int32 `gorm:"not null;comment:'BOSS血量值(LvHpMatchUser非0时此配置无效)'" json:"hp"` + Lv int32 `gorm:"not null;comment:'BOSS等级(LvHpMatchUser非0时此配置无效)'" json:"lv"` + Atk int32 `gorm:"not null;comment:'BOSS物理攻击'" json:"atk"` + Def int32 `gorm:"not null;comment:'BOSS物理防御'" json:"def"` + Spatk int32 `gorm:"not null;comment:'BOSS特殊攻击'" json:"spatk"` + Spdef int32 `gorm:"not null;comment:'BOSS特殊防御'" json:"spdef"` + Spd int32 `gorm:"not null;comment:'BOSS速度'" json:"spd"` + + // 精灵扩展属性(贴合游戏业务) + Trait string `gorm:"type:varchar(64);default:'';comment:'精灵特性(例:猛火、蓄水)'" json:"trait"` + IsShiny bool `gorm:"not null;default:false;comment:'是否为闪光精灵(true-是,false-否)'" json:"is_shiny"` + Personality string `gorm:"type:varchar(64);default:'';comment:'精灵性格(例:固执、保守)'" json:"personality"` + + // 通用配置字段 + IsEnabled bool `gorm:"not null;default:true;comment:'该精灵奖励配置是否启用'" json:"is_enabled"` + Desc string `gorm:"type:varchar(512);default:'';comment:'精灵奖励描述(例:击败火焰BOSS奖励闪光喷火龙)'" json:"desc"` +} + +// TableName 指定精灵奖励表名(遵循现有规范) +func (*MonBonus) TableName() string { + return TableNameMonBonus +} + +// GroupName 指定表分组(与其他表保持一致的默认分组) +func (*MonBonus) GroupName() string { + return "default" +} + +// NewMonBonus 创建精灵奖励表实例(初始化基础Model) +func NewMonBonus() *MonBonus { + return &MonBonus{ + Model: cool.NewModel(), + } +} + +// ---------------- 物品奖励表(ItemBonus)---------------- +// 表名常量(遵循小写+下划线命名规范) +const TableNameItemBonus = "item_bonus" + +// ItemBonus 物品奖励表 +// 存储打赢BOSS/野怪后奖励的物品配置(物品ID+数量,支持单条记录对应单个物品,便于灵活配置) +type ItemBonus struct { + *cool.Model // 嵌入基础Model(主键ID、创建/更新时间等通用字段) + + // 核心唯一标识 + ItemBonusID uint32 `gorm:"not null;uniqueIndex:idx_item_bonus_id;comment:'物品奖励唯一标识ID(对应XML中的ItemBonusOutID/ItemBonusID)'" json:"item_bonus_id"` + + // 物品核心配置字段 + ItemID uint32 `gorm:"not null;index:idx_item_id;comment:'奖励物品ID'" json:"item_id"` + Count int32 `gorm:"not null;default:1;comment:'奖励物品数量(支持正数,负数表示扣减)'" json:"count"` + + // 通用配置字段 + IsEnabled bool `gorm:"not null;default:true;comment:'该物品奖励配置是否启用'" json:"is_enabled"` + Desc string `gorm:"type:varchar(512);default:'';comment:'物品奖励描述(例:击败岩石BOSS奖励高级伤药x5)'" json:"desc"` +} + +// TableName 指定物品奖励表名(遵循现有规范) +func (*ItemBonus) TableName() string { + return TableNameItemBonus +} + +// GroupName 指定表分组(与其他表保持一致的默认分组) +func (*ItemBonus) GroupName() string { + return "default" +} + +// NewItemBonus 创建物品奖励表实例(初始化基础Model) +func NewItemBonus() *ItemBonus { + return &ItemBonus{ + Model: cool.NewModel(), + } +} + +// ---------------- 可选辅助方法(提升易用性)---------------- + +// AdjustCount 调整物品奖励数量(支持增量/减量) +func (i *ItemBonus) AdjustCount(delta int32) { + i.Count += delta + // 防止数量为负数(根据业务需求可选,若允许扣减则注释此行) + if i.Count < 0 { + i.Count = 0 + } +} + +// ---------------- 表初始化逻辑(与现有表保持一致)---------------- + +// init 程序启动时自动创建精灵奖励表和物品奖励表(若不存在) +func init() { + cool.CreateTable(&MonBonus{}) + cool.CreateTable(&ItemBonus{}) +}