------------------------------------------------ --作者:何健 --日期:2019-07-05 --文件:ShopItemContainer.lua --模块:ShopItemContainer --描述:各种商店的容器,包含了所有商店基本操作和数据 ------------------------------------------------ local ShopItemContainer = { --商店类型 ShopType = nil, --物品容器 ItemContainer = nil, --商店页面容器 ShopPageList = nil, --下一个刷新时间 NextTimes = nil, --当前刷新次数 CurUpdateTimes = nil, } --创建容器对象 function ShopItemContainer:New(type) local _m = Utils.DeepCopy(self) _m.ShopType = type _m.ItemContainer = Dictionary:New() _m.ShopPageList = List:New() return _m end --更新商品容器 function ShopItemContainer:UpdateItem(item, page, occ) if item ~= nil then local _shopItems = nil _shopItems = self.ItemContainer[page] if _shopItems == nil then _shopItems = Dictionary:New() self.ItemContainer:Add(page, _shopItems) end if _shopItems ~= nil and item:CheckOcc(occ) and item:CheckOpenTime() then local _tmpItem = nil; _tmpItem = _shopItems[item.SellId] if _tmpItem ~= nil then _shopItems[item.SellId] = item else _shopItems:Add(item.SellId, item) end self.ItemContainer[page] = _shopItems end end end function ShopItemContainer:Sort(page) local _shopItems = nil _shopItems = self.ItemContainer[page] if _shopItems ~= nil then for k, v in pairs(_shopItems) do if v.LimitType > 0 then if v.AlreadyBuyNum >= v.BuyLimit and v.BuyLimit > 0 and v.Index <= 99999 then v.Index = v.Index + 99999 end end end _shopItems:SortValue(function(a, b) return a.Index < b.Index end) self.ItemContainer[page] = _shopItems end end --删除商品 function ShopItemContainer:DeleteItem(key, page) if self.ItemContainer[page] ~= nil then self.ItemContainer[page]:Remove(key) end end function ShopItemContainer:AddShopPage(page) if page > 0 and not self.ShopPageList:Contains(page) then self.ShopPageList:Add(page) end end function ShopItemContainer:ClearShopPage() self.ShopPageList:Clear() end function ShopItemContainer:ClearShopByPage(page) if self.ItemContainer:ContainsKey(page) then self.ItemContainer[page]:Clear() end end function ShopItemContainer:GetShopItemDic(page) local _shopItems = Dictionary:New() if self.ItemContainer:ContainsKey(page) then _shopItems = self.ItemContainer[page] end return _shopItems end return ShopItemContainer