feat(pet): 实现宠物展示功能和稀有宠物塔配置

- 添加PetDisplay字段到Player结构体,用于管理宠物展示状态
- 实现PlayerShowPet方法,支持宠物展示逻辑,包括设置展示标识、
  检查宠物存在性并返回相应错误码
- 在Space中添加RefreshUserInfo方法,用于刷新用户信息并应用
  宠物展示信息到SimpleInfo
- 扩展SimpleInfo结构体,添加PetRide字段用于宠物骑乘标识
This commit is contained in:
昔念
2026-04-01 02:48:09 +08:00
parent acfdf5679d
commit 81c16590d6
11 changed files with 179 additions and 57 deletions

View File

@@ -189,13 +189,28 @@ func (h Controller) TogglePetBagWarehouse(
// PlayerShowPet 精灵展示
func (h Controller) PlayerShowPet(
data *pet.PetShowInboundInfo, player *player.Player) (result *pet.PetShowOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &pet.PetShowOutboundInfo{}
result = &pet.PetShowOutboundInfo{
UserID: data.Head.UserID,
CatchTime: data.CatchTime,
Flag: data.Flag,
}
_, currentPet, ok := player.FindPet(data.CatchTime)
if ok {
result = buildPetShowOutboundInfo(data.Head.UserID, data.Flag, currentPet)
if data.Flag == 0 {
player.SetPetDisplay(0, nil)
player.GetSpace().RefreshUserInfo(player)
defer player.GetSpace().Broadcast(player, data.Head.CMD, result)
return
}
if !ok {
return nil, errorcode.ErrorCodes.ErrPokemonNotExists
}
player.SetPetDisplay(data.Flag, currentPet)
player.GetSpace().RefreshUserInfo(player)
result = buildPetShowOutboundInfo(data.Head.UserID, data.Flag, currentPet)
defer player.GetSpace().Broadcast(player, data.Head.CMD, result)
return
}