Files
bl/logic/controller/item_use.go

88 lines
2.3 KiB
Go
Raw Normal View History

package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/fight"
"blazing/logic/service/item"
"blazing/logic/service/player"
"blazing/modules/blazing/model"
"github.com/jinzhu/copier"
)
func (h Controller) UserItemList(data *item.ItemListInboundInfo, c *player.Player) (result *item.ItemListOutboundInfo, err errorcode.ErrorCode) {
result = &item.ItemListOutboundInfo{}
result.ItemList = make([]model.SingleItemInfo, 0)
item := c.Service.Item.Get(data.Param1, data.Param2)
for _, v := range item {
var vv model.SingleItemInfo
vv.ItemId = v.ItemId
vv.ItemCnt = v.ItemCnt
vv.LeftTime = 360000
if vv.ItemCnt != 0 {
result.ItemList = append(result.ItemList, vv)
}
}
return result, 0
}
func (h Controller) ItemUsePet(data *item.C2S_USE_PET_ITEM_OUT_OF_FIGHT, c *player.Player) (result *item.S2C_USE_PET_ITEM_OUT_OF_FIGHT, err errorcode.ErrorCode) {
_, onpet, ok := c.FindPet(data.CatchTime)
if !ok {
return nil, errorcode.ErrorCodes.Err10401
}
if c.Service.Item.CheakItem(data.ItemID) == 0 {
return nil, errorcode.ErrorCodes.ErrSystemError
}
if data.ItemID == 300036 {
//神经元需要特殊处理
if onpet.OldCatchTime == 0 {
return nil, errorcode.ErrorCodes.ErrSystemError
}
oldpetc := onpet.CatchTime
oldpet := c.Service.Pet.PetInfo_One_Unscoped(onpet.OldCatchTime)
copier.CopyWithOption(onpet, oldpet.Data, copier.Option{DeepCopy: true})
onpet.CatchTime = oldpetc
onpet.EffectInfo = oldpet.Data.EffectInfo
} else {
hd := item.PetItemRegistry.GetHandler(data.ItemID)
if hd == nil {
return nil, errorcode.ErrorCodes.ErrSystemError
}
r := hd(data.ItemID, onpet)
if !r {
return nil, errorcode.ErrorCodes.ErrSystemError
}
}
c.Service.Item.SubItem(data.ItemID, 1)
result = &item.S2C_USE_PET_ITEM_OUT_OF_FIGHT{}
onpet.CalculatePetPane()
copier.Copy(&result, onpet)
return result, 0
}
func (h Controller) ResetNature(data *item.C2S_PET_RESET_NATURE, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
if c.Service.Item.CheakItem(data.ItemId) <= 0 {
return nil, errorcode.ErrorCodes.ErrSystemError
}
_, onpet, ok := c.FindPet(data.CatchTime)
if !ok {
return nil, errorcode.ErrorCodes.Err10401
}
onpet.Nature = data.Nature
onpet.CalculatePetPane()
c.Service.Item.SubItem(data.ItemId, 1)
return result, 0
}