feat(fight_tawor): 优化试炼之塔和勇者之塔战斗逻辑

- 修正函数注释格式,使用正确的缩进格式化参数说明
- 移除硬编码的MapID设置,统一在EnterMap/LeaveMap中处理
- 将进入地图逻辑改为离开地图,优化战斗流程
- 简化退出战斗逻辑,移除重复的MapID设置

refactor(config): 重命名塔配置模型和接口前缀

- 将试炼之塔模型TrialTowerConfig重命名为Tower500Config
- 将勇者之塔模型BraveTowerConfig重命名为Tower600Config
- 移除重复的业务操作方法,统一使用基础配置
- 更新Boss控制器接口前缀从/monster/boss到/config/boss

refactor(boss): 移除不必要的导入和扩展结构

- 移除boss_pet.go中的冗余data包导入
- 移除BossConfigEX扩展结构,简化模型
This commit is contained in:
2025-12-26 05:41:51 +08:00
parent fd4c494530
commit b8d6772256
12 changed files with 146 additions and 213 deletions

View File

@@ -1,7 +1,6 @@
package model
import (
"blazing/common/data"
"blazing/cool"
)
@@ -19,12 +18,6 @@ type BossConfig struct {
// ISgift uint32 `gorm:"not null;default:0;comment:'是否是礼物'" json:"is_gif"`
}
// BossConfigEX 扩展BOSS配置模型用于前端/业务层的数组格式解析)
type BossConfigEX struct {
BossConfig
Color data.GlowFilter `json:"color"`
}
// TableName 指定BossConfig对应的数据库表名
func (*BossConfig) TableName() string {
return TableNameBossConfig

View File

@@ -2,8 +2,6 @@ package model
import (
"blazing/cool"
"errors"
"fmt"
)
// 表名常量定义:试炼之塔配置表
@@ -32,112 +30,27 @@ func NewBaseTowerConfig() BaseTowerConfig {
}
}
// TrialTowerConfig 试炼之塔核心配置模型(与勇者之塔结构完全一致,无额外专属字段)
type TrialTowerConfig struct {
// Tower500Config 试炼之塔核心配置模型(与勇者之塔结构完全一致,无额外专属字段)
type Tower500Config struct {
BaseTowerConfig
}
// -------------------------- 核心配套方法(与勇者之塔完全一致)--------------------------
func (*TrialTowerConfig) TableName() string {
func (*Tower500Config) TableName() string {
return TableNameTrialTowerConfig
}
func (*TrialTowerConfig) GroupName() string {
func (*Tower500Config) GroupName() string {
return "default"
}
func NewTrialTowerConfig() *TrialTowerConfig {
return &TrialTowerConfig{
func New500TowerConfig() *Tower500Config {
return &Tower500Config{
BaseTowerConfig: NewBaseTowerConfig(),
}
}
// -------------------------- 业务操作方法(与勇者之塔逻辑完全一致,仅模型标识不同)--------------------------
// AddBossId 为试炼之塔添加单个BOSS ID避免重复
func (t *TrialTowerConfig) AddBossId(bossId uint32) error {
if bossId == 0 {
return errors.New("BOSS ID不能为空不能为0")
}
for _, id := range t.BossIds {
if id == bossId {
return fmt.Errorf("BOSS ID%d已绑定试炼之塔%d层无需重复添加", bossId, t.TowerLevel)
}
}
t.BossIds = append(t.BossIds, bossId)
return nil
}
// AddItemRewardId 为试炼之塔添加单个奖励物品ID避免重复
func (t *TrialTowerConfig) AddItemRewardId(itemId uint32) error {
if itemId == 0 {
return errors.New("奖励物品ID不能为空不能为0")
}
for _, id := range t.ItemRewardIds {
if id == itemId {
return fmt.Errorf("奖励物品ID%d已绑定试炼之塔%d层无需重复添加", itemId, t.TowerLevel)
}
}
t.ItemRewardIds = append(t.ItemRewardIds, itemId)
return nil
}
// AddElfRewardId 为试炼之塔添加单个奖励精灵ID避免重复
func (t *TrialTowerConfig) AddElfRewardId(elfId uint32) error {
if elfId == 0 {
return errors.New("奖励精灵ID不能为空不能为0")
}
for _, id := range t.ElfRewardIds {
if id == elfId {
return fmt.Errorf("奖励精灵ID%d已绑定试炼之塔%d层无需重复添加", elfId, t.TowerLevel)
}
}
t.ElfRewardIds = append(t.ElfRewardIds, elfId)
return nil
}
// RemoveBossId 从试炼之塔移除单个BOSS ID
func (t *TrialTowerConfig) RemoveBossId(bossId uint32) error {
if bossId == 0 {
return errors.New("BOSS ID不能为空不能为0")
}
for i, id := range t.BossIds {
if id == bossId {
t.BossIds = append(t.BossIds[:i], t.BossIds[i+1:]...)
return nil
}
}
return fmt.Errorf("试炼之塔%d层未绑定BOSS ID%d无法移除", t.TowerLevel, bossId)
}
// RemoveItemRewardId 从试炼之塔移除单个奖励物品ID
func (t *TrialTowerConfig) RemoveItemRewardId(itemId uint32) error {
if itemId == 0 {
return errors.New("奖励物品ID不能为空不能为0")
}
for i, id := range t.ItemRewardIds {
if id == itemId {
t.ItemRewardIds = append(t.ItemRewardIds[:i], t.ItemRewardIds[i+1:]...)
return nil
}
}
return fmt.Errorf("试炼之塔%d层未绑定奖励物品ID%d无法移除", t.TowerLevel, itemId)
}
// RemoveElfRewardId 从试炼之塔移除单个奖励精灵ID
func (t *TrialTowerConfig) RemoveElfRewardId(elfId uint32) error {
if elfId == 0 {
return errors.New("奖励精灵ID不能为空不能为0")
}
for i, id := range t.ElfRewardIds {
if id == elfId {
t.ElfRewardIds = append(t.ElfRewardIds[:i], t.ElfRewardIds[i+1:]...)
return nil
}
}
return fmt.Errorf("试炼之塔%d层未绑定奖励精灵ID%d无法移除", t.TowerLevel, elfId)
}
// -------------------------- 表结构自动同步 --------------------------
func init() {
cool.CreateTable(&TrialTowerConfig{})
cool.CreateTable(&Tower500Config{})
}

View File

@@ -2,8 +2,6 @@ package model
import (
"blazing/cool"
"errors"
"fmt"
)
// 表名常量定义:勇者之塔配置表
@@ -11,112 +9,27 @@ const (
TableNameBraveTowerConfig = "brave_tower_config" // 勇者之塔配置表核心记录层数、BOSS数组、奖励物品/精灵)
)
// BraveTowerConfig 勇者之塔核心配置模型(结构简洁,无额外专属字段)
type BraveTowerConfig struct {
// Tower600Config 勇者之塔核心配置模型(结构简洁,无额外专属字段)
type Tower600Config struct {
BaseTowerConfig
}
// -------------------------- 核心配套方法(结构与试炼之塔完全一致)--------------------------
func (*BraveTowerConfig) TableName() string {
func (*Tower600Config) TableName() string {
return TableNameBraveTowerConfig
}
func (*BraveTowerConfig) GroupName() string {
func (*Tower600Config) GroupName() string {
return "default"
}
func NewBraveTowerConfig() *BraveTowerConfig {
return &BraveTowerConfig{
func New600TowerConfig() *Tower600Config {
return &Tower600Config{
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{})
cool.CreateTable(&Tower600Config{})
}