package controller import ( "blazing/common/socket/errorcode" "blazing/logic/service" "blazing/logic/service/pet" blservice "blazing/modules/blazing/service" "github.com/jinzhu/copier" ) // 获取精灵信息 func (h *Controller) GetPetInfo( data *pet.InInfo, c *service.Player) (result *pet.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 t := blservice.NewUserService(c.Info.UserID).GetPetInfo(data.CatchTime) return &pet.OutInfo{ PetInfo: t, }, 0 } // 获取仓库列表 func (h *Controller) GetPetList( data *pet.GetPetListInboundEmpty, c *service.Player) (result *pet.GetPetListOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 result = &pet.GetPetListOutboundInfo{} tt := blservice.NewUserService(c.Info.UserID).GetPetList(0) //获得未放生的精灵 result.ShortInfoList = make([]pet.PetShortInfo, len(tt)) for i, v := range tt { copier.Copy(&result.ShortInfoList[i], &v) } return result, 0 } // 精灵背包仓库切换 func (h *Controller) PetRelease( data *pet.PetReleaseInboundInfo, c *service.Player) ( result *pet.PetReleaseOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的 //放入背包=数据库置1+添加到背包+pet release发包 仓库=数据库置0+移除背包 设置首发等于取到首发精灵后重新排序 //这里只修改,因为添加和移除背包在宠物获取时已经做了 result = &pet.PetReleaseOutboundInfo{} result.Flag = uint32(data.Flag) t := blservice.NewUserService(c.Info.UserID).PetM(int(data.CatchTime), int(data.Flag)) switch data.Flag { case 0: removeIndex := -1 for i, v := range c.Info.PetList { if v.CatchTime == uint32(data.CatchTime) { removeIndex = i break // 只移除第一个匹配值,若需移除所有,可省略 break 继续循环 } } if removeIndex != -1 { c.Info.PetList = append(c.Info.PetList[:removeIndex], c.Info.PetList[removeIndex+1:]...) } case 1: //todo 背包 c.Info.PetList = append(c.Info.PetList, t) result.PetInfo = t } if len(c.Info.PetList) > 0 { result.FirstPetTime = c.Info.PetList[0].CatchTime //设置首发 } //service.NewUserService(c.Info.UserID).PetAdd( *r) return result, 0 }