local ActGiftUI = class("ActGiftUI", BaseUI) function ActGiftUI:isFullScreen() return false end function ActGiftUI:showCommonBG() return false end function ActGiftUI:getPrefabPath() return self.prefabPath end function ActGiftUI:onPressBackspace() self:closeUI() end function ActGiftUI:onClose() end function ActGiftUI:ctor(param) self.actId = param.actId self.prefabPath = param.prefabPath self.giftIds = DataManager.ActGiftData:getTriggerGiftIdsByActId(self.actId) self.curIndex = 1 end function ActGiftUI:onLoadRootComplete() local uiMap = self.root:genAllChildren() self.txTitle = uiMap["act_gift_ui.content.tx_title"] self.imgTime = uiMap["act_gift_ui.content.time_node.img_time"] self.txTime = uiMap["act_gift_ui.content.time_node.tx_time"] self.rewardCells = {} for i = 1, 2 do table.insert(self.rewardCells, uiMap["act_gift_ui.content.reward_node.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) end self.btnRight = uiMap["act_gift_ui.content.btn_right"] self.btnLeft = uiMap["act_gift_ui.content.btn_left"] self.btnBuy = uiMap["act_gift_ui.content.btn_buy"] self.txBuy = uiMap["act_gift_ui.content.btn_buy.tx_buy"] self.offNode = uiMap["act_gift_ui.content.off_node"] self.txOff = uiMap["act_gift_ui.content.off_node.tx_off"] self.btnClose = uiMap["act_gift_ui.btn_close"] self.layout = uiMap["act_gift_ui.content.layout"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) self.tags = {} for i = 1, 10 do table.insert(self.tags, uiMap["act_gift_ui.content.layout.tag_" .. i]) end self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_DESC_1)) self:scheduleGlobal(function() self:updateTime() end, 1) self:updateTime() self.btnBuy:addClickListener(function() ModuleManager.ActivityManager:onGiftBuy(self.giftIds[self.curIndex]) end) self.btnLeft:addClickListener(function() if self.curIndex <= 1 then return end self:onChangeSelect(self.curIndex - 1) end) self.btnRight:addClickListener(function() if self.curIndex >= #self.giftIds then return end self:onChangeSelect(self.curIndex + 1) end) self.btnClose:addClickListener(function() self:closeUI() end) self:bind(DataManager.PaymentData, "isDirty", function() self:onGiftChange() end) self:addEventListener(EventManager.CUSTOM_EVENT.ACT_TRIGGER_GIFT, function() self:onGiftChange() end) end function ActGiftUI:updateTime() local remainTime = DataManager.ActGiftData:getTriggerGiftEndTime(self.actId, self.giftIds[self.curIndex]) - Time:getServerTime() if remainTime > 0 then self.txTime:setText(I18N:getGlobalText(I18N.GlobalConst.TIME_END_DESC_1, Time:formatNumTimeStr(remainTime))) else self:onGiftChange() end end function ActGiftUI:onGiftChange() self.giftIds = DataManager.ActGiftData:getTriggerGiftIdsByActId(self.actId) if self.giftIds and #self.giftIds > 0 then self:onChangeSelect(1) self:onRefresh() else self:closeUI() end end function ActGiftUI:onChangeSelect(idx) self.curIndex = idx self:updateTime() self:onRefresh() end function ActGiftUI:onRefresh() local giftId = self.giftIds[self.curIndex] local giftCfg = ConfigManager:getConfig("act_gift")[giftId] local rewards = giftCfg.reward for i, cell in ipairs(self.rewardCells) do if rewards and rewards[i] then cell:showCell() cell:refreshByConfig(rewards[i]) else cell:hideCell() end end self.btnLeft:setActive(self.curIndex > 1) self.btnRight:setActive(self.curIndex < #self.giftIds) self.txBuy:setText(GFunc.getFormatPrice(giftCfg.recharge_id)) self.offNode:setActive(giftCfg.value ~= nil) self.txOff:setText("-" .. giftCfg.value .. "%") for i, tag in ipairs(self.tags) do if self.giftIds[i] then tag:setActive(true) tag:setSprite(GConst.ATLAS_PATH.COMMON, self.curIndex == i and "common_point_2" or "common_point_3") tag:addClickListener(function() self:onChangeSelect(i) end) else tag:setActive(false) end end self.layout:RefreshLayout() GFunc.centerImgAndTx(self.imgTime, self.txTime, 3) end return ActGiftUI