miduo_client/Assets/ManagedResources/~Lua/Modules/JourneyWithWind/JourneyWithWindPanel.lua

330 lines
15 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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