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

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

61 lines
1.3 KiB
Go

package player
import (
"blazing/common/data"
spaceinfo "blazing/logic/service/space/info"
"blazing/modules/player/model"
)
type PetDisplayState struct {
Flag uint32
CatchTime uint32
PetID uint32
Dv uint32
ShinyInfo []data.GlowFilter
SkinID uint32
}
func (p *Player) SetPetDisplay(flag uint32, petInfo *model.PetInfo) {
if flag == 0 || petInfo == nil {
p.PetDisplay = PetDisplayState{}
return
}
p.PetDisplay = PetDisplayState{
Flag: flag,
CatchTime: petInfo.CatchTime,
PetID: petInfo.ID,
Dv: petInfo.Dv,
ShinyInfo: append([]data.GlowFilter(nil), petInfo.ShinyInfo...),
SkinID: petInfo.SkinID,
}
}
func (p *Player) ApplyPetDisplayInfo(out *spaceinfo.SimpleInfo) {
if out == nil {
return
}
out.SpiritTime = 0
out.SpiritID = 0
out.PetDV = 0
out.ShinyLen = 0
out.ShinyInfo = nil
out.PetSkin = 0
out.PetRide = 0
if p.PetDisplay.CatchTime == 0 || p.PetDisplay.PetID == 0 || p.PetDisplay.Flag == 0 {
return
}
out.SpiritTime = p.PetDisplay.CatchTime
out.SpiritID = p.PetDisplay.PetID
out.PetDV = p.PetDisplay.Dv
out.ShinyInfo = append([]data.GlowFilter(nil), p.PetDisplay.ShinyInfo...)
out.ShinyLen = uint32(len(out.ShinyInfo))
out.PetSkin = p.PetDisplay.SkinID
if p.PetDisplay.Flag == 2 {
out.PetRide = 2
}
}