local GiftCell = class("GiftCell", BaseCell) function GiftCell:onClose() if self.sid then self.txTime:unscheduleGlobal(self.sid) self.sid = nil end end function GiftCell:init() local uiMap = self:getUIMap() self.txTitle = uiMap["gift_cell.tx_title"] self.rewardNode = uiMap["gift_cell.reward_node"] self.rewards = {} for i = 1, 3 do table.insert(self.rewards, uiMap["gift_cell.reward_node.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) end self.btnGet = uiMap["gift_cell.btn_get"] self.txGetDesc = uiMap["gift_cell.btn_get.tx_desc"] self.txLimit = uiMap["gift_cell.btn_get.tx_limit"] self.costNode = uiMap["gift_cell.btn_get.cost"] self.imgCost = uiMap["gift_cell.btn_get.cost.img_cost"] self.txCost = uiMap["gift_cell.btn_get.cost.tx_cost"] self.imgAd = uiMap["gift_cell.btn_get.cost.img_ad"] self.txTime = uiMap["gift_cell.btn_get.tx_time"] self.tagNode = uiMap["gift_cell.tag"] self.txTag = uiMap["gift_cell.tag.tx_tag"] self.sid = self.txTime:scheduleGlobal(function () self:updateTime() end, 1) self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_10)) end function GiftCell:updateTime() if self.cfg == nil then return end if not DataManager.ActGiftData:isFreeGift(self.data:getActId(), self.cfg.id) then return end local totalNum = self.cfg.limit local curNum = DataManager.ActGiftData:getGiftBuyCount(self.cfg.id) if totalNum - curNum > 0 then self.txTime:setText("") return end self.txTime:setText(Time:formatNumTime(Time:getTodaySurplusTime())) end function GiftCell:refresh(parentUI, dataKey, id) self.parentUI = parentUI or self.parentUI self.data = DataManager[dataKey] self.cfg = DataManager.ActGiftData:getGiftConfig(self.data:getActId(), id) self:updateTime() self.txTitle:setText(I18N:getText("act_gift", self.cfg.id, "value")) local rewards = self.cfg.reward for i, cell in ipairs(self.rewards) do if rewards and rewards[i] then cell:showCell() cell:refreshByConfig(rewards[i]) else cell:hideCell() end end local value = self.cfg.value if value then self.tagNode:setActive(true) self.txTag:setText("-" .. value .. "%") else self.tagNode:setActive(false) end local totalNum = self.cfg.limit local curNum = DataManager.ActGiftData:getGiftBuyCount(self.cfg.id) local remainNum = totalNum - curNum local costItems = self.cfg.item_cost local costRecharge = self.cfg.recharge_id if costItems then -- 道具购买 self.imgAd:setActive(false) self.imgCost:setActive(true) self.txTime:setActive(false) self:getBaseObject():setSprite(GConst.ATLAS_PATH.UI_ACT_COMMON, "act_common_bg_7") self.imgCost:setSprite(GFunc.getRewardIconRes(costItems[1])) if totalNum >= 9999 then self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_21)) elseif DataManager.ActGiftData:isDailyGift(self.data:getActId(), self.cfg.id) then self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.WORLDBOSS_DESC_16, remainNum, totalNum)) else self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_8).. ":" .. remainNum .. "/" .. totalNum) end if remainNum > 0 then self.costNode:setActive(true) self.txGetDesc:setActive(false) self.btnGet:setTouchEnable(true) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_yellow_4") self.txCost:setText("" .. GFunc.getRewardNum(costItems[1]) .. "") GFunc.centerImgAndTx(self.imgCost, self.txCost, -8) else self.costNode:setActive(false) self.txGetDesc:setActive(true) self.btnGet:setTouchEnable(false) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_gray_4") self.txGetDesc:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_10)) end self.btnGet:removeRedPoint() self.btnGet:addClickListener(function() if not GFunc.checkCost(GFunc.getRewardId(costItems[1]), GFunc.getRewardNum(costItems[1]), true) then return end local params = {} params.content = I18N:getGlobalText(I18N.GlobalConst.MALL_DESC_13) params.boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL params.showToday = GConst.MESSAGE_BOX_SHOW_TODAY.ACT_DREAM_GIFT params.okFunc = function() ModuleManager.ActivityManager:onGiftBuy(self.cfg.id) end GFunc.showMessageBox(params) end) elseif costRecharge then -- 充值购买 self.costNode:setActive(false) self.txGetDesc:setActive(true) self.txTime:setActive(false) self:getBaseObject():setSprite(GConst.ATLAS_PATH.UI_ACT_COMMON, "act_common_bg_7") if totalNum >= 9999 then self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_21)) else self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_8).. ":" .. remainNum .. "/" .. totalNum) end if remainNum > 0 then self.btnGet:setTouchEnable(true) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_yellow_4") self.txGetDesc:setText(GFunc.getFormatPrice(self.cfg.recharge_id)) else self.btnGet:setTouchEnable(false) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_gray_4") self.txGetDesc:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_10)) end self.btnGet:removeRedPoint() self.btnGet:addClickListener(function() ModuleManager.ActivityManager:onGiftBuy(self.cfg.id) end) else -- 免费购买 self.costNode:setActive(true) self.txGetDesc:setActive(false) self.imgAd:setActive(true) self.imgCost:setActive(false) self.txTime:setActive(true) self:getBaseObject():setSprite(GConst.ATLAS_PATH.UI_ACT_COMMON, "act_common_bg_6") GFunc.setAdsSprite(self.imgAd, remainNum <= 0) self.txCost:setText("" .. I18N:getGlobalText(I18N.GlobalConst.FREE_DESC) .. "") GFunc.centerImgAndTx(self.imgAd, self.txCost) if remainNum > 0 then self.btnGet:setTouchEnable(true) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_blue_4") self.btnGet:addRedPoint(80, 30, 0.9) else self.btnGet:setTouchEnable(false) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_gray_4") self.btnGet:removeRedPoint() end if totalNum >= 9999 then self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_21)) else self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.WORLDBOSS_DESC_16, remainNum, totalNum)) end self.btnGet:addClickListener(function() SDKManager:showFullScreenAds(self.parentUI:getGiftAdType(), function () ModuleManager.ActivityManager:onGiftBuy(self.cfg.id) end) end) end end return GiftCell