refactor: 重构宠物信息构建逻辑并新增技能效果

This commit is contained in:
xinian
2026-03-31 09:19:36 +08:00
committed by cnb
parent 35434fd1d8
commit ccb4ad8fdf
5 changed files with 723 additions and 28 deletions

View File

@@ -6,10 +6,43 @@ import (
"blazing/logic/service/fight"
"blazing/logic/service/pet"
"blazing/logic/service/player"
"github.com/jinzhu/copier"
"blazing/modules/player/model"
)
func buildPetShortInfo(info model.PetInfo) pet.PetShortInfo {
return pet.PetShortInfo{
ID: info.ID,
CatchTime: info.CatchTime,
Level: info.Level,
SkinID: info.SkinID,
ShinyLen: info.ShinyLen,
ShinyInfo: info.ShinyInfo,
}
}
func buildPetListOutboundInfo(petList []model.Pet) *pet.GetPetListOutboundInfo {
result := &pet.GetPetListOutboundInfo{
ShortInfoList: make([]pet.PetShortInfo, len(petList)),
}
for i := range petList {
result.ShortInfoList[i] = buildPetShortInfo(petList[i].Data)
}
return result
}
func buildPetShowOutboundInfo(userID, flag uint32, info *model.PetInfo) *pet.PetShowOutboundInfo {
return &pet.PetShowOutboundInfo{
UserID: userID,
CatchTime: info.CatchTime,
ID: info.ID,
Flag: flag,
Dv: info.Dv,
ShinyLen: info.ShinyLen,
ShinyInfo: info.ShinyInfo,
SkinID: info.SkinID,
}
}
// GetPetInfo 获取精灵信息
// data: 包含精灵捕获时间的输入信息
// player: 当前玩家对象
@@ -44,14 +77,7 @@ func (h Controller) GetPetList(
data *pet.GetPetListInboundEmpty,
player *player.Player) (result *pet.GetPetListOutboundInfo,
err errorcode.ErrorCode) {
result = &pet.GetPetListOutboundInfo{}
petList := player.Service.Pet.PetInfo(0) // 获取未放生的精灵
result.ShortInfoList = make([]pet.PetShortInfo, len(petList))
for i, petItem := range petList {
copier.Copy(&result.ShortInfoList[i], &petItem.Data)
}
return result, 0
return buildPetListOutboundInfo(player.Service.Pet.PetInfo(0)), 0
}
// GetPetReleaseList 获取放生列表
@@ -62,14 +88,7 @@ func (h Controller) GetPetReleaseList(
data *pet.GetPetListFreeInboundEmpty,
player *player.Player) (result *pet.GetPetListOutboundInfo,
err errorcode.ErrorCode) {
result = &pet.GetPetListOutboundInfo{}
petList := player.Service.Pet.PetInfo(1) // 获取已放生的精灵
result.ShortInfoList = make([]pet.PetShortInfo, len(petList))
for i, petItem := range petList {
copier.Copy(&result.ShortInfoList[i], &petItem.Data)
}
return result, 0
return buildPetListOutboundInfo(player.Service.Pet.PetInfo(1)), 0
}
// PetReleaseToWarehouse 将精灵从仓库包中放生
@@ -174,9 +193,7 @@ func (h Controller) PlayerShowPet(
_, currentPet, ok := player.FindPet(data.CatchTime)
if ok {
copier.Copy(&result, currentPet)
result.Flag = data.Flag
result.UserID = data.Head.UserID
result = buildPetShowOutboundInfo(data.Head.UserID, data.Flag, currentPet)
defer player.GetSpace().Broadcast(player, data.Head.CMD, result)
}
return
@@ -228,14 +245,9 @@ func (h Controller) PetFirst(
func (h Controller) SetPetExp(data *pet.PetSetExpInboundInfo, player *player.Player) (result *pet.PetSetExpOutboundInfo, err errorcode.ErrorCode) {
_, currentPet, found := player.FindPet(data.CatchTime)
if found && currentPet.Level < 100 {
player.AddPetExp(currentPet, data.Exp)
return &pet.PetSetExpOutboundInfo{
Exp: player.Info.ExpPool,
}, 0
return &pet.PetSetExpOutboundInfo{Exp: player.Info.ExpPool}, 0
}
return &pet.PetSetExpOutboundInfo{
Exp: player.Info.ExpPool,
}, errorcode.ErrorCodes.ErrSystemError
return &pet.PetSetExpOutboundInfo{Exp: player.Info.ExpPool}, errorcode.ErrorCodes.ErrSystemError
}