local CollectionUI = class("CollectionUI", BaseUI) function CollectionUI:isFullScreen() return true end function CollectionUI:showCommonBG() return false end function CollectionUI:getPrefabPath() return "assets/prefabs/ui/collection/collection_ui.prefab" end function CollectionUI:onPressBackspace() self:closeUI() end function CollectionUI:ctor(params) self.collectType = params end function CollectionUI:onCover() end function CollectionUI:onReshow() end function CollectionUI:onClose() if self.animFly then self.animFly:Kill() self.animFly = nil end if self.showRewardNodeSid then self:unscheduleGlobal(self.showRewardNodeSid) end end function CollectionUI:onLoadRootComplete() local uiMap = self.root:genAllChildren() self.txTitle = uiMap["collect_ui.tx_title"] self.btnHelp = uiMap["collect_ui.tx_title.btn_help"] self.btnClose = uiMap["collect_ui.banner.btn_close"] self.scrollrectComp = uiMap["collect_ui.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.rewardsNode = uiMap["collection_ui.rewards"] self.txTotalValue = uiMap["collect_ui.rewards.btn_rewards.tx_total"] self.btnGet = uiMap["collection_ui.rewards.btn_get"] self.imgGet = uiMap["collection_ui.rewards.btn_get.img_icon"] self.txGet = uiMap["collection_ui.rewards.btn_get.tx_get"] self.txDesc = uiMap["collect_ui.rewards.tx_desc"] self.txStage = uiMap["collect_ui.rewards.tx_stage"] self.imgProg = uiMap["collect_ui.rewards.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) self.btnRewards = uiMap["collection_ui.rewards.point"] self.flyIcon = uiMap["collection_ui.fly_icon"] self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_1)) self.btnRewards:addClickListener(function() UIManager:showUI("app/ui/collection/collection_reward_ui", self.collectType) end) self.btnGet:addClickListener(function() ModuleManager.CollectionManager:reqHeroPointReward() end) self.btnClose:addClickListener(function() self:closeUI() end) self.btnHelp:addClickListener(function() local params = { type = GConst.TipsConst.HELP_TIPS_TYPE.ARENA, title = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_11), desc = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_7), } ModuleManager.TipsManager:showHelpTips(params) end) self:bind(DataManager.CollectionData, "dirtyHero", function() self:refreshCollectPoint() self:showFlyAnim() end) self:addEventListener(EventManager.CUSTOM_EVENT.COLLECTION_CLICK_GET_POINT, function(pos) self.flyFromPos = pos end) end function CollectionUI:onRefresh() self:showCollectList() self:refreshCollectPoint() end function CollectionUI:showCollectList() local datas = DataManager.CollectionData:getCollectList(self.collectType) self.scrollrectComp:addInitCallback(function() return "app/ui/collection/cell/collection_hero_cell" end) self.scrollrectComp:addRefreshCallback(function(index, cell) cell:refresh(datas[index]) end) self.scrollrectComp:clearCells() self.scrollrectComp:refillCells(#datas) self.flyIcon:setActive(false) end -- 刷新收集点数状态 function CollectionUI:refreshCollectPoint() local showId = DataManager.CollectionData:getCanGetOrCollectingTargetId(self.collectType) -- Logger.logHighlight("展示档位:"..showId) if showId then local target = DataManager.CollectionData:getTargetPoint(self.collectType, showId) local owned = DataManager.CollectionData:getTargetOwnedPoint(self.collectType, showId) self.txStage:setText(owned.."/"..target) self.imgProg.value = owned / target if DataManager.CollectionData:isMeetTargetPoint(self.collectType, showId) then -- 可领取 self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM)) self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_9)) self.imgGet:setSprite(GConst.ATLAS_PATH.HERO, "hero_dec_7") self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") self.btnGet:setTouchEnable(true) else -- 进行中 self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_3)) self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_4, target - owned)) self.imgGet:setSprite(GConst.ATLAS_PATH.HERO, "hero_dec_8") self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") self.btnGet:setTouchEnable(false) end else -- 已全部领完所有目标 self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM)) self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_8)) self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") self.btnGet:setTouchEnable(false) end local total = DataManager.CollectionData:getTotalCollectPoint(self.collectType) local cur = DataManager.CollectionData:getCurCollectPoint(self.collectType) self.txTotalValue:setText(cur.."/"..total) GFunc.centerImgAndTx(self.imgGet, self.txGet, 5) end function CollectionUI:showFlyAnim() if not self.flyFromPos then return end self.flyIcon:setLocalScale(0.4, 0.4, 0.4) self.flyIcon:setPosition(self.flyFromPos.x, self.flyFromPos.y, self.flyFromPos.z) self.flyIcon:setActive(true) if self.animFly then self.animFly:Kill() self.animFly = nil end self.animFly = self.root:createBindTweenSequence() self.animFly:Insert(0, self.flyIcon:getTransform():DOScale(0.8, 0.2)) self.animFly:Insert(0.2, self.flyIcon:getTransform():DOMove(self.btnRewards:getPosition(), 1)) self.animFly:Insert(0.4, self.flyIcon:getTransform():DOScale(0.4, 0.4)) self.animFly:OnComplete(function() self.flyIcon:setActive(false) self.flyFromPos = nil self.animFly = nil end) end return CollectionUI