| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- local UIREShopCtr = class("UIREShopCtr", require("UICtrBase"))
- local reShopTypeId = 50
- function UIREShopCtr:Init(view)
- self.view = view
- end
- function UIREShopCtr:SetData(data)
- self.asyncIdx = 0
- self.data = data
- self.isResetSelect = true
- end
- function UIREShopCtr:GetAsyncIdx()
- self.asyncIdx = self.asyncIdx + 1
- return self.asyncIdx
- end
- function UIREShopCtr:GetData()
- return self.data
- end
- function UIREShopCtr:OnDispose()
- self.data = nil
- self.view = nil
- self.isResetSelect = false
- self.nearestRemainTime = nil
- self.shopLs = nil
- self.shopEndTimes = nil
- self.curSelectIdx = nil
- self.curShopCfgData = nil
- self.curShopData = nil
- end
- function UIREShopCtr:InitData()
- local shopLs = {}
- local cfgDatas
- local shopEndTimes = {}
- local nearestRemainTime = nil
- local remainTime = nil
- cfgDatas = ManagerContainer.CfgMgr:GetShopTypeCfgById(reShopTypeId)
- shopLs[#shopLs+1] = cfgDatas
- --local actItem = ManagerContainer.DataMgr.ActsDataMgr:GetActivityItemById(reShopTypeId)
- --if actItem and actItem.type == Enum.ActivityType.ACTIVITY_TYPE_SHOP then
- -- if actItem:IsUnlocked() and actItem:IsOpened() then
- -- if actItem.actShopIds then
- -- for _, actShopId in pairs(actItem.actShopIds) do
- -- cfgDatas = ManagerContainer.CfgMgr:GetShopTypeCfgById(actShopId)
- -- if cfgDatas then
- -- if actItem:IsLimited() then
- -- if not actItem:IsOutofDate() then
- -- remainTime = actItem:LeftTime()
- -- shopEndTimes[actShopId] = actItem.endTime
- -- if not nearestRemainTime or nearestRemainTime > remainTime then
- -- nearestRemainTime = remainTime
- -- end
- -- shopLs[#shopLs+1] = cfgDatas
- -- end
- -- else
- -- shopLs[#shopLs+1] = cfgDatas
- -- end
- -- end
- -- end
- -- end
- -- end
- --end
- self.nearestRemainTime = nearestRemainTime
- self.shopEndTimes = shopEndTimes
- table.sort(shopLs, function(a, b)
- return a.SortId < b.SortId
- end)
- self.shopLs = shopLs
- self.curSelectIdx = 1
- end
- function UIREShopCtr:RefreshCurShopData(forceRefresh)
- self.curShopCfgData = self.shopLs[self.curSelectIdx]
- if self.curShopCfgData then
- self.curShopData = ManagerContainer.DataMgr.ShopDataMgr:GetShopData(self.curShopCfgData.Id, forceRefresh)
- else
- self.curShopData = nil
- end
- if self.curShopData then
- if ManagerContainer.LuaTimerMgr:GetRemainSeconds(self.curShopData:GetNeedRefreshTime()) <= 0 then
- self.curShopData:RefreshShowGoodsDatas()
- end
- end
- end
- function UIREShopCtr:GetNearestRemainTime()
- return self.nearestRemainTime
- end
- function UIREShopCtr:GeCurEndTime()
- if self.shopLs then
- local cfgData = self.shopLs[self.curSelectIdx]
- if cfgData then
- return self.shopEndTimes and self.shopEndTimes[cfgData.Id] or nil
- end
- end
- return nil
- end
- function UIREShopCtr:GetShopLs()
- return self.shopLs
- end
- function UIREShopCtr:GetShopByIdx(idx)
- return self.shopLs and self.shopLs[idx] or nil
- end
- function UIREShopCtr:GetCurSelectIdx()
- return self.curSelectIdx
- end
- function UIREShopCtr:SetCurSelectIdx(newIdx)
- if self.curSelectIdx == newIdx then
- return false
- end
- self.curSelectIdx = newIdx
- self:RefreshCurShopData(true)
- return true
- end
- function UIREShopCtr:GetCurShopCfgData()
- return self.curShopCfgData
- end
- function UIREShopCtr:GetCurShopData()
- return self.curShopData
- end
- function UIREShopCtr:GetRefreshCostInfo()
- local costNum, costCfgId
- if self.curShopData and self.curShopCfgData then
- local payForRefreshs = self.curShopCfgData.PayForRefresh
- local refreshNum = self.curShopData:GetRefreshCount() or 0
- if payForRefreshs and #payForRefreshs > 0 then
- refreshNum = Mathf.Clamp(refreshNum+1, 1, #payForRefreshs)
- local payForRefresh = payForRefreshs[refreshNum]
- if payForRefresh then
- costCfgId = payForRefresh[1]
- costNum = payForRefresh[2]
- end
- end
- end
- return costNum, costCfgId
- end
- function UIREShopCtr:SendShopInfoReq()
- if not self.curShopData then
- return 398
- end
- if not ManagerContainer.DataMgr.ShopDataMgr:SendShopInfoReq(self.curShopData.shopId) then
- return 100007
- end
- return 0
- end
- function UIREShopCtr:SendRefreshShopReq()
- if not self.curShopCfgData or not self.curShopData then
- return 398
- end
- -- if self.curShopCfgData.ShopType ~= 2 then
- -- return 397
- -- end
- -- local refreshNum = self.curShopData:GetRefreshCount() or 0
- -- local refreshMaxNum = self.curShopCfgData.RefreshNum or 0
- -- if (refreshMaxNum - refreshNum) <= 0 then
- -- return 395
- -- end
- -- local costNum, costCfgId = self:GetRefreshCostInfo()
- -- local ownNum = CommonUtil.GetOwnResCountByItemId(costCfgId)
- -- if ownNum < costNum then
- -- return 396, costCfgId
- -- end
- if not ManagerContainer.DataMgr.ShopDataMgr:SendRefreshShopReq(self.curShopData.shopId) then
- return 100007
- end
- return 0
- end
- function UIREShopCtr:SetCurGoodsData(goodsData)
- self.curGoodsData = goodsData
- end
- function UIREShopCtr:GetOwnResCountByItemId(cfgId)
- return CommonUtil.GetOwnResCountByItemId(cfgId)
- end
- function UIREShopCtr:SendShopBuyItemReq()
- if not self.curGoodsData then
- return 390
- end
- local price = self.curGoodsData.curPrice
- local goodsCfgData = self.curGoodsData:GetGoodsCfgData()
- local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType)
- if ownCount < price then
- return 391, goodsCfgData.PayForType
- end
- if not ManagerContainer.DataMgr.ShopDataMgr:SendShopBuyItemReq(self.curShopData.shopId, self.curGoodsData.id, 1) then
- return 100007
- end
- return 0
- end
- return UIREShopCtr
|