| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577 |
- local UIActivityFortnightTaskView = require("UIActivity/UIActivityFortnightTaskView_Generate")
- local IconItemCtr = require("Common/IconItemCtr")
- function UIActivityFortnightTaskView:OnAwake(data)
- self.controller = require("UIActivity/UIActivityFortnightTaskCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIActivityFortnightTaskView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change,self,self.OnRefreshActivity);
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Day_Change,self,self.OnNewDayRefresh);
- end
- function UIActivityFortnightTaskView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UIActivityFortnightTaskView:Init()
- self.controller:InitActivityData(self.uiData.id)
- self.boxRewardLuaList = {}
- self.boxRewardGoList = {}
- self.startBoxPosX = self.templateBox.rectTransform.anchoredPosition3D.x
- self.boxPosY = self.templateBox.rectTransform.anchoredPosition3D.y
- self.boxTotalWidth = self.totalScore.progressNode.rectTransform.sizeDelta.x
- self.srvDay = 0
- self.curShowDay = 0
- self.curShowSubType = 0
- self.templateBox:SetActive(false)
- self:InitUIComs()
- --self:RefreshToggleData()
- --self:RefreshRedPoint()
- local activityItem = self.controller:GetActivityData()
- if activityItem == nil then
- return
- end
- self.srvDay = activityItem.curDay
- local initPageId = self.srvDay <= 7 and 1 or 2
- self:RefreshInfos(initPageId)
- end
- function UIActivityFortnightTaskView:RefreshInfos(pageId)
- local activityItem = self.controller:GetActivityData()
- if activityItem == nil then
- return
- end
- self.srvDay = activityItem.curDay
- self.pageId = pageId
- if pageId == 1 then
- self.curShowDay = self.srvDay <= 7 and self.srvDay or 1
- elseif pageId == 2 then
- self.curShowDay = self.srvDay <= 7 and 8 or self.srvDay
- end
- self:RefreshToggleData()
- self:RefreshRedPoint()
- self:RefreshOtherPageRedPoint()
- self.left:SetActive(pageId == 2 and self.srvDay > 7)
- self.right:SetActive(pageId == 1 and self.srvDay > 7)
- end
- function UIActivityFortnightTaskView:OnRefreshActivity(activityId)
- local actItem = self.controller:GetActivityData()
- if actItem == nil or actItem.actId ~= activityId then
- return
- end
- self:RefreshActData(self.curShowDay,self.curShowSubType)
- self:RefreshBoxRewardData(actItem:GetBoxRewards(self.pageId))
- self:RefreshScore(actItem.taskScore,actItem.totalTaskScore)
- self:RefreshRedPoint()
- end
- function UIActivityFortnightTaskView:OnNewDayRefresh(activityId)
- local actItem = self.controller:GetActivityData()
- if actItem == nil or actItem.actId ~= activityId then
- return
- end
- self.srvDay = actItem.curDay
- self.pageId = self.srvDay <= 7 and 1 or 2
- if self.pageId == 1 then
- self.curShowDay = self.srvDay <= 7 and self.srvDay or 1
- elseif self.pageId == 2 then
- self.curShowDay = self.srvDay <= 7 and 8 or self.srvDay
- end
- self:RefreshToggleData()
- self.left:SetActive(self.pageId == 2 and self.srvDay > 7)
- self.right:SetActive(self.pageId == 1 and self.srvDay > 7)
- end
- function UIActivityFortnightTaskView:InitUIComs()
- self.toggles = {}
- self.toggles[#self.toggles+1] = self.toggle1
- self.toggles[#self.toggles+1] = self.toggle2
- self.toggles[#self.toggles+1] = self.toggle3
- self.toggles[#self.toggles+1] = self.toggle4
- self.toggles[#self.toggles+1] = self.toggle5
- self.toggles[#self.toggles+1] = self.toggle6
- self.toggles[#self.toggles+1] = self.toggle7
- for i = 1, #self.toggles do
- self.toggles[i].toggle.isOn = false
- end
- end
- function UIActivityFortnightTaskView:RefreshToggleData()
- local activityItem = self.controller:GetActivityData()
- if activityItem == nil then
- return
- end
- --
- --self.srvDay = activityItem.curDay
- --self.curShowDay = self.srvDay
- self.curShowSubType = 1
- local startDay = 0
- if self.pageId == 2 then
- startDay = 7
- end
- self.title.text.text = string.formatbykey("FortnightTaskTitle", (startDay+7))
- local bg = self.controller:GetBg()
- LogError('bg = '..bg)
- if bg ~= nil then
- local pageBg = bg .. "_" .. (startDay+7)
- CommonUtil.LoadIcon(self, pageBg, function (sprite)
- self.bg.image.sprite = sprite
- end,self, 'FortnightTaskBGIdx')
- end
- for i = 1, 7 do
- local tog = self.toggles[i]
- local day = startDay + i
- tog.dayTxt.text.text = I18N.SetLanguageValue('SignInTips1', tostring(day))
- tog.lock:SetActive(day > self.srvDay)
- if day <= self.srvDay then
- tog.toggle.interactable = true
- tog.lock.lockBtn.button.interactable = false
- self.uiBase:AddToggleUniqueEventListener(tog.toggle,self, self.OnDayToggleClick,day)
- else
- tog.toggle.interactable = false
- tog.lock.lockBtn.button.interactable = true
- self.uiBase:AddButtonUniqueEventListener(tog.lock.lockBtn.button,self, self.OnClickLockDay,day)
- end
- if day == self.curShowDay then
- tog.toggle.isOn = true
- self.growthTaskToggle.toggle.isOn = true
- self:RefreshActData(self.curShowDay,self.curShowSubType)
- end
- end
- self:RefreshBoxRewardData(activityItem:GetBoxRewards(self.pageId))
- self:RefreshScore(activityItem.taskScore,activityItem.totalTaskScore)
- self:ClearLeftTimeTimer()
- self.updateLeftTimeTimer = ManagerContainer.LuaTimerMgr:AddTimer(60000, -1,self,self.UpdateLeftTime,nil);
- end
- function UIActivityFortnightTaskView:RefreshRedPoint()
- local activityItem = self.controller:GetActivityData()
- local startDay = 0
- if self.pageId == 2 then
- startDay = 7
- end
- for i = 1, #self.toggles do
- self.toggles[i].redpoint:SetActive(false)
- end
- for i = 1, 7 do
- local tog = self.toggles[i]
- local day = startDay + i
- if day <= self.srvDay then
- local gRedPoint,dRedPoint = activityItem:HasDayRedPoint(day)
- tog.redpoint:SetActive(gRedPoint or dRedPoint)
- if self.curShowDay == day then
- self.growthTaskToggle.redpoint:SetActive(gRedPoint)
- self.dailyTaskToggle.redpoint:SetActive(dRedPoint)
- end
- end
- end
- end
- function UIActivityFortnightTaskView:RefreshOtherPageRedPoint()
- local activityItem = self.controller:GetActivityData()
- local startDay = 0
- if self.pageId == 1 then
- startDay = 7
- end
- local state = false
- for i = 1, 7 do
- local day = startDay + i
- if day <= self.srvDay then
- local gRedPoint,dRedPoint = activityItem:HasDayRedPoint(day)
- if gRedPoint or dRedPoint then
- state = true
- break
- end
- end
- end
- if self.pageId == 1 then
- self.right.uIRedPointRP:SetActive(state)
- else
- self.left.uIRedPointRP:SetActive(state)
- end
- end
- function UIActivityFortnightTaskView:RefreshScore(score,totalScore)
- self.totalScore.item.num.text.text = tostring(score)
- if totalScore > 0 then
- self.totalScore.progressNode.scrollbar.size = score/totalScore
- else
- self.totalScore.progressNode.scrollbar.size = 0
- end
- end
- function UIActivityFortnightTaskView:RefreshBoxRewardData(boxRewards)
- if boxRewards == nil or #boxRewards == 0 then
- self.totalScore.progressNode.scrollbar.size = 0
- return
- end
- local boxCnt = #boxRewards
- local deltaX = self.boxTotalWidth / boxCnt
- for i = 1,boxCnt do
- local posX = self.startBoxPosX + i * deltaX
- local boxLua = self:GetBoxRewardLua(i,posX)
- self:SetBoxReward(boxLua,boxRewards[i])
- end
- end
- function UIActivityFortnightTaskView:SetBoxReward(boxLua,boxData)
- boxLua.num.text.text = tostring(boxData.score)
- if boxData:IsGotReward() then
- boxLua.box.animator:Play("BoxOpened")
- self.uiBase:AddButtonUniqueEventListener(boxLua.box.button,self, self.OnClickShowRewardBoxTips, boxData)
- elseif boxData:IsCanGet() then
- boxLua.box.animator:Play("BoxGlow")
- self.uiBase:AddButtonUniqueEventListener(boxLua.box.button,self, self.OnClickRewardBox, boxData)
- else
- boxLua.box.animator:Play("BoxClose")
- self.uiBase:AddButtonUniqueEventListener(boxLua.box.button,self, self.OnClickShowRewardBoxTips, boxData)
- end
- end
- function UIActivityFortnightTaskView:OnClickRewardBox(btn,param)
- local boxData = param[0]
- ManagerContainer.DataMgr.ActsDataMgr:SendGetBoxRewardReq(self.controller:GetActivityData().actId,boxData.boxId)
- end
- function UIActivityFortnightTaskView:OnClickShowRewardBoxTips(btn,param)
- local boxData = param[0]
- ManagerContainer.LuaUIMgr:ShowMinRewardTips(boxData:ShowRewards())
- end
- function UIActivityFortnightTaskView:GetBoxRewardLua(idx,posX)
- if idx <= #self.boxRewardLuaList then
- return self.boxRewardLuaList[idx]
- end
-
- local boxGo = UnityEngine.GameObject.Instantiate(self.templateBox.gameObject)
- self.boxRewardGoList[#self.boxRewardGoList+1] = boxGo
- local boxRewardLua = CommonUtil.BindGridViewItem2Lua(self, "RewardBox", boxGo)
- boxRewardLua.prefabName = "RewardBox"
-
- boxGo.name = "RewardBoxItem"
- boxRewardLua.transform:SetParent(self.totalScore.transform)
- boxRewardLua.transform.localScale = Vector3(1,1,1)
- boxRewardLua.rectTransform.anchoredPosition3D = Vector3(posX,self.boxPosY,0)
- boxRewardLua:SetActive(true)
- self.boxRewardLuaList[#self.boxRewardLuaList+1] = boxRewardLua
- return boxRewardLua
- end
- function UIActivityFortnightTaskView:OnClickLockDay(btn,param)
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("DailyTaskCannotBeViewed")
- end
- function UIActivityFortnightTaskView:OnDayToggleClick(toggle, param)
- if toggle.isOn then
- self.curShowDay = param[0]
- self.curShowSubType = 1
- self.growthTaskToggle.toggle.isOn = true
- self:RefreshActData(self.curShowDay,self.curShowSubType)
- end
- end
- --subType:1表示成长任务, 2表示今日任务
- function UIActivityFortnightTaskView:OnClickToggle(toggle,subType)
- if toggle.isOn then
- if self.curShowSubType ~= subType then
- if subType == 2 then
- local activityItem = self.controller:GetActivityData()
- local gRedPoint,dRedPoint = activityItem:HasDayRedPoint(self.curShowDay)
- local lockState = not dRedPoint and self.curShowDay < self.srvDay
- if lockState then
- self.growthTaskToggle.toggle.isOn = true
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ActivitiesTaskFinish")
- return
- end
- end
- self.curShowSubType = subType
- self:RefreshActData(self.curShowDay,self.curShowSubType)
- end
- end
- end
- --flag:1 表示成长任务,2:表示今日任务
- function UIActivityFortnightTaskView:RefreshActData(day,flag)
- local activityItem = self.controller:GetActivityData()
- local taskInfo = activityItem:GetTaskListByDay(day)
- if taskInfo == nil then
- return
- end
- local gRedPoint,dRedPoint = activityItem:HasDayRedPoint(day)
- self.growthTaskToggle.redpoint:SetActive(gRedPoint)
- self.dailyTaskToggle.redpoint:SetActive(dRedPoint)
- local lockState = not dRedPoint and day < self.srvDay
- CommonUtil.SetTotalChildrenGray(self.dailyTaskToggle, lockState)
- if lockState and flag == 2 then
- self.growthTaskToggle.toggle.isOn = true
- return
- end
- local taskList = nil
- if flag == 1 then
- taskList = taskInfo.gTasks
- elseif flag == 2 then
- taskList = taskInfo.dTasks
- self:RefreshLeftTime(activityItem:GetLeftTime())
- end
- self.leftTimeNode:SetActive(flag == 2 and day == self.srvDay)
- self.taskListScroll.loopVerticalScrollRect:ClearCells()
- if taskList ~= nil and #taskList > 0 then
- CommonUtil.LoopGridViewEleCreateNew(self,
- self.taskListScroll.loopVerticalScrollRect,
- self.taskListScroll.content.verticalLayoutGroup,
- taskList,
- 0,
- self, self.SetTaskItem);
- self.taskListScroll.loopVerticalScrollRect:MoveTo(0)
- else
- self.taskListScroll.loopVerticalScrollRect:ClearCells()
- end
- end
- function UIActivityFortnightTaskView:RefreshLeftTime(leftTime)
- local day,hour,minute,second = ConvertTimeForm(leftTime)
- local timeStr = ""
- if hour > 0 then
- timeStr = hour .. Enum.TimeString.h .. minute .. Enum.TimeString.m
- else
- if minute == 0 then
- minute = 1
- end
- timeStr = minute .. Enum.TimeString.m
- end
- self.leftTimeNode.leftTimeTxt.text.text = string.formatbykey("DailyTaskLeftTime",timeStr)
- end
- function UIActivityFortnightTaskView:SetTaskItem(taskLua,idx,taskData)
- taskLua.taskName.text.text = I18N.T(taskData.name)
- taskLua.progress.scrollbar.size = taskData.doNum / taskData.finishedNum
- taskLua.doNumTxt.text.text = taskData.doNum .. "/" .. taskData.finishedNum
- self:ShowTaskReward(taskLua,taskData:ShowRewards())
- self.uiBase:AddButtonUniqueEventListener(taskLua.gotoBtn.button,self, self.OnClickTaskGoto, taskData)
- self.uiBase:AddButtonUniqueEventListener(taskLua.getBtn.button,self, self.OnClickTaskGet, taskData.taskId)
- if taskData:IsOutofDate() then
- if not taskData:IsFinished() then
- taskLua.gotoBtn:SetActive(false)
- taskLua.getBtn:SetActive(false)
- taskLua.sealBtn:SetActive(false)
- taskLua.endBtn:SetActive(true)
- elseif not taskData:IsGotReward() then
- taskLua.gotoBtn:SetActive(false)
- taskLua.getBtn:SetActive(true)
- taskLua.sealBtn:SetActive(false)
- taskLua.endBtn:SetActive(false)
- else
- taskLua.gotoBtn:SetActive(false)
- taskLua.getBtn:SetActive(false)
- taskLua.sealBtn:SetActive(true)
- taskLua.endBtn:SetActive(false)
- end
- else
- if not taskData:IsFinished() then
- taskLua.gotoBtn:SetActive(true)
- taskLua.getBtn:SetActive(false)
- taskLua.sealBtn:SetActive(false)
- taskLua.endBtn:SetActive(false)
- elseif not taskData:IsGotReward() then
- taskLua.gotoBtn:SetActive(false)
- taskLua.getBtn:SetActive(true)
- taskLua.sealBtn:SetActive(false)
- taskLua.endBtn:SetActive(false)
- else
- taskLua.gotoBtn:SetActive(false)
- taskLua.getBtn:SetActive(false)
- taskLua.sealBtn:SetActive(true)
- taskLua.endBtn:SetActive(false)
- end
- end
- end
- function UIActivityFortnightTaskView:ShowTaskReward(taskLua,rewards)
- if taskLua.itemList == nil then
- taskLua.itemList = {}
- taskLua.itemList[#taskLua.itemList+1] = taskLua.iconSmallItem
- end
- for i = 1, #taskLua.itemList do
- taskLua.itemList[i]:SetActive(false)
- end
- if rewards == nil then
- return
- end
- for i = 1, #rewards do
- local itemLua = taskLua.itemList[i]
- if itemLua == nil then
- local itemGo = UnityEngine.GameObject.Instantiate(taskLua.iconSmallItem.gameObject)
- itemLua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", itemGo)
- itemLua.prefabName = "IconItem"
-
- itemGo.name = "IconItem"
- itemLua.transform:SetParent(taskLua.rewardsNode.transform)
- itemLua.transform.localScale = Vector3(1,1,1)
- itemLua.rectTransform.anchoredPosition3D = Vector3(0,0,0)
- taskLua.itemList[#taskLua.itemList+1] = itemLua
- end
- local rewardData = {cfgId = rewards[i][1], num = rewards[i][2] }
- IconItemCtr:SetData(self, itemLua, rewardData, nil, self, self.OnClickItem)
- itemLua:SetActive(true)
- end
- end
- function UIActivityFortnightTaskView:OnClickItem(btn,params)
- local logicData = params[0]
- ManagerContainer.LuaUIMgr:OpenTips(logicData)
- end
- function UIActivityFortnightTaskView:OnClickTaskGoto(btn,param)
- local taskData = param[0]
- local parentPageId = 0
- if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMainCity1) then
- parentPageId = Enum.UIPageName.UIMainCity1
- elseif ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIBattle) then
- parentPageId = Enum.UIPageName.UIBattle
- end
- if taskData:CanJump() then
- if taskData.gotoPageId > 0 then
- if taskData.gotoPageId == Enum.UIPageName.UIDojo2D then
- ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIDojo2D, parentPageId)
- else
- ManagerContainer.LuaUIMgr:Open(taskData.gotoPageId,nil,parentPageId)
- end
- local uiData = ManagerContainer.CfgMgr:GetUIData(taskData.gotoPageId)
- if uiData.type == 0 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, uiData.mainViewType)
- end
- self:UIClose()
- end
- else
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("DailyTaskText")
- end
- end
- function UIActivityFortnightTaskView:OnClickTaskGet(btn,param)
- local taskId = param[0]
- ManagerContainer.DataMgr.ActsDataMgr:SendGetActivityRewardReq(self.controller:GetActivityData().actId,taskId)
- end
- function UIActivityFortnightTaskView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIActivityFortnightTaskView:AddUIEventListener()
- self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
- self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickCloseBtn)
- self.uiBase:AddToggleEventListener(self.growthTaskToggle.toggle,self, self.OnClickToggle, 1)
- self.uiBase:AddToggleEventListener(self.dailyTaskToggle.toggle,self, self.OnClickToggle, 2)
- self.uiBase:AddButtonEventListener(self.left.button,self, self.OnLeftClick)
- self.uiBase:AddButtonEventListener(self.right.button,self, self.OnRightClick)
- end
- function UIActivityFortnightTaskView:OnHide()
- end
- function UIActivityFortnightTaskView:OnShow(data)
- self.controller:SetData(data)
- end
- function UIActivityFortnightTaskView:OnClose()
- self:ClearLeftTimeTimer()
- self:DestroyGoes()
- CommonUtil.ClearGridViewItem(self, "RewardBox")
- self.boxRewardLuaList = nil
- self.taskListScroll.loopVerticalScrollRect:DestroyCells()
- end
- function UIActivityFortnightTaskView:OnDispose()
- self.controller:OnDispose()
- end
- function UIActivityFortnightTaskView:OnClickCloseBtn()
- ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
- if self.uiBase.MSourceUIID > 0 then
- ManagerContainer.LuaUIMgr:Open(self.uiBase.MSourceUIID)
- end
- end
- function UIActivityFortnightTaskView:OnLeftClick()
- self:RefreshInfos(1)
- end
- function UIActivityFortnightTaskView:OnRightClick()
- self:RefreshInfos(2)
- end
- function UIActivityFortnightTaskView:DestroyGoes()
- if self.boxRewardGoList ~= nil then
- for i = 1, #self.boxRewardGoList do
- CommonUtil.DestroyGO(self.boxRewardGoList[i])
- end
- end
- self.boxRewardGoList = nil
- end
- function UIActivityFortnightTaskView:ClearLeftTimeTimer()
- if self.updateLeftTimeTimer~= nil then
- ManagerContainer.LuaTimerMgr:RemoveTimer(self.updateLeftTimeTimer)
- self.updateLeftTimeTimer = nil
- end
- end
- function UIActivityFortnightTaskView:UpdateLeftTime()
- local activityItem = self.controller:GetActivityData()
- self:RefreshLeftTime(activityItem:GetLeftTime())
- if activityItem:GetLeftTime() == 0 then
- self:ClearLeftTimeTimer()
- end
- end
- return UIActivityFortnightTaskView
|