272 lines
12 KiB
Lua
272 lines
12 KiB
Lua
|
require("Base/BasePanel")
|
|||
|
MissionDailyPanel = Inherit(BasePanel)
|
|||
|
local this = MissionDailyPanel
|
|||
|
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 = {}
|
|||
|
--初始化组件(用于子类重写)
|
|||
|
function MissionDailyPanel:InitComponent()
|
|||
|
|
|||
|
self.closeBtn = Util.GetGameObject(self.transform, "bg/closeBtn")
|
|||
|
|
|||
|
self.grid = Util.GetGameObject(self.transform, "dayMission/infoOb/rect/grid")
|
|||
|
for i = 1, 9 do
|
|||
|
allMissionDailyPres[i] = Util.GetGameObject(self.gameObject, "dayMission/infoOb/rect/grid/dayMissionPre ("..i..")")
|
|||
|
allMissionDailyItemPres[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(allMissionDailyPres[i].transform, "itemRect/itemGrid").transform)
|
|||
|
end
|
|||
|
self.boxItemGrid = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/ViewRect/grid").transform
|
|||
|
for i = 1, 3 do
|
|||
|
boxList[i] = Util.GetGameObject(self.transform, "dayMission/rewardBg/btnList/BoxBtn"..i)
|
|||
|
allMissionDailyBoxItemPres[i] = SubUIManager.Open(SubUIConfig.ItemView, self.boxItemGrid)
|
|||
|
end
|
|||
|
self.BoxThree = Util.GetGameObject(self.transform, "dayMission/rewardBg/BoxThree")
|
|||
|
self.BoxSix = Util.GetGameObject(self.transform, "dayMission/rewardBg/BoxSix")
|
|||
|
self.BoxNine = Util.GetGameObject(self.transform, "dayMission/rewardBg/BoxNine")
|
|||
|
|
|||
|
self.RewardPanelGetInfo = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/getInfo")
|
|||
|
self.RewardPanelGrid = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/ViewRect/grid")
|
|||
|
self.RewardPanel = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel")
|
|||
|
self.rewardMaskBtn = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/rewardMaskBtn")
|
|||
|
self.rewardMaskBtn = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/rewardMaskBtn")
|
|||
|
self.progressBottom = Util.GetGameObject(self.transform, "dayMission/rewardBg/progressBottom/Image"):GetComponent("Image")
|
|||
|
self.totalPro = Util.GetGameObject(self.transform, "dayMission/rewardBg/totalPro"):GetComponent("Text")
|
|||
|
self.getInfo = Util.GetGameObject(self.transform, "dayMission/rewardBg/RewardPanel/getInfo"):GetComponent("Text")
|
|||
|
end
|
|||
|
|
|||
|
--绑定事件(用于子类重写)
|
|||
|
function MissionDailyPanel:BindEvent()
|
|||
|
|
|||
|
Util.AddClick(self.closeBtn, function()
|
|||
|
self:ClosePanel()
|
|||
|
end)
|
|||
|
Util.AddClick(self.rewardMaskBtn, function()
|
|||
|
self.rewardMaskBtn:SetActive(false)
|
|||
|
self.RewardPanel:SetActive(false)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
--添加事件监听(用于子类重写)
|
|||
|
function MissionDailyPanel:AddListener()
|
|||
|
|
|||
|
Game.GlobalEvent:AddEvent(GameEvent.MissionDaily.OnMissionDailyChanged, self.OnShowData,self)
|
|||
|
end
|
|||
|
|
|||
|
--移除事件监听(用于子类重写)
|
|||
|
function MissionDailyPanel:RemoveListener()
|
|||
|
|
|||
|
Game.GlobalEvent:RemoveEvent(GameEvent.MissionDaily.OnMissionDailyChanged,self.OnShowData,self)
|
|||
|
end
|
|||
|
|
|||
|
--界面打开时调用(用于子类重写)
|
|||
|
function MissionDailyPanel:OnOpen(...)
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|||
|
function MissionDailyPanel:OnShow()
|
|||
|
|
|||
|
self:OnShowData()
|
|||
|
end
|
|||
|
function MissionDailyPanel:OnShowData()
|
|||
|
dailyTasksConfig=ConfigManager.GetConfig(ConfigName.DailyTasksConfig)
|
|||
|
curDailyMissionData = {}
|
|||
|
curDailyMissionBoxData = {}
|
|||
|
for i, v in pairs(TaskManager.GetTypeTaskList(TaskTypeDef.DayTask)) do
|
|||
|
if v.missionId < 10000 then
|
|||
|
if self:GetCurIsOpen(dailyTasksConfig[v.missionId].OpenLevel) then
|
|||
|
table.insert(curDailyMissionData,v)
|
|||
|
end
|
|||
|
else
|
|||
|
if self:GetCurIsOpen(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)
|
|||
|
self:SetDailyMission(curDailyMissionData)
|
|||
|
self:SetDailyMissionBox(curDailyMissionBoxData)
|
|||
|
end
|
|||
|
function MissionDailyPanel:SetDailyMission(_missionDatas)
|
|||
|
|
|||
|
for i = 1, math.max(#_missionDatas, #allMissionDailyPres) do
|
|||
|
local go = allMissionDailyPres[i]
|
|||
|
if not go then
|
|||
|
go = newObject(allMissionDailyPres[1])
|
|||
|
go.transform:SetParent(self.grid.transform)
|
|||
|
go.name = "dayMissionPre ("..i..")"
|
|||
|
go.transform.localScale = Vector3.one
|
|||
|
go.transform.localPosition = Vector3.zero
|
|||
|
allMissionDailyPres[i] = go
|
|||
|
Util.ClearChild(Util.GetGameObject(allMissionDailyPres[i].transform, "itemRect/itemGrid").transform)
|
|||
|
local goItemPres = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(allMissionDailyPres[i].transform, "itemRect/itemGrid").transform)
|
|||
|
--goItemPres.transform:SetParent(allMissionDailyPres[i].transform)
|
|||
|
goItemPres.transform.localScale = Vector3.one
|
|||
|
goItemPres.transform.localPosition = Vector3.zero
|
|||
|
allMissionDailyItemPres[i] = goItemPres
|
|||
|
end
|
|||
|
go.gameObject:SetActive(false)
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
for i = 1, #_missionDatas do
|
|||
|
allMissionDailyPres[i]:SetActive(true)
|
|||
|
self:SingleMissionDatasDataShow(allMissionDailyPres[i],allMissionDailyItemPres[i],_missionDatas[i])
|
|||
|
end
|
|||
|
end
|
|||
|
function MissionDailyPanel:SingleMissionDatasDataShow(_go,_itemGo,_missionData)
|
|||
|
local missionData = _missionData
|
|||
|
local missionConfigData = dailyTasksConfig[missionData.missionId]
|
|||
|
local jumpBtn = Util.GetGameObject(_go.transform, "jumpBtn")
|
|||
|
local getAwardBtn = Util.GetGameObject(_go.transform, "getAwardBtn")
|
|||
|
local completeBtn = Util.GetGameObject(_go.transform, "completeBtn")
|
|||
|
local state=missionData.state--0:未完成 1:完成未领取 2:已达成(已领取)
|
|||
|
jumpBtn:SetActive(state == SingleDailyMissionState.NoFinish)
|
|||
|
getAwardBtn:SetActive(state ~= SingleDailyMissionState.NoFinish)
|
|||
|
Util.GetGameObject(_go.transform, "redPoint"):SetActive(false)--state == SingleDailyMissionState.Finish
|
|||
|
completeBtn:SetActive(state == SingleDailyMissionState.GetFinish)
|
|||
|
if state==SingleDailyMissionState.NoFinish then
|
|||
|
|
|||
|
elseif state==SingleDailyMissionState.Finish then
|
|||
|
Util.GetGameObject(_go.transform, "getAwardBtn/Text"):GetComponent("Text").text = "领 取"
|
|||
|
elseif state==SingleDailyMissionState.GetFinish then
|
|||
|
Util.GetGameObject(_go.transform, "getAwardBtn/Text"):GetComponent("Text").text = "已领取"
|
|||
|
end
|
|||
|
local itemGrid = Util.GetGameObject(_go.transform, "itemRect/itemGrid")
|
|||
|
if missionConfigData then
|
|||
|
Util.GetGameObject(_go.transform, "infoText"):GetComponent("Text").text =string.format(missionConfigData.Desc,missionConfigData.Values[2][1])
|
|||
|
Util.GetGameObject(_go.transform, "progressText"):GetComponent("Text").text = missionData.progress.."/"..missionConfigData.Values[2][1]
|
|||
|
_itemGo:OnOpen(false,missionConfigData.Reward[1],0.75)--就一个
|
|||
|
Util.AddOnceClick(jumpBtn, function()
|
|||
|
JumpManager.GoJump(missionConfigData.Jump)
|
|||
|
end)
|
|||
|
end
|
|||
|
Util.AddOnceClick(getAwardBtn, 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)
|
|||
|
self:OnShowData()
|
|||
|
-- 检测红点状态
|
|||
|
CheckRedPointStatus(RedPointType.DailyTask)
|
|||
|
CheckRedPointStatus(RedPointType.SecretTer)
|
|||
|
end)
|
|||
|
end)
|
|||
|
end)
|
|||
|
end
|
|||
|
--每日任务宝箱赋值
|
|||
|
function MissionDailyPanel: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(self.transform, "dayMission/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(curDailyMissionData) do
|
|||
|
if v.state >= SingleDailyMissionState.GetFinish then
|
|||
|
curGetRewardNum = curGetRewardNum+1
|
|||
|
end
|
|||
|
end
|
|||
|
Log("curGetRewardNum "..curGetRewardNum)
|
|||
|
self.progressBottom.fillAmount=curGetRewardNum/dailyTasksConfig[_missionDatas[#_missionDatas].missionId].Values[2][1]--LengthOfTable(curDailyMissionData)
|
|||
|
self.totalPro.text=curGetRewardNum.."/"..LengthOfTable(curDailyMissionData)
|
|||
|
for i, v in pairs(_missionDatas) do
|
|||
|
boxList[i]:SetActive(true)
|
|||
|
Log("v.missionId "..v.missionId)
|
|||
|
local missionConfigData = dailyTasksConfig[v.missionId]
|
|||
|
Util.GetGameObject(boxList[i], "num"):GetComponent("Text").text = missionConfigData.Values[2][1]
|
|||
|
Util.GetGameObject(boxList[i], "getFinish"):SetActive(v.state==SingleDailyMissionState.GetFinish)
|
|||
|
Util.GetGameObject(boxList[i], "redPoint"):SetActive(v.state==SingleDailyMissionState.Finish)
|
|||
|
Util.AddOnceClick(boxList[i], function()
|
|||
|
self:MissionBoxClick(boxList[i],v)
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
function MissionDailyPanel:MissionBoxClick(btn,_singleData)
|
|||
|
if _singleData.state == SingleDailyMissionState.NoFinish or _singleData.state == SingleDailyMissionState.GetFinish then
|
|||
|
local curConfig = dailyTasksConfig[_singleData.missionId]
|
|||
|
self.getInfo.text="完成"..curConfig.Values[2][1].."个任务获得:"
|
|||
|
|
|||
|
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, self.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
|
|||
|
|
|||
|
self.rewardMaskBtn:SetActive(true)
|
|||
|
self.RewardPanel:SetActive(true)
|
|||
|
elseif _singleData.state == SingleDailyMissionState.Finish then
|
|||
|
NetManager.TakeMissionRewardRequest(TaskTypeDef.DayTask,_singleData.missionId,function (msg)
|
|||
|
TaskManager.SetTypeTaskState(TaskTypeDef.DayTask, _singleData.missionId, SingleDailyMissionState.GetFinish)
|
|||
|
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1)
|
|||
|
self:OnShowData()
|
|||
|
end)
|
|||
|
else
|
|||
|
|
|||
|
end
|
|||
|
end
|
|||
|
--界面关闭时调用(用于子类重写)
|
|||
|
function MissionDailyPanel:OnClose()
|
|||
|
|
|||
|
FightPointPassManager.isBeginFight = false
|
|||
|
end
|
|||
|
|
|||
|
--界面销毁时调用(用于子类重写)
|
|||
|
function MissionDailyPanel:OnDestroy()
|
|||
|
|
|||
|
allMissionDailyPres = {}
|
|||
|
allMissionDailyItemPres = {}
|
|||
|
boxList = {}
|
|||
|
allMissionDailyBoxItemPres = {}
|
|||
|
end
|
|||
|
function MissionDailyPanel: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
|
|||
|
return MissionDailyPanel
|