----- 日常任务弹窗 ----- local this = {} --传入父脚本模块 local parent --传入特效层级 local sortingOrder=0 local fun local SingleDailyMissionState = { NoFinish = 0, --未完成 Finish = 1, --完成未领取 GetFinish = 2, --已领取 } local SortDailyMissionState = { [1]=1, [0]=2, [2]=3 } local dailyTasksConfig={}--静态数据 local curDailyMissionData={}--每日任务条目 local curDailyMissionBoxData={}--宝箱 local boxList={}--宝箱按钮 local allMissionDailyPres = {} local allMissionDailyItemPres = {} local allMissionDailyBoxItemPres = {} local myGo local isPlayAnim = true function this:InitComponent(gameObject) this.spLoader = SpriteLoader.New() myGo = gameObject this.rectMask=Util.GetGameObject(gameObject,"rect"):GetComponent("Image") this.rewardPre = Util.GetGameObject(gameObject, "rewardPre") local v = Util.GetGameObject(gameObject, "rect"):GetComponent("RectTransform").rect this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(gameObject, "rect").transform, this.rewardPre, nil, Vector2.New(v.width, v.height), 1, 1, Vector2.New(0,10)) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 this.NoviceItemList={}--存储itemview 重复利用 this.boxItemGrid = Util.GetGameObject(gameObject, "RewardPanel/ViewRect/grid").transform for i = 1, 3 do boxList[i] = Util.GetGameObject(gameObject, "rewardBg/btnList/BoxBtn"..i) allMissionDailyBoxItemPres[i] = SubUIManager.Open(SubUIConfig.ItemView, this.boxItemGrid) end this.BoxThree = Util.GetGameObject(gameObject, "rewardBg/BoxThree") this.BoxSix = Util.GetGameObject(gameObject, "rewardBg/BoxSix") this.BoxNine = Util.GetGameObject(gameObject, "rewardBg/BoxNine") this.RewardPanelGetInfo = Util.GetGameObject(gameObject, "RewardPanel/getInfo") this.RewardPanelGrid = Util.GetGameObject(gameObject, "RewardPanel/ViewRect/grid") this.RewardPanel = Util.GetGameObject(gameObject, "RewardPanel") this.rewardMaskBtn = Util.GetGameObject(gameObject, "RewardPanel/rewardMaskBtn") this.progressBottom = Util.GetGameObject(gameObject, "rewardBg/progressBottom/Image"):GetComponent("Image") this.totalPro = Util.GetGameObject(gameObject, "rewardBg/totalProImage/totalPro"):GetComponent("Text") this.getInfo = Util.GetGameObject(gameObject, "RewardPanel/getInfo"):GetComponent("Text") end function this:BindEvent() Util.AddClick(this.rewardMaskBtn, function() this.rewardMaskBtn:SetActive(false) this.RewardPanel:SetActive(false) end) end function this:AddListener() Game.GlobalEvent:AddEvent(GameEvent.MissionDaily.OnMissionDailyChanged, this.OnShowData) Game.GlobalEvent:AddEvent(GameEvent.CloseUI.OnClose, this.ClosePanel) end function this:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.MissionDaily.OnMissionDailyChanged,this.OnShowData) Game.GlobalEvent:RemoveEvent(GameEvent.CloseUI.OnClose, this.ClosePanel) end function this:OnShow(_parent,...) isPlayAnim = true parent=_parent sortingOrder = _parent.sortingOrder --不定参中包含的不定参 _args[1]为面板类型 _args[2]之后(包括)为打开面板后传入的不定参 local args = {...} fun = args[1] this.rectMask.enabled=true this.OnShowData(true,true) this.RewardPanel:SetActive(false) end function this:OnSortingOrderChange(sortingOrder) for i, v in pairs(this.NoviceItemList) do for j = 1, #this.NoviceItemList[i] do if this.NoviceItemList[i][j] and this.NoviceItemList[i][j].gameObject then this.NoviceItemList[i][j]:SetEffectLayer(sortingOrder) end end end --特效层级重设 for i=1,#boxList do Util.AddParticleSortLayer(boxList[i], sortingOrder) end end function this.OnShowData(isTop,isAni) dailyTasksConfig=ConfigManager.GetConfig(ConfigName.DailyTasksConfig) curDailyMissionData = {} curDailyMissionBoxData = {} for i, v in pairs(TaskManager.GetTypeTaskList(TaskTypeDef.DayTask)) do if v.missionId < 10000 then if dailyTasksConfig[v.missionId].OpenLevel then table.insert(curDailyMissionData,v) end else if dailyTasksConfig[v.missionId].OpenLevel then table.insert(curDailyMissionBoxData,v) end end end table.sort(curDailyMissionData, function(a,b) if a.state == b.state then return a.missionId curGetRewardNum then curGetRewardNum = v.progress end end --LogGreen("#_missionDatas:"..#_missionDatas) this.progressBottom.fillAmount=curGetRewardNum/dailyTasksConfig[_missionDatas[#_missionDatas].missionId].Values[2][1] this.totalPro.text= Language[11320]..curGetRewardNum--.."/"..LengthOfTable(curDailyMissionData) for i, v in pairs(_missionDatas) do boxList[i]:SetActive(true) local missionConfigData = dailyTasksConfig[v.missionId] Util.GetGameObject(boxList[i], "num"):GetComponent("Text").text = missionConfigData.Values[2][1] boxList[i]:GetComponent("Image").enabled = (not (v.state==SingleDailyMissionState.Finish or v.state==SingleDailyMissionState.GetFinish)) Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KaiQi"):SetActive(v.state==SingleDailyMissionState.GetFinish) Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KaiQi/MeiKaiQi"):SetActive(false) Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KaiQi"):GetComponent("Animator").enabled = false Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KaiQi/KaiQi"):SetActive(v.state==SingleDailyMissionState.GetFinish) Util.GetGameObject(boxList[i], "getFinish"):SetActive(false) Util.GetGameObject(boxList[i], "redPoint"):SetActive(false) Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KeKaiQi"):SetActive(v.state==SingleDailyMissionState.Finish) Util.AddOnceClick(boxList[i], function() this.MissionBoxClick(boxList[i],v) end) end end function this.MissionBoxClick(btn,_singleData) if _singleData.state == SingleDailyMissionState.NoFinish or _singleData.state == SingleDailyMissionState.GetFinish then local curConfig = dailyTasksConfig[_singleData.missionId] this.getInfo.text=Language[11321]..curConfig.Values[2][1]..Language[11322] local reward = dailyTasksConfig[_singleData.missionId] if reward then for i = 1, math.max(#allMissionDailyBoxItemPres, #reward.Reward) do local go = allMissionDailyBoxItemPres[i] if not go then go = SubUIManager.Open(SubUIConfig.ItemView, this.boxItemGrid) go.gameObject.name = "frame"..i allMissionDailyBoxItemPres[i] = go end go.gameObject:SetActive(false) end for i = 1, #reward.Reward do allMissionDailyBoxItemPres[i].gameObject:SetActive(true) allMissionDailyBoxItemPres[i]:OnOpen(false,reward.Reward[i],0.75) end end this.rewardMaskBtn:SetActive(true) this.RewardPanel:SetActive(true) elseif _singleData.state == SingleDailyMissionState.Finish then Util.GetGameObject(btn, "UI_Effect_BaoXiang_KeKaiQi"):SetActive(false) Util.GetGameObject(btn, "UI_Effect_BaoXiang_KaiQi"):SetActive(true) Util.GetGameObject(btn, "UI_Effect_BaoXiang_KaiQi"):GetComponent("Animator").enabled = true Util.GetGameObject(btn, "UI_Effect_BaoXiang_KaiQi/MeiKaiQi"):SetActive(true) -- btn:GetComponent("Button").enabled = false for i = 1, #boxList do boxList[i]:GetComponent("Button").enabled = false end this.timer = Timer.New(function() NetManager.TakeMissionRewardRequest(TaskTypeDef.DayTask,_singleData.missionId,function (msg) TaskManager.SetTypeTaskState(TaskTypeDef.DayTask, _singleData.missionId, SingleDailyMissionState.GetFinish) UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1) this.OnShowData(false,false) end) this.timer:Stop() this.timer = nil for i = 1, #boxList do boxList[i]:GetComponent("Button").enabled = true end end, 1, 1, true) this.timer:Start() end end function this.GetCurIsOpen(LevelRegion) if LevelRegion[1] == 1 then--等级 return PlayerManager.level >= LevelRegion[2] elseif LevelRegion[1] == 2 then--关卡 return FightPointPassManager.GetFightIsOpenById(LevelRegion[2]) end end --跳转显示新手提示圈 function this.ShowGuideGo() --JumpManager.ShowGuide(UIName.MissionDailyPanel, Util.GetGameObject(allMissionDailyPres[1].transform, "getAwardBtn")) end --用于跳转回调 function this.ClosePanel() this.rectMask.enabled=true end function this:OnClose() FightPointPassManager.isBeginFight = false this.rectMask.enabled=true end function this:OnDestroy() this.spLoader:Destroy() allMissionDailyPres = {} allMissionDailyItemPres = {} boxList = {} allMissionDailyBoxItemPres = {} end return this