217 lines
4.8 KiB
Plaintext
217 lines
4.8 KiB
Plaintext
autoImport("ItemData")
|
||
autoImport("BagTabData")
|
||
autoImport("BagMainTab")
|
||
autoImport("EquipCardInfo")
|
||
BagData = class("BagData")
|
||
|
||
function BagData:ctor(tabs,tabClass,type)
|
||
self.uplimit = 0;
|
||
self.tabs = {}
|
||
self.itemMapTab = {}
|
||
self.type = type
|
||
self.wholeTab = BagMainTab.new()
|
||
tabClass = tabClass or BagTabData
|
||
if(tabs ~=nil) then
|
||
for i=1,#tabs do
|
||
local class = tabs[i].class or tabClass
|
||
local tabData = class.new(tabs[i].data)
|
||
self.tabs[tabs[i].data] = tabData
|
||
local types = tabs[i].data.types
|
||
for j=1,#types do
|
||
self.itemMapTab[types[j]]=tabData
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--items數據,tabtype標籤
|
||
function BagData:AddItems(items,tabType)
|
||
if(tabType ~=nil) then
|
||
local tab = self.tabs[tabType]
|
||
if(tab ~=nil) then
|
||
tab:AddItems(items)
|
||
end
|
||
end
|
||
self.wholeTab:AddItems(items)
|
||
|
||
BagProxy.Instance:RefreshUpgradeCheckInfo(self);
|
||
end
|
||
|
||
function BagData:AddItem(item)
|
||
local tab = self.itemMapTab[item.staticData.Type]
|
||
-- print(tab)
|
||
if(tab ~=nil) then
|
||
tab:AddItem(item)
|
||
end
|
||
self.wholeTab:AddItem(item)
|
||
end
|
||
|
||
function BagData:RemoveItems(items)
|
||
for i=1,#items do
|
||
self:RemoveItemByGuid(items[i].base.guid)
|
||
end
|
||
end
|
||
|
||
function BagData:RemoveItemsByGuid(itemIds)
|
||
for i=1,#itemIds do
|
||
self:RemoveItemByGuid(itemIds[i])
|
||
end
|
||
BagProxy.Instance:RefreshUpgradeCheckInfo(self);
|
||
end
|
||
|
||
function BagData:RemoveItemByGuid(itemId)
|
||
-- print("remove "..itemId)
|
||
local item = self:GetItemByGuid(itemId)
|
||
if(item ~=nil) then
|
||
-- print("find then remove"..itemId)
|
||
self.wholeTab:RemoveItemByGuid(itemId)
|
||
local tab = self.itemMapTab[item.staticData.Type]
|
||
if(tab ~=nil) then
|
||
tab:RemoveItemByGuid(itemId)
|
||
end
|
||
end
|
||
end
|
||
|
||
function BagData:UpdateItems(serverItems)
|
||
-- print(#serverItems)
|
||
for i=1,#serverItems do
|
||
local sItem = serverItems[i]
|
||
local sItemData = sItem.base
|
||
-- print(sItem)
|
||
local item = self:GetItemByGuid(sItemData.guid)
|
||
if(sItemData.index == self.wholeTab.holdPlaceData.index and sItemData.id ~=0) then
|
||
self.wholeTab:ClearPlaceHolder()
|
||
end
|
||
if(item ~=nil) then
|
||
self:UpdateItem(item,sItem)
|
||
else
|
||
item = ItemData.new(sItemData.guid,sItemData.id)
|
||
self:UpdateItem(item,sItem)
|
||
-- item.type = math.random(131,160)
|
||
-- item.qua = math.random(1,5)
|
||
-- item.sid = math.random(1,10000)
|
||
|
||
-- item.staticData =
|
||
if(item.staticData ~=nil) then
|
||
self:AddItem(item)
|
||
elseif(sItemData.id ~= 0) then
|
||
-- error("未找到物品配置"..sItemData.id)
|
||
else
|
||
self.wholeTab:ResetPlaceHolder(sItemData)
|
||
end
|
||
end
|
||
end
|
||
BagProxy.Instance:RefreshUpgradeCheckInfo(self);
|
||
end
|
||
|
||
function BagData:UpdateItem(item,serverItem)
|
||
local sItemData = serverItem.base
|
||
item = item or self:GetItemByGuid(sItemData.guid)
|
||
if(item ~=nil) then
|
||
if(sItemData.index~=item.index) then
|
||
self.wholeTab:SetDirty(true)
|
||
end
|
||
item:ParseFromServerData(serverItem)
|
||
item.isactive = sItemData.isactive;
|
||
if(item.isactive)then
|
||
self.activeItemId = item.id;
|
||
else
|
||
if(self.activeItemId == item.id)then
|
||
self.activeItemId = nil;
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function BagData:GetActiveItem()
|
||
if(self.activeItemId)then
|
||
local item = self:GetItemByGuid(self.activeItemId);
|
||
if(not item)then
|
||
self.activeItemId = nil;
|
||
end
|
||
return item;
|
||
end
|
||
end
|
||
|
||
function BagData:Reset()
|
||
self.wholeTab:Reset()
|
||
for k,v in pairs(self.tabs) do
|
||
v:Reset()
|
||
end
|
||
end
|
||
|
||
function BagData:GetTab(tabType)
|
||
if(tabType ~=nil) then
|
||
local tab = self.tabs[tabType]
|
||
if(tab ~=nil) then
|
||
return tab
|
||
end
|
||
end
|
||
return self.wholeTab
|
||
end
|
||
|
||
--tabtype 見gameconfig下的itempage和itemfashion
|
||
function BagData:GetItems(tabType)
|
||
if(tabType ~=nil) then
|
||
local tab = self.tabs[tabType]
|
||
if(tab ~=nil) then
|
||
return tab:GetItems()
|
||
end
|
||
end
|
||
return self.wholeTab:GetItems()
|
||
end
|
||
|
||
function BagData:GetItemByGuid(guid)
|
||
return self.wholeTab:GetItemByGuid(guid)
|
||
end
|
||
|
||
function BagData:SetUplimit(limit)
|
||
if(type(limit) == "number")then
|
||
self.uplimit = limit;
|
||
end
|
||
end
|
||
|
||
function BagData:GetUplimit()
|
||
return self.uplimit;
|
||
end
|
||
|
||
function BagData:GetSpaceItemNum()
|
||
local items = self:GetItems();
|
||
local result = 0;
|
||
if(items)then
|
||
result = math.max(0, self.uplimit - #items);
|
||
end
|
||
return result;
|
||
end
|
||
|
||
function BagData:IsFull()
|
||
if(self.uplimit == 0)then
|
||
return false;
|
||
end
|
||
return self:GetSpaceItemNum() <= 0;
|
||
end
|
||
|
||
function BagData:GetItemFreeSpaceByStaticId(itemid)
|
||
local items = self.wholeTab:GetItemsByStaticID(itemid);
|
||
local freeSpace = 0;
|
||
|
||
local maxnum = 1;
|
||
local itemData = Table_Item[itemid];
|
||
local typeData = Table_ItemType[ itemData.Type ];
|
||
maxnum = typeData and typeData.UseNumber
|
||
if(maxnum == nil)then
|
||
maxnum = Table_Item[itemid].MaxNum or 1;
|
||
end
|
||
if(items)then
|
||
for _, item in pairs(items) do
|
||
local itemnum = math.max(item.num, 1);
|
||
if(maxnum > itemnum)then
|
||
freeSpace = freeSpace + (maxnum - itemnum);
|
||
end
|
||
end
|
||
end
|
||
|
||
local spaceItemNum = self:GetSpaceItemNum();
|
||
return freeSpace + maxnum * spaceItemNum;
|
||
end
|
||
-- return Prop |