Files
bl/modules/config/model/tower_600.go

123 lines
3.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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{})
}