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 }