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
}
