feat(model): 新增金豆消费、CDK配置、炫彩皮肤及双塔模型,优化物品奖励和BOSS配置

This commit is contained in:
1
2025-12-21 18:13:54 +00:00
parent 4cffc3d510
commit edee754a22
12 changed files with 579 additions and 26 deletions

View File

@@ -0,0 +1,122 @@
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{})
}