135 lines
5.1 KiB
Lua
135 lines
5.1 KiB
Lua
local RSLimitGiftRPCtr = class('RSLimitGiftRPCtr')
|
|
|
|
local CACHE_RP_KEY_NAME = 'Cache_RuneShopLimitGift_RP_Key'
|
|
|
|
function RSLimitGiftRPCtr:ctor()
|
|
self.cacheRSLimitGiftRPMap = nil
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:Init()
|
|
self.cacheRSLimitGiftRPMap = nil
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:Destory()
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:RefreshLimitGiftRedPointByShopData(shopData)
|
|
if not self.cacheRSLimitGiftRPMap then
|
|
self:ReadCacheRSLimitGiftRPData()
|
|
end
|
|
if shopData then
|
|
local showGoodsDatas = shopData:GetShowGoodsDatas()
|
|
if showGoodsDatas and #showGoodsDatas > 0 then
|
|
local redpoint = false
|
|
local changed = false
|
|
local id
|
|
local newCacheRSLimitGiftRPMap = {}
|
|
for _, showGoodsData in pairs(showGoodsDatas) do
|
|
local cfgData = showGoodsData:GetCfgData()
|
|
if cfgData and cfgData.RedPoint == 1 and not showGoodsData:IsSoldout() then
|
|
id = showGoodsData:GetId()
|
|
if self.cacheRSLimitGiftRPMap[id] == nil then
|
|
newCacheRSLimitGiftRPMap[id] = true
|
|
redpoint = true
|
|
changed = true
|
|
else
|
|
newCacheRSLimitGiftRPMap[id] = self.cacheRSLimitGiftRPMap[id]
|
|
if newCacheRSLimitGiftRPMap[id] then
|
|
redpoint = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if changed then
|
|
self.cacheRSLimitGiftRPMap = newCacheRSLimitGiftRPMap
|
|
self:WriteCacheRSLimitGiftRPData()
|
|
end
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, redpoint)
|
|
return
|
|
end
|
|
end
|
|
if not CommonUtil.TableIsEmpty(self.cacheRSLimitGiftRPMap) then
|
|
self.cacheRSLimitGiftRPMap = {}
|
|
self:WriteCacheRSLimitGiftRPData()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, false)
|
|
end
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:RefreshLimitGiftRedPointByIds(ids)
|
|
if not self.cacheRSLimitGiftRPMap then
|
|
self:ReadCacheRSLimitGiftRPData()
|
|
end
|
|
if not ids then
|
|
if not CommonUtil.TableIsEmpty(self.cacheRSLimitGiftRPMap) then
|
|
self.cacheRSLimitGiftRPMap = {}
|
|
self:WriteCacheRSLimitGiftRPData()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, false)
|
|
end
|
|
return
|
|
end
|
|
local redpoint = false
|
|
local changed = false
|
|
local newCacheRSLimitGiftRPMap = {}
|
|
for _, id in pairs(ids) do
|
|
local cfgData = ManagerContainer.CfgMgr:GetRuneShopCfgByFeature(Enum.RuneShopType.LimitTime, nil, id)
|
|
if cfgData and cfgData.RedPoint == 1 then
|
|
if self.cacheRSLimitGiftRPMap[id] == nil then
|
|
newCacheRSLimitGiftRPMap[id] = true
|
|
redpoint = true
|
|
changed = true
|
|
else
|
|
newCacheRSLimitGiftRPMap[id] = self.cacheRSLimitGiftRPMap[id]
|
|
if newCacheRSLimitGiftRPMap[id] then
|
|
redpoint = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if changed then
|
|
self.cacheRSLimitGiftRPMap = newCacheRSLimitGiftRPMap
|
|
self:WriteCacheRSLimitGiftRPData()
|
|
end
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, redpoint)
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:GetRedPointStatusById(id)
|
|
return self.cacheRSLimitGiftRPMap and self.cacheRSLimitGiftRPMap[id] or false
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:CancelRedPointStatusById(id)
|
|
if self.cacheRSLimitGiftRPMap then
|
|
if not self.cacheRSLimitGiftRPMap[id] then
|
|
return
|
|
end
|
|
self.cacheRSLimitGiftRPMap[id] = false
|
|
else
|
|
self.cacheRSLimitGiftRPMap = {}
|
|
end
|
|
self.cacheRSLimitGiftRPMap[id] = false
|
|
self:WriteCacheRSLimitGiftRPData()
|
|
for _, value in pairs(self.cacheRSLimitGiftRPMap) do
|
|
if value then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, true)
|
|
return
|
|
end
|
|
end
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopLimitGift, false)
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:ReadCacheRSLimitGiftRPData()
|
|
local cacheStr = ManagerContainer.PlayerPrefsMgr:GetString(CACHE_RP_KEY_NAME, '')
|
|
local cacheRSLimitGiftRPMap = JSON:decode(cacheStr)
|
|
if not cacheRSLimitGiftRPMap then
|
|
cacheRSLimitGiftRPMap = {}
|
|
end
|
|
self.cacheRSLimitGiftRPMap = cacheRSLimitGiftRPMap
|
|
end
|
|
|
|
function RSLimitGiftRPCtr:WriteCacheRSLimitGiftRPData()
|
|
if self.cacheRSLimitGiftRPMap then
|
|
local valueStr = JSON:encode(self.cacheRSLimitGiftRPMap)
|
|
ManagerContainer.PlayerPrefsMgr:SetString(CACHE_RP_KEY_NAME, valueStr)
|
|
end
|
|
end
|
|
|
|
return RSLimitGiftRPCtr |