refactor: 重构宠物信息构建逻辑并新增技能效果
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user