112 lines
4.5 KiB
Go
112 lines
4.5 KiB
Go
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{})
|
||
}
|