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

210 lines
5.1 KiB
Plaintext

PackageBarrowBagPage = class("PackageBarrowBagPage", SubView)
PackageBarrowBagPage.PfbPath = "part/BarrowBag";
function PackageBarrowBagPage:Init()
self:AddViewEvts();
self.initPage = false;
end
function PackageBarrowBagPage:InitPage()
self.initPage = true;
self.holder = self:FindGO("BarrowBagHolder");
self.gameObject = self:LoadPreferb(PackageBarrowBagPage.PfbPath, self.holder, true);
local closeBord = self:FindGO("CloseSpecialBord");
self:AddClickEvent(closeBord, function (go)
self.container:SetLeftViewState(PackageView.LeftViewState.Default);
end);
local listObj = self:FindGO("ItemNormalList");
self.itemlist = ItemNormalList.new(listObj, BagCombineDragItemCell);
self.itemlist:AddEventListener(ItemEvent.ClickItem, self.ClickItem, self);
self.itemlist:AddEventListener(ItemEvent.DoubleClickItem, self.DoubleClickItem, self);
self.itemlist:SetScrollPullDownEvent( PackageBarrowBagPage.PullDownPackage, self );
self.itemlist.GetTabDatas = PackageBarrowBagPage.GetTabDatas;
self.itemlist.scrollView.onDragStarted = function ()
self:ShowItemTip()
end
self.itemCells = self.itemlist:GetItemCells();
self.normalStick = self.container.normalStick;
end
local tabDatas = {};
function PackageBarrowBagPage.GetTabDatas(tabConfig)
TableUtility.ArrayClear(tabDatas);
local bagData = BagProxy.Instance.barrowBag;
local datas = bagData:GetItems(tabConfig);
for i=1,#datas do
table.insert(tabDatas, datas[i]);
end
-- 新增上限空格
local uplimit = bagData:GetUplimit();
if(uplimit>0)then
for i=#tabDatas+1, uplimit do
table.insert(tabDatas, BagItemEmptyType.Empty);
end
elseif(uplimit == 0)then
local leftEmpty = (5-#tabDatas%5)%5;
for i=1, leftEmpty do
table.insert(tabDatas, BagItemEmptyType.Empty);
end
end
-- 湊足5的倍數
local leftEmpty = (5-#tabDatas%5)%5;
for i=1, 10+leftEmpty do
table.insert(tabDatas, BagItemEmptyType.Grey);
end
-- 格子拼滿
for i=#tabDatas+1, 35 do
table.insert(tabDatas, BagItemEmptyType.Grey);
end
return tabDatas;
end
function PackageBarrowBagPage:PullDownPackage()
self:RemoveReArrageSafeLT();
self.reArrageSafeLT = LeanTween.delayedCall(3, function ()
self:HandleItemReArrage();
end);
ServiceItemProxy.Instance:CallPackageSort(SceneItem_pb.EPACKTYPE_BARROW);
end
function PackageBarrowBagPage:ClickItem(cellCtl)
local data = cellCtl and cellCtl.data;
if(data=="Empty" or data == "Grey")then
data = nil;
end
local go = cellCtl and cellCtl.gameObject;
local newChooseId = data and data.id or 0;
if(self.chooseId~=newChooseId)then
self.chooseId = newChooseId;
self:ShowPackageItemTip(data, {go});
else
self.chooseId = 0;
self:ShowPackageItemTip();
end
for _,cell in pairs(self.itemCells) do
cell:SetChooseId(self.chooseId);
end
end
function PackageBarrowBagPage:DoubleClickItem(cellCtl)
local data = cellCtl.data;
if(data=="Empty" or data == "Grey")then
data = nil;
end
if(data)then
local funcId = 38;
if(type(funcId) == "number")then
-- 如果不處於人物裝備狀態 非時裝裝備裝備時需要切換回人物裝備面板
local func = FunctionItemFunc.Me():GetFuncById(funcId);
if(type(func)=="function")then
func(data);
end
end
self:ShowPackageItemTip();
self.chooseId = 0;
for _,cell in pairs(self.itemCells) do
cell:SetChooseId(self.chooseId);
end
end
end
function PackageBarrowBagPage:ShowPackageItemTip(data, ignoreBounds)
if(data == nil)then
self:ShowItemTip();
return;
end
local callback = function ()
self.chooseId = 0;
for _,cell in pairs(self.itemCells) do
cell:SetChooseId(self.chooseId);
end
end;
local sdata = {
itemdata = data,
funcConfig = {38},
ignoreBounds = ignoreBounds,
callback = callback,
};
self:ShowItemTip(sdata, self.normalStick, nil, {210,0});
end
function PackageBarrowBagPage:Open()
if(self.initPage == false)then
self:InitPage();
end
self.itemlist:ChooseTab(1);
end
function PackageBarrowBagPage:Close()
self:RemoveReArrageSafeLT();
-- cancel choose
self.chooseId = 0;
self:ShowPackageItemTip();
for _,cell in pairs(self.itemCells) do
cell:SetChooseId(self.chooseId);
end
ServiceItemProxy.Instance:CallBrowsePackage(SceneItem_pb.EPACKTYPE_BARROW);
PackageBarrowBagPage.super.OnExit(self);
end
function PackageBarrowBagPage:UpdateList()
self.itemlist:UpdateList(true);
end
function PackageBarrowBagPage:AddViewEvts()
self:AddListenEvt(ItemEvent.BarrowUpdate,self.HandleItemUpdate);
self:AddListenEvt(ItemEvent.ItemReArrage,self.HandleItemReArrage);
self:AddListenEvt(MyselfEvent.MyProfessionChange, self.HandleItemUpdate);
end
function PackageBarrowBagPage:HandleItemReArrage(note)
if(not self.initPage)then
return;
end
self:RemoveReArrageSafeLT();
AudioUtility.PlayOneShot2D_Path( ResourcePathHelper.AudioSEUI(AudioMap.UI.ReArrage) )
local callback = function ()
self:UpdateList();
end
self.itemlist:ScrollViewRevert(callback);
end
function PackageBarrowBagPage:HandleItemUpdate()
if(not self.initPage)then
return;
end
self:UpdateList();
end
function PackageBarrowBagPage:RemoveReArrageSafeLT()
if(self.reArrageSafeLT)then
self.reArrageSafeLT:cancel();
self.reArrageSafeLT = nil;
end
end