123 lines
3.7 KiB
Go
123 lines
3.7 KiB
Go
package model
|
||
|
||
import (
|
||
"blazing/cool"
|
||
"errors"
|
||
"fmt"
|
||
)
|
||
|
||
// 表名常量定义:勇者之塔配置表
|
||
const (
|
||
TableNameBraveTowerConfig = "brave_tower_config" // 勇者之塔配置表(核心记录层数、BOSS数组、奖励物品/精灵)
|
||
)
|
||
|
||
// BraveTowerConfig 勇者之塔核心配置模型(结构简洁,无额外专属字段)
|
||
type BraveTowerConfig struct {
|
||
BaseTowerConfig
|
||
}
|
||
|
||
// -------------------------- 核心配套方法(结构与试炼之塔完全一致)--------------------------
|
||
func (*BraveTowerConfig) TableName() string {
|
||
return TableNameBraveTowerConfig
|
||
}
|
||
|
||
func (*BraveTowerConfig) GroupName() string {
|
||
return "default"
|
||
}
|
||
|
||
func NewBraveTowerConfig() *BraveTowerConfig {
|
||
return &BraveTowerConfig{
|
||
BaseTowerConfig: NewBaseTowerConfig(),
|
||
}
|
||
}
|
||
|
||
// -------------------------- 业务操作方法(两个塔方法逻辑完全一致)--------------------------
|
||
// AddBossId 为勇者之塔添加单个BOSS ID(避免重复)
|
||
func (b *BraveTowerConfig) AddBossId(bossId uint32) error {
|
||
if bossId == 0 {
|
||
return errors.New("BOSS ID不能为空(不能为0)")
|
||
}
|
||
for _, id := range b.BossIds {
|
||
if id == bossId {
|
||
return fmt.Errorf("BOSS ID%d已绑定勇者之塔%d层,无需重复添加", bossId, b.TowerLevel)
|
||
}
|
||
}
|
||
b.BossIds = append(b.BossIds, bossId)
|
||
return nil
|
||
}
|
||
|
||
// AddItemRewardId 为勇者之塔添加单个奖励物品ID(避免重复)
|
||
func (b *BraveTowerConfig) AddItemRewardId(itemId uint32) error {
|
||
if itemId == 0 {
|
||
return errors.New("奖励物品ID不能为空(不能为0)")
|
||
}
|
||
for _, id := range b.ItemRewardIds {
|
||
if id == itemId {
|
||
return fmt.Errorf("奖励物品ID%d已绑定勇者之塔%d层,无需重复添加", itemId, b.TowerLevel)
|
||
}
|
||
}
|
||
b.ItemRewardIds = append(b.ItemRewardIds, itemId)
|
||
return nil
|
||
}
|
||
|
||
// AddElfRewardId 为勇者之塔添加单个奖励精灵ID(避免重复)
|
||
func (b *BraveTowerConfig) AddElfRewardId(elfId uint32) error {
|
||
if elfId == 0 {
|
||
return errors.New("奖励精灵ID不能为空(不能为0)")
|
||
}
|
||
for _, id := range b.ElfRewardIds {
|
||
if id == elfId {
|
||
return fmt.Errorf("奖励精灵ID%d已绑定勇者之塔%d层,无需重复添加", elfId, b.TowerLevel)
|
||
}
|
||
}
|
||
b.ElfRewardIds = append(b.ElfRewardIds, elfId)
|
||
return nil
|
||
}
|
||
|
||
// RemoveBossId 从勇者之塔移除单个BOSS ID
|
||
func (b *BraveTowerConfig) RemoveBossId(bossId uint32) error {
|
||
if bossId == 0 {
|
||
return errors.New("BOSS ID不能为空(不能为0)")
|
||
}
|
||
for i, id := range b.BossIds {
|
||
if id == bossId {
|
||
b.BossIds = append(b.BossIds[:i], b.BossIds[i+1:]...)
|
||
return nil
|
||
}
|
||
}
|
||
return fmt.Errorf("勇者之塔%d层未绑定BOSS ID%d,无法移除", b.TowerLevel, bossId)
|
||
}
|
||
|
||
// RemoveItemRewardId 从勇者之塔移除单个奖励物品ID
|
||
func (b *BraveTowerConfig) RemoveItemRewardId(itemId uint32) error {
|
||
if itemId == 0 {
|
||
return errors.New("奖励物品ID不能为空(不能为0)")
|
||
}
|
||
for i, id := range b.ItemRewardIds {
|
||
if id == itemId {
|
||
b.ItemRewardIds = append(b.ItemRewardIds[:i], b.ItemRewardIds[i+1:]...)
|
||
return nil
|
||
}
|
||
}
|
||
return fmt.Errorf("勇者之塔%d层未绑定奖励物品ID%d,无法移除", b.TowerLevel, itemId)
|
||
}
|
||
|
||
// RemoveElfRewardId 从勇者之塔移除单个奖励精灵ID
|
||
func (b *BraveTowerConfig) RemoveElfRewardId(elfId uint32) error {
|
||
if elfId == 0 {
|
||
return errors.New("奖励精灵ID不能为空(不能为0)")
|
||
}
|
||
for i, id := range b.ElfRewardIds {
|
||
if id == elfId {
|
||
b.ElfRewardIds = append(b.ElfRewardIds[:i], b.ElfRewardIds[i+1:]...)
|
||
return nil
|
||
}
|
||
}
|
||
return fmt.Errorf("勇者之塔%d层未绑定奖励精灵ID%d,无法移除", b.TowerLevel, elfId)
|
||
}
|
||
|
||
// -------------------------- 表结构自动同步 --------------------------
|
||
func init() {
|
||
cool.CreateTable(&BraveTowerConfig{})
|
||
}
|