210 lines
5.1 KiB
Plaintext
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
|
|
|
|
|
|
|
|
|
|
|