2025-06-04 05:02:57 +08:00

155 lines
4.0 KiB
Plaintext

autoImport("BaseTip")
autoImport("ExchangeCombineItemCell")
FeedPetTip = class("FeedPetTip", BaseTip)
local PACKAGE_CHECK = GameConfig.PackageMaterialCheck.equipcompose
local function ReUniteCellData(datas, perRowNum)
local newData = {}
if(datas~=nil and #datas>0)then
for i = 1,#datas do
local i1 = math.floor((i-1)/perRowNum)+1;
local i2 = math.floor((i-1)%perRowNum)+1;
newData[i1] = newData[i1] or {};
if(datas[i] == nil)then
newData[i1][i2] = nil;
else
newData[i1][i2] = datas[i];
end
end
end
return newData;
end
function FeedPetTip:Init()
self:FindObj()
self:AddEvts()
self:InitView()
EventManager.Me():AddEventListener(ItemEvent.ItemUpdate, self.Update, self);
end
function FeedPetTip:InitView()
local container = self:FindGO("Container")
local wrapConfig = {
wrapObj = container,
pfbNum = 4,
cellName = "ExchangeCombineItemCell",
control = ExchangeCombineItemCell,
dir = 1,
}
self.itemWrapHelper = WrapCellHelper.new(wrapConfig)
self.itemWrapHelper:AddEventListener(MouseEvent.MouseClick, self.OnClickCell, self)
end
function FeedPetTip:FindObj()
self.closecomp = self.gameObject:GetComponent(CloseWhenClickOtherPlace);
self.scrollview=self:FindComponent("ScrollView",UIScrollView)
self.confirmBtn = self:FindGO("ConfirmBtn")
self.cancelBtn = self:FindGO("CancelBtn")
self.closecomp.callBack = function (go)
self:CloseSelf();
end
FeedPetTip.super.Init(self);
end
function FeedPetTip:AddEvts()
self:AddClickEvent(self.confirmBtn, function (go)
self:OnClickConfirm()
end)
self:AddClickEvent(self.cancelBtn, function (go)
self:CloseSelf()
end)
end
function FeedPetTip:SetData(data)
self.data=data
if(not self.data)then return end
self.petinfoData = data.petinfoData
self:Update()
end
function FeedPetTip:Update()
local goods = FunctionPet.Me():GetAllHobbyItems()
if(not goods)then return end
local itemDatas = {}
for i=1,#goods do
itemDatas[#itemDatas+1] = ItemData.new("FeedPet", goods[i])
end
table.sort( itemDatas, function (a,b)
local aOwned = BagProxy.Instance:GetItemNumByStaticID(a.staticData.id,PACKAGE_CHECK) > 0
local bOwned = BagProxy.Instance:GetItemNumByStaticID(b.staticData.id,PACKAGE_CHECK) > 0
if aOwned and bOwned then
return a.staticData.id>b.staticData.id
end
if aOwned or bOwned then
return aOwned
end
return a.staticData.id>b.staticData.id
end)
self.itemWrapHelper:ResetDatas(ReUniteCellData(itemDatas,4))
end
function FeedPetTip:SetChoose(id)
local cells = self.itemWrapHelper:GetCellCtls()
for i=1,#cells do
local single = cells[i]:GetCells()
for j=1,#single do
single[j]:SetChoosen(id)
end
end
end
function FeedPetTip:OnClickCell(cellCtl)
local data = cellCtl and cellCtl.data
if(not data)then return end
local ownCount = BagProxy.Instance:GetItemNumByStaticID(data.staticData.id,PACKAGE_CHECK)
if(not ownCount or 0==ownCount)then
return
end
if data.staticData.id == self.chooseID then
self.chooseID = nil
else
self.chooseID = data.staticData.id
end
self:SetChoose(self.chooseID)
end
function FeedPetTip:OnClickConfirm()
if not self.chooseID then
return
end
local myPetInfo = PetProxy.Instance:GetMyPetInfoData(self.petinfoData.petid);
for i=1,#PACKAGE_CHECK do
local item = BagProxy.Instance:GetItemByStaticID(self.chooseID,PACKAGE_CHECK[i])
if nil~=item then
local dont = LocalSaveProxy.Instance:GetDontShowAgain(9015)
if(dont == nil)then
MsgManager.DontAgainConfirmMsgByID(9015, function ()
ServiceScenePetProxy.Instance:CallGiveGiftPetCmd(myPetInfo.petid, item.id);
end, nil, nil, item.staticData.NameZh, myPetInfo.name);
else
ServiceScenePetProxy.Instance:CallGiveGiftPetCmd(myPetInfo.petid, item.id);
end
break;
end
end
end
function FeedPetTip:CloseSelf()
if(self.callback)then
self.callback(self.callbackParam);
end
EventManager.Me():RemoveEventListener(ItemEvent.ItemUpdate, self.Update, self)
TipsView.Me():HideCurrent();
end
function FeedPetTip:DestroySelf()
if(not Slua.IsNull(self.gameObject))then
GameObject.Destroy(self.gameObject);
end
end