Files
bl/modules/config/service/tower.go
昔念 81c16590d6 ```
feat(pet): 实现宠物展示功能和稀有宠物塔配置

- 添加PetDisplay字段到Player结构体,用于管理宠物展示状态
- 实现PlayerShowPet方法,支持宠物展示逻辑,包括设置展示标识、
  检查宠物存在性并返回相应错误码
- 在Space中添加RefreshUserInfo方法,用于刷新用户信息并应用
  宠物展示信息到SimpleInfo
- 扩展SimpleInfo结构体,添加PetRide字段用于宠物骑乘标识
2026-04-01 02:48:09 +08:00

90 lines
1.7 KiB
Go

package service
import (
"blazing/cool"
"blazing/modules/config/model"
"github.com/gogf/gf/v2/database/gdb"
)
type TowerType uint32
const (
TowerType1 TowerType = 1
TowerType110 TowerType = 110
TowerType500 TowerType = 500
TowerType600 TowerType = 600
)
type TowerService struct {
*cool.Service
towerType TowerType
tableName string
}
func NewTowerService(towerType TowerType) *TowerService {
var tableName string
switch towerType {
case TowerType1:
tableName = model.TableNameRarePetTowerConfig
case TowerType110:
tableName = model.TableNamedARKTowerConfig
case TowerType500:
tableName = model.TableNameTrialTowerConfig
case TowerType600:
tableName = model.TableNameBraveTowerConfig
default:
panic("unsupported tower type")
}
unifiedModel := &UnifiedTowerModel{
tableName: tableName,
}
return &TowerService{
Service: &cool.Service{Model: unifiedModel},
towerType: towerType,
tableName: tableName,
}
}
type UnifiedTowerModel struct {
*cool.Model
tableName string
}
func (m *UnifiedTowerModel) TableName() string {
return m.tableName
}
func (m *UnifiedTowerModel) GroupName() string {
return "default"
}
func (s *TowerService) Boss(towerLevel ...uint32) []model.BaseTowerConfig {
query := dbm_enable(s.Model).WhereIn("tower_level", towerLevel).OrderAsc("tower_level")
var config []model.BaseTowerConfig
query.Cache(gdb.CacheOption{
Force: false,
}).Scan(&config)
return config
}
func NewTower1Service() *TowerService {
return NewTowerService(TowerType1)
}
func NewTower110Service() *TowerService {
return NewTowerService(TowerType110)
}
func NewTower500Service() *TowerService {
return NewTowerService(TowerType500)
}
func NewTower600Service() *TowerService {
return NewTowerService(TowerType600)
}