feat(item): 添加物品相关功能并优化任务和宠物逻辑
- 新增物品检查和添加功能 - 优化任务重置和完成逻辑 - 改进宠物信息获取和展示 - 调整玩家登录和保存机制
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/xmlres"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/pet"
|
||||
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"blazing/modules/blazing/model"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
@@ -15,11 +16,15 @@ func (h *Controller) GetPetInfo(
|
||||
data *pet.InInfo,
|
||||
c *service.Player) (result *pet.OutInfo,
|
||||
err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
return &pet.OutInfo{
|
||||
PetInfo: pi,
|
||||
}, 0
|
||||
}
|
||||
|
||||
t := blservice.NewUserService(c.Info.UserID).GetPetInfo(data.CatchTime)
|
||||
return &pet.OutInfo{
|
||||
PetInfo: t,
|
||||
}, 0
|
||||
}
|
||||
return result, errorcode.ErrorCodes.ErrNoPrerequisiteFacility
|
||||
}
|
||||
|
||||
// 获取仓库列表
|
||||
@@ -29,7 +34,7 @@ func (h *Controller) GetPetList(
|
||||
err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = &pet.GetPetListOutboundInfo{}
|
||||
|
||||
tt := blservice.NewUserService(c.Info.UserID).GetPetList(0) //获得未放生的精灵
|
||||
tt := c.Service.GetPetList(0) //获得未放生的精灵
|
||||
result.ShortInfoList = make([]pet.PetShortInfo, len(tt))
|
||||
for i, v := range tt {
|
||||
|
||||
@@ -51,7 +56,7 @@ func (h *Controller) PetRelease(
|
||||
result = &pet.PetReleaseOutboundInfo{}
|
||||
result.Flag = uint32(data.Flag)
|
||||
|
||||
t := blservice.NewUserService(c.Info.UserID).PetM(int(data.CatchTime), int(data.Flag))
|
||||
t := c.Service.PetM(int(data.CatchTime), int(data.Flag))
|
||||
switch data.Flag {
|
||||
case 0:
|
||||
|
||||
@@ -79,3 +84,53 @@ func (h *Controller) PetRelease(
|
||||
//service.NewUserService(c.Info.UserID).PetAdd( *r)
|
||||
return result, 0
|
||||
}
|
||||
|
||||
// 精灵展示
|
||||
func (h *Controller) PlayerShowPet(
|
||||
data *pet.PetShowInboundInfo, c *service.Player) (result *pet.PetShowOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
results := pet.PetShowOutboundInfo{}
|
||||
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
copier.Copy(&results, pi)
|
||||
results.Flag = data.Flag
|
||||
results.UserID = data.Head.UserID
|
||||
data.Broadcast(c.Info.MapID, results) //同步广播
|
||||
}
|
||||
|
||||
}
|
||||
return result, -1
|
||||
|
||||
}
|
||||
func (h *Controller) PetOneCure(
|
||||
data *pet.PetOneCureInboundInfo, c *service.Player) (result *pet.PetOneCureOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = &pet.PetOneCureOutboundInfo{
|
||||
data.CatchTime,
|
||||
}
|
||||
var temp []model.PetInfo
|
||||
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
pi.Hp = pi.MaxHp
|
||||
// 恢复技能PP值
|
||||
var skillList [4]model.SkillInfo
|
||||
for i, skill := range pi.SkillList {
|
||||
// 跳过无效技能
|
||||
if skill.ID == 0 {
|
||||
continue
|
||||
}
|
||||
// 恢复至最大PP值(从配置表获取)
|
||||
if maxPP, ok := xmlres.SkillMap[int(skill.ID)]; ok {
|
||||
skill.PP = uint32(maxPP.MaxPP)
|
||||
skillList[i] = skill
|
||||
}
|
||||
}
|
||||
pi.SkillList = skillList
|
||||
}
|
||||
temp = append(temp, pi)
|
||||
}
|
||||
|
||||
c.Info.PetList = temp
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user