miduo_client/Assets/ManagedResources/~Lua/Modules/Mission/MissionDailyPanel_Daily.lua

310 lines
14 KiB
Lua
Raw Normal View History

2020-08-25 15:46:38 +08:00
----- 日常任务弹窗 -----
2020-06-03 19:09:01 +08:00
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
function this:InitComponent(gameObject)
myGo = gameObject
2020-06-08 13:57:30 +08:00
this.rectMask=Util.GetGameObject(gameObject,"rect"):GetComponent("Image")
2020-06-03 19:09:01 +08:00
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,-5))
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 1
this.NoviceItemList={}--存储itemview 重复利用
this.boxItemGrid = Util.GetGameObject(gameObject, "rewardBg/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, "rewardBg/RewardPanel/getInfo")
this.RewardPanelGrid = Util.GetGameObject(gameObject, "rewardBg/RewardPanel/ViewRect/grid")
this.RewardPanel = Util.GetGameObject(gameObject, "rewardBg/RewardPanel")
this.rewardMaskBtn = Util.GetGameObject(gameObject, "rewardBg/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, "rewardBg/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)
2020-06-08 13:57:30 +08:00
Game.GlobalEvent:AddEvent(GameEvent.CloseUI.OnClose, this.ClosePanel)
2020-06-03 19:09:01 +08:00
end
function this:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.MissionDaily.OnMissionDailyChanged,this.OnShowData)
2020-06-08 13:57:30 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.CloseUI.OnClose, this.ClosePanel)
2020-06-03 19:09:01 +08:00
end
function this:OnShow(_parent,...)
parent=_parent
sortingOrder = _parent.sortingOrder
--不定参中包含的不定参 _args[1]为面板类型 _args[2]之后(包括)为打开面板后传入的不定参
local args = {...}
fun = args[1]
2020-06-08 13:57:30 +08:00
this.rectMask.enabled=true
2020-06-03 19:09:01 +08:00
this.OnShowData()
end
2020-06-08 20:18:49 +08:00
function this:OnSortingOrderChange(sortingOrder)
2020-06-03 19:09:01 +08:00
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
2020-08-06 15:14:47 +08:00
end
--特效层级重设
for i=1,#boxList do
Util.AddParticleSortLayer(boxList[i], sortingOrder)
end
2020-06-03 19:09:01 +08:00
end
function this.OnShowData()
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 or ActTimeCtrlManager.SingleFuncState(dailyTasksConfig[v.missionId].OpenLevel) then
table.insert(curDailyMissionData,v)
end
else
if dailyTasksConfig[v.missionId].OpenLevel or ActTimeCtrlManager.SingleFuncState(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<b.missionId
else
return SortDailyMissionState[a.state]<SortDailyMissionState[b.state]
end
end)
local AllData = TaskManager.GetTypeTaskList(TaskTypeDef.Achievement)
this.ScrollView:SetData(curDailyMissionData, function (index, go)
this.SingleMissionDatasDataShow(go,curDailyMissionData[index])
end)
this.SetDailyMissionBox(curDailyMissionBoxData)
end
function this.SingleMissionDatasDataShow(_go,_missionData)
local missionData = _missionData
local missionConfigData = dailyTasksConfig[missionData.missionId]
2020-09-07 15:50:46 +08:00
local reward = {}
if missionConfigData and #missionConfigData.Reward then
for i = 1, #missionConfigData.Reward do
table.insert(reward,{reward = {missionConfigData.Reward[i][1],missionConfigData.Reward[i][2]},type = 1})
end
end
if missionConfigData and #missionConfigData.MazePoint then
for i = 1, #missionConfigData.MazePoint do
table.insert(reward,{reward = {missionConfigData.MazePoint[i][1],missionConfigData.MazePoint[i][2]},type = 2})
end
end
2020-06-03 19:09:01 +08:00
_go:SetActive(true)
local titleText = Util.GetGameObject(_go, "titleImage/titleText"):GetComponent("Text")
titleText.text =string.format(missionConfigData.Desc,missionConfigData.Values[2][1])
local itemGroup = Util.GetGameObject(_go, "content")
--滚动条复用重设itemview
2020-09-07 15:50:46 +08:00
if not this.NoviceItemList[_go] then
this.NoviceItemList[_go] = {}
end
for i = 1, #reward do
if not this.NoviceItemList[_go][i] then
2020-06-03 19:09:01 +08:00
this.NoviceItemList[_go][i] = SubUIManager.Open(SubUIConfig.ItemView, itemGroup.transform)
end
2020-09-07 15:50:46 +08:00
this.NoviceItemList[_go][i].gameObject:SetActive(false)
end
local show
for i = 1, #reward do
show = false
if (reward[i].type == 2 and ActivityGiftManager.GetActivityOpenStatus(ActivityTypeDef.TreasureOfSomeBody) and ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.SUNLONG))
or reward[i].type == 1 then
show = true
end
if show then
this.NoviceItemList[_go][i]:OnOpen(false, reward[i].reward, 0.9,false,false,false,sortingOrder)
2020-06-03 19:09:01 +08:00
this.NoviceItemList[_go][i].gameObject:SetActive(true)
end
end
local lingquButton = Util.GetGameObject(_go.gameObject, "lingquButton")
Util.GetGameObject(lingquButton.gameObject, "redPoint"):SetActive(false)
local qianwangButton = Util.GetGameObject(_go.gameObject, "qianwangButton")
local getFinishText = Util.GetGameObject(_go.gameObject, "getFinishText")
local getRewardProgress = Util.GetGameObject(_go.gameObject, "getRewardProgress")
local state=missionData.state--0:未完成 1完成未领取 2已达成已领取
lingquButton:SetActive(state == SingleDailyMissionState.Finish)
qianwangButton:SetActive(state == SingleDailyMissionState.NoFinish)
getFinishText:SetActive(state == SingleDailyMissionState.GetFinish)
getRewardProgress:SetActive(state ~= SingleDailyMissionState.Finish)
getRewardProgress:GetComponent("Text").text = missionData.progress.."/"..missionConfigData.Values[2][1]
Util.AddOnceClick(qianwangButton, function()
if missionConfigData.Jump then
JumpManager.GoJump(missionConfigData.Jump)
2020-06-08 13:57:30 +08:00
this.rectMask.enabled= UIManager.IsTopShow(UIName.MissionDailyPanel)
2020-06-03 19:09:01 +08:00
end
end)
Util.AddOnceClick(lingquButton, function()
NetManager.TakeMissionRewardRequest(TaskTypeDef.DayTask,missionData.missionId,function (msg)
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
TaskManager.SetTypeTaskState(TaskTypeDef.DayTask, missionData.missionId, SingleDailyMissionState.GetFinish)
this.OnShowData()
-- 检测红点状态
CheckRedPointStatus(RedPointType.DailyTask)
CheckRedPointStatus(RedPointType.SecretTer)
end)
end)
end)
end
--每日任务宝箱赋值
function this.SetDailyMissionBox(_missionDatas)
for i = 1, math.max(#_missionDatas, #boxList) do
local go = boxList[i]
if not go then
go = newObject(boxList[3])
go.transform:SetParent(Util.GetGameObject(myGo, "rewardBg/btnList").transform)
go.name = "BoxBtn"..i
go.transform.localScale = Vector3.one
go.transform.localPosition = Vector3.zero
boxList[i] = go
end
go.gameObject:SetActive(false)
end
local curGetRewardNum=0
for i, v in pairs(curDailyMissionBoxData) do
--LogGreen("v.missionId "..v.missionId.." "..v.progress)
if v.progress > curGetRewardNum then
curGetRewardNum = v.progress
end
end
this.progressBottom.fillAmount=curGetRewardNum/dailyTasksConfig[_missionDatas[#_missionDatas].missionId].Values[2][1]
2020-06-23 18:36:24 +08:00
this.totalPro.text= Language[11361]..curGetRewardNum--.."/"..LengthOfTable(curDailyMissionData)
2020-06-03 19:09:01 +08:00
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]
2020-08-06 15:14:47 +08:00
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)
2020-07-30 16:37:58 +08:00
Util.GetGameObject(boxList[i], "getFinish"):SetActive(false)
2020-08-06 15:14:47 +08:00
2020-08-19 10:05:01 +08:00
Util.GetGameObject(boxList[i], "redPoint"):SetActive(false)
2020-08-06 15:14:47 +08:00
Util.GetGameObject(boxList[i], "UI_Effect_BaoXiang_KeKaiQi"):SetActive(v.state==SingleDailyMissionState.Finish)
2020-06-03 19:09:01 +08:00
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]
2020-06-23 18:36:24 +08:00
this.getInfo.text=Language[11362]..curConfig.Values[2][1]..Language[11363]
2020-06-03 19:09:01 +08:00
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
2020-07-30 16:27:17 +08:00
Util.GetGameObject(btn, "UI_Effect_BaoXiang_KeKaiQi"):SetActive(false)
2020-08-06 15:14:47 +08:00
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)
2020-07-30 16:27:17 +08:00
btn:GetComponent("Button").enabled = false
2020-08-06 15:14:47 +08:00
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()
end)
this.timer:Stop()
this.timer = nil
2020-07-30 16:27:17 +08:00
btn:GetComponent("Button").enabled = true
end, 1, 1, true)
2020-08-06 15:14:47 +08:00
this.timer:Start()
2020-06-03 19:09:01 +08:00
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
2020-06-08 13:57:30 +08:00
--用于跳转回调
function this.ClosePanel()
this.rectMask.enabled=true
end
2020-06-03 19:09:01 +08:00
function this:OnClose()
FightPointPassManager.isBeginFight = false
2020-06-08 13:57:30 +08:00
this.rectMask.enabled=true
2020-06-03 19:09:01 +08:00
end
function this:OnDestroy()
allMissionDailyPres = {}
allMissionDailyItemPres = {}
boxList = {}
allMissionDailyBoxItemPres = {}
end
2020-06-23 18:36:24 +08:00
return this