feat(pet): 实现宠物展示功能和稀有宠物塔配置 - 添加PetDisplay字段到Player结构体,用于管理宠物展示状态 - 实现PlayerShowPet方法,支持宠物展示逻辑,包括设置展示标识、 检查宠物存在性并返回相应错误码 - 在Space中添加RefreshUserInfo方法,用于刷新用户信息并应用 宠物展示信息到SimpleInfo - 扩展SimpleInfo结构体,添加PetRide字段用于宠物骑乘标识
90 lines
1.7 KiB
Go
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)
|
|
}
|