ro-table/Asstes/Resources/Script/Com/Data/Adventure/AdventureAchieveTab.txt
2025-06-04 05:02:57 +08:00

158 lines
3.7 KiB
Plaintext

autoImport("ItemData")
AdventureAchieveTab = class("AdventureAchieveTab")
function AdventureAchieveTab:ctor(tab)
self:Reset()
self.tab = tab
self.dirty = false
self.itemsMap = {}
if(self.tab)then
self:setBagTypeData(tab.SubGroup)
-- helplog("AdventureAchieveTab:redtip",tab.RedTip,tab.id,tab.Name)
end
end
function AdventureAchieveTab:setBagTypeData( type )
-- body
self.bagTypeData = Table_ItemTypeAdventureLog[type]
end
function AdventureAchieveTab:SetDirty(val)
-- val = val or true
self.dirty = val or true
end
function AdventureAchieveTab:AddItems(items)
if(items ~=nil) then
for i=1,#items do
self:AddItem(items[i])
end
end
end
function AdventureAchieveTab:AddItem(item)
if(item ~=nil) then
self.itemsMap[item.id] = item
self.dirty = true
-- table.insert(self.items,item)
self.items[#self.items+1] = item
-- print("index:"..item.staticId)
-- print(#self.items)
end
end
function AdventureAchieveTab:RemoveItems(itemIds)
-- body
end
function AdventureAchieveTab:GetItems()
if(self.dirty==true) then
self.parsedItems = {}
local tempItems = {unpack(self.items)}
for i=1,#tempItems do
local single = tempItems[i]
if(single.staticData.Visibility ~= 1 or single:getCompleteString())then
self.parsedItems[#self.parsedItems +1] = single
end
end
-- table.sort(self.items,self.sortFunc)
-- printRed("table soft")
table.sort(self.parsedItems,function(l,r)
return self:sortFunc(l,r)
end)
self.dirty = false
end
return self.parsedItems
end
function AdventureAchieveTab:sortFunc(left,right)
local lAdSort = left.staticData.AdventureSort
local rAdSort = right.staticData.AdventureSort
if(left:canGetReward() == right:canGetReward())then
-- if(left:getCompleteString() == right:getCompleteString())then
if(lAdSort == rAdSort)then
return left.id < right.id
else
if(lAdSort == nil)then
return false
elseif rAdSort == nil then
return true
else
return lAdSort < rAdSort
end
end
-- else
-- if(left:getCompleteString() == nil)then
-- helplog("left:getCompleteString()",tostring(left:getCompleteString()))
-- return false
-- elseif(left:getCompleteString() ~= nil and right:getCompleteString()~=nil)then
-- return left.finishtime > right.finishtime
-- else
-- return true
-- end
-- end
else
-- helplog("left:canGetReward()",tostring(left:canGetReward()))
return left:canGetReward()
end
end
function AdventureAchieveTab:GetItemByStaticID(staticID)
for _, o in pairs(self.items) do
if o.staticData ~= nil and o.staticData.id == staticID then
return o
end
end
return nil
end
function AdventureAchieveTab:GetItemNumByStaticID(staticID)
local num = 0
for _, o in pairs(self.items) do
if o.staticData ~= nil and o.staticData.id == staticID then
num = num + o.num
-- return o
end
end
return num
end
function AdventureAchieveTab:GetItemNumByStaticIDs(staticIDs)
local numMap = {}
for i=1,#staticIDs do
numMap[staticIDs[i]] = 0
end
local num
for _, o in pairs(self.items) do
if o.staticData ~= nil then
num = numMap[o.staticData.id]
if(num~=nil) then
num = num + o.num
numMap[o.staticData.id] = num
end
end
end
return numMap
end
function AdventureAchieveTab:GetItemsByType(typeID,sortFunc)
local res = {}
for _, o in pairs(self.items) do
if o.staticData ~= nil and o.staticData.Type == typeID then
res[#res+1] = o
end
end
if(sortFunc~=nil) then
table.sort(res,function(l,r)
return sortFunc(self,l,r)
end)
end
return res
end
function AdventureAchieveTab:Reset()
self.items = {}
self.itemsMap = {}
self.parsedItems = {}
end