330 lines
15 KiB
Lua
330 lines
15 KiB
Lua
require("Base/BasePanel")
|
||
JourneyWithWindPanel = Inherit(BasePanel)
|
||
local this = JourneyWithWindPanel
|
||
local JourneyWithWind = ConfigManager.GetConfig(ConfigName.JourneyWithWind)
|
||
this.timer = Timer.New()
|
||
local sorting = 0
|
||
local itemList = {}--item list 重复利用 和 修改层级时会用到
|
||
local curDayIndex = 0--当前天数索引
|
||
local curBtnConFigData = {}--当前daybtn ActivityRewardConfig数据
|
||
local allBtnsConFigData = {}--上方所有daybtn ActivityRewardConfig数据
|
||
local curDayAllTaskGos = {}--当前天所有任务go
|
||
local curRewardTaskGos = {}--奖励 礼包
|
||
local curDay
|
||
local activityData
|
||
this.UpView = nil
|
||
--初始化组件(用于子类重写)
|
||
function JourneyWithWindPanel:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
--子模块脚本
|
||
this.BtnBack = Util.GetGameObject(self.gameObject, "btnBack")
|
||
this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
|
||
|
||
curDayAllTaskGos = {}
|
||
for i = 1, 5 do
|
||
curDayAllTaskGos[i] = Util.GetGameObject(self.gameObject, "taskList/MissionPre (".. i ..")")
|
||
end
|
||
curRewardTaskGos = {}
|
||
for i = 1, 2 do
|
||
curRewardTaskGos[i] = Util.GetGameObject(self.gameObject, "rewardList/rewardPro (".. i ..")")
|
||
end
|
||
this.leftBtnParent=Util.GetGameObject(self.gameObject,"leftBtn")
|
||
this.rightBtnParent=Util.GetGameObject(self.gameObject,"rightBtn")
|
||
this.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject")
|
||
this.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject")
|
||
this.curDayTip = Util.GetGameObject(self.transform, "curDayTip"):GetComponent("Text")
|
||
|
||
this.dayPre = Util.GetGameObject(self.gameObject, "dayPre")
|
||
local v2 = Util.GetGameObject(self.gameObject, "rect"):GetComponent("RectTransform").rect
|
||
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.gameObject, "rect").transform,
|
||
this.equipPre, nil, Vector2.New(-v2.x*2, -v2.y*2), 2, 1, Vector2.New(0,0))
|
||
this.ScrollView.moveTween.MomentumAmount = 1
|
||
this.ScrollView.moveTween.Strength = 1
|
||
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform, { showType = UpViewOpenType.ShowLeft })
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function JourneyWithWindPanel:BindEvent()
|
||
|
||
Util.AddClick(this.BtnBack, function()
|
||
self:ClosePanel()
|
||
end)
|
||
--帮助按钮
|
||
Util.AddClick(this.helpBtn, function()
|
||
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.OpenSevenDay,this.helpPosition.x,this.helpPosition.y+220)
|
||
end)
|
||
--左切换按钮
|
||
Util.AddClick(this.leftBtn, function()
|
||
this.LeftBtnOnClick()
|
||
end)
|
||
|
||
--右切换按钮
|
||
Util.AddClick(this.rightBtn, function()
|
||
this.RightBtnOnClick()
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function JourneyWithWindPanel:AddListener()
|
||
-- Game.GlobalEvent:AddEvent(GameEvent.MissionDaily.OnMissionDailyChanged, this.RefreshTaskShow)
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function JourneyWithWindPanel:RemoveListener()
|
||
-- Game.GlobalEvent:RemoveEvent(GameEvent.MissionDaily.OnMissionDailyChanged, this.RefreshTaskShow)
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function JourneyWithWindPanel:OnOpen(_curDayIndex)
|
||
curDay = math.ceil((CalculateSecondsNowTo_N_OClock(0) + GetTimeStamp() - PlayerManager.userCreateTime)/86400)
|
||
curDayIndex = _curDayIndex or curDay
|
||
end
|
||
|
||
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
||
function JourneyWithWindPanel:OnShow()
|
||
currentDay = SevenDayCarnivalManager.GetCurrentDayNumber()
|
||
-- this.OnDayClickBtn(curDayIndex)
|
||
activityData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.JourneyWithWind)
|
||
this.ShowDayBtnsData()
|
||
this.ShowDayData(curDayIndex)
|
||
this.ShowTime()
|
||
this.RefreshRedPoint()
|
||
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
|
||
end
|
||
|
||
function JourneyWithWindPanel:OnSortingOrderChange()
|
||
for i, v in pairs(itemList) do
|
||
for j = 1, #v do
|
||
v[j]:SetEffectLayer(self.sortingOrder)
|
||
end
|
||
end
|
||
sorting=self.sortingOrder
|
||
end
|
||
|
||
--显示上方所有天的按钮 及 当前可领取的主要奖励
|
||
function this.ShowDayBtnsData()
|
||
allBtnsConFigData = ActivityGiftManager.GetJourneyWithWindAllDayConFigData()
|
||
this.titleScrollView:SetData(allBtnsConFigData, function (index, go)
|
||
this.SingleDayBtnDataShow(go, allBtnsConFigData[index])
|
||
end,true,true)
|
||
this.titleScrollView:SetIndex(curDayIndex)
|
||
end
|
||
function this.SingleDayBtnDataShow(go,data)
|
||
Util.GetGameObject(go, "Text"):GetComponent("Text").text = string.format(Language[10528],data.Values[1][2])
|
||
local iconItemId = ConfigManager.GetConfigData(ConfigName.ItemConfig,data.Reward[1][1])
|
||
Util.GetGameObject(go, "icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(iconItemId))
|
||
local redPoint = Util.GetGameObject(go, "redPoint")
|
||
local redState = false
|
||
if activityData then
|
||
for j = 1, #activityData.mission do
|
||
if activityData.mission[j].missionId == data.Id then
|
||
redState = ActivityGiftManager.SingleJourneyWithWindRewardNoGet(activityData.mission[j])
|
||
end
|
||
end
|
||
end
|
||
if not redState then
|
||
redState = ActivityGiftManager.GetJourneyWithWindPlayerPrefs(data.Values[1][2])
|
||
end
|
||
redPoint:SetActive(redState)
|
||
Util.AddOnceClick(go, function()
|
||
this.ShowDayData(data.Values[1][2])
|
||
end)
|
||
end
|
||
|
||
--当前天的具体任务显示
|
||
function this.ShowDayData(_curDayIndex)
|
||
curDayIndex = _curDayIndex
|
||
ActivityGiftManager.SetJourneyWithWindPlayerPrefs(curDayIndex,1)
|
||
this.rightBtnParent:SetActive(true)
|
||
this.leftBtnParent:SetActive(true)
|
||
if curDayIndex == #allBtnsConFigData then
|
||
this.rightBtnParent:SetActive(false)
|
||
elseif curDayIndex == 1 then
|
||
this.leftBtnParent:SetActive(false)
|
||
end
|
||
this.curDayTip.text = string.format(Language[10528],curDayIndex)
|
||
for i = 1, #allBtnsConFigData do
|
||
if curDayIndex == allBtnsConFigData[i].Values[1][2] then
|
||
curBtnConFigData = allBtnsConFigData[i]
|
||
end
|
||
end
|
||
--组当前所有任务的表数据
|
||
local curDayAllTaskConFigData = {}
|
||
for key, configInfo in ConfigPairs(JourneyWithWind) do
|
||
if configInfo.DayNum == curDayIndex then
|
||
table.insert(curDayAllTaskConFigData,configInfo)
|
||
end
|
||
end
|
||
--组当前所有任务的后端数据
|
||
local AllTaskData = TaskManager.GetTypeTaskList(TaskTypeDef.JourneyWithWind)
|
||
for i = 1, #curDayAllTaskGos do
|
||
if curDayAllTaskConFigData[i] then
|
||
curDayAllTaskGos[i]:SetActive(true)
|
||
Util.GetGameObject(curDayAllTaskGos[i], "name"):GetComponent("Text").text = "目标"
|
||
Util.GetGameObject(curDayAllTaskGos[i], "condition"):GetComponent("Text").text = curDayAllTaskConFigData[i].Show
|
||
local btnJump = Util.GetGameObject(curDayAllTaskGos[i], "btnJump")
|
||
local btnJumpText = Util.GetGameObject(curDayAllTaskGos[i], "btnJump/get"):GetComponent("Text")
|
||
local buyInfo = Util.GetGameObject(curDayAllTaskGos[i], "btnJump/buyInfo"):GetComponent("Text")
|
||
btnJumpText.text = "前往"
|
||
buyInfo.text = ""
|
||
Util.SetGray(btnJump,false)
|
||
local curMissionData
|
||
for j = 1, #AllTaskData do
|
||
if AllTaskData[j].missionId == curDayAllTaskConFigData[i].Id then
|
||
curMissionData = AllTaskData[j]
|
||
end
|
||
end
|
||
if curMissionData then--后端有数据说明是当天或者前些天
|
||
local isOpen = not curDayAllTaskConFigData[i].SystemId or (curDayAllTaskConFigData[i].SystemId and curDayAllTaskConFigData[i].SystemId > 0 and ActTimeCtrlManager.SingleFuncState(curDayAllTaskConFigData[i].SystemId) )
|
||
|
||
local progress = curMissionData.progress--任务进度
|
||
local state = curMissionData.state--任务状态 0:未完成 1:完成未领取 2:已达成(已领取)
|
||
if state == 1 or state == 2 then
|
||
btnJump.enabled = false
|
||
btnJumpText.text = "已完成"
|
||
elseif state == 0 then
|
||
if isOpen then
|
||
btnJump.enabled = true
|
||
if curDayAllTaskConFigData[i].TaskGroup ~= 4 then
|
||
buyInfo.text = string.format("%s/%s",progress,curDayAllTaskConFigData[i].TaskValue[2][2])
|
||
end
|
||
Util.AddOnceClick(btnJump, function()
|
||
JumpManager.GoJump(curDayAllTaskConFigData[i].Jump)
|
||
end)
|
||
else
|
||
Util.SetGray(btnJump,true)
|
||
btnJump.enabled = false
|
||
buyInfo.text = string.format(Language[11903],ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,curDayAllTaskConFigData[i].SystemId).OpenRules[2])
|
||
end
|
||
end
|
||
|
||
else--无数据说明是之后的一些天
|
||
btnJump.enabled = false
|
||
Util.SetGray(btnJump,true)
|
||
end
|
||
|
||
else
|
||
curDayAllTaskGos[i]:SetActive(false)
|
||
end
|
||
end
|
||
|
||
|
||
--奖励任务
|
||
if curRewardTaskGos[1] and curBtnConFigData and activityData then
|
||
local curRewardTaskData--奖励后端数据
|
||
for i = 1, #activityData.mission do
|
||
if activityData.mission[i].missionId == curBtnConFigData.Id then
|
||
curRewardTaskData = activityData.mission[i]
|
||
end
|
||
end
|
||
if curRewardTaskData then
|
||
local go = curRewardTaskGos[1]
|
||
if not itemList[go.name] then
|
||
itemList[go.name] = {}
|
||
end
|
||
for i = 1, #itemList[go.name] do
|
||
itemList[go.name][i].gameObject:SetActive(false)
|
||
end
|
||
for i = 1, #curBtnConFigData.Reward do
|
||
if itemList[go.name][i] then
|
||
itemList[go.name][i]:OnOpen(false, curBtnConFigData.Reward[i], 0.8,false,false,false,sorting)
|
||
else
|
||
itemList[go.name][i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(go, "itemContent").transform)
|
||
itemList[go.name][i]:OnOpen(false, curBtnConFigData.Reward[i], 0.8,false,false,false,sorting)
|
||
end
|
||
itemList[go.name][i].gameObject:SetActive(true)
|
||
end
|
||
Util.GetGameObject(go, "desc"):GetComponent("Text").text = curBtnConFigData.ContentsShow
|
||
local isGetState = ActivityGiftManager.SingleJourneyWithWindRewardNoGet(curRewardTaskData)
|
||
local imageStr = isGetState and "s_slbz_1anniuongse" or "s_slbz_1anniuhuise"
|
||
Util.GetGameObject(go, "getBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite(imageStr)
|
||
local btnText = Util.GetGameObject(go, "getBtn/Text"):GetComponent("Text")
|
||
btnText.text = "领取"
|
||
Util.GetGameObject(go, "getBtn/redPoint"):SetActive(isGetState)
|
||
Util.AddOnceClick(Util.GetGameObject(go, "getBtn"), function()
|
||
if isGetState then
|
||
NetManager.GetActivityRewardRequest(curRewardTaskData.missionId, activityData.activityId, function(drop)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
|
||
-- self.parent:RefreshData(true,false)
|
||
-- CheckRedPointStatus(RedPointType.Expert_FastExplore)
|
||
end)
|
||
end)
|
||
else
|
||
if curRewardTaskData.state == 0 then
|
||
PopupTipPanel.ShowTip("完成当日所有目标才可领取!")
|
||
elseif curRewardTaskData.state == 1 then
|
||
btnText.text = "已领取"
|
||
end
|
||
end
|
||
end)
|
||
end
|
||
end
|
||
|
||
local rechargecommodityData = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,curBtnConFigData.Values[2][1])
|
||
-- 礼包
|
||
if curRewardTaskGos[2] and rechargecommodityData then
|
||
local go = curRewardTaskGos[2]
|
||
if not itemList[go.name] then
|
||
itemList[go.name] = {}
|
||
end
|
||
for i = 1, #itemList[go.name] do
|
||
itemList[go.name][i].gameObject:SetActive(false)
|
||
end
|
||
for i = 1, #rechargecommodityData.RewardShow do
|
||
if itemList[go.name][i] then
|
||
itemList[go.name][i]:OnOpen(false, rechargecommodityData.RewardShow[i], 0.8,false,false,false,sorting)
|
||
else
|
||
itemList[go.name][i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(go, "itemContent").transform)
|
||
itemList[go.name][i]:OnOpen(false, rechargecommodityData.RewardShow[i], 0.8,false,false,false,sorting)
|
||
end
|
||
itemList[go.name][i].gameObject:SetActive(true)
|
||
end
|
||
Util.GetGameObject(go, "desc"):GetComponent("Text").text = rechargecommodityData.Name
|
||
local rechargeData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.DirectPurchaseGift, rechargecommodityData.Id)
|
||
local freetimes = rechargeData.dynamicBuyTimes - rechargeData.buyTimes
|
||
local imageStr = freetimes > 0 and "s_slbz_1anniuongse" or "s_slbz_1anniuhuise"
|
||
Util.GetGameObject(go, "getBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite(imageStr)
|
||
local btnText = Util.GetGameObject(go, "getBtn/Text"):GetComponent("Text")
|
||
btnText.text = rechargecommodityData.Price
|
||
Util.AddOnceClick(Util.GetGameObject(go, "getBtn"), function()
|
||
if freetimes > 0 then
|
||
PayManager.Pay(rechargecommodityData.Id, function(id)
|
||
FirstRechargeManager.RefreshAccumRechargeValue(rechargecommodityData.Id)
|
||
-- CheckRedPointStatus(RedPointType.DailyGift)
|
||
-- self.parent:RefreshData(nil,false,false)
|
||
end)
|
||
else
|
||
PopupTipPanel.ShowTip("完成当日所有目标才可购买!")
|
||
end
|
||
end)
|
||
end
|
||
end
|
||
function this.LeftBtnOnClick()
|
||
curDayIndex = curDayIndex - 1
|
||
this.ShowDayData(curDayIndex)
|
||
end
|
||
function this.RightBtnOnClick()
|
||
|
||
curDayIndex = curDayIndex + 1
|
||
this.ShowDayData(curDayIndex)
|
||
end
|
||
--界面关闭时调用(用于子类重写)
|
||
function JourneyWithWindPanel:OnClose()
|
||
if this.timer then
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function JourneyWithWindPanel:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
if this.timer then
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
itemList = {}
|
||
SubUIManager.Close(this.UpView)
|
||
end
|
||
|
||
return JourneyWithWindPanel |