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

345 lines
16 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 curDay
local activityData
local isGetState
-- this.UpView = nil
--初始化组件(用于子类重写)
function JourneyWithWindPanel:InitComponent()
this.spLoader = SpriteLoader.New()
--子模块脚本
this.BtnBack = Util.GetGameObject(self.gameObject, "btnBack")
this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
this.helpPosition = this.helpBtn:GetComponent("RectTransform").localPosition
this.helpBtn:SetActive(false)
curDayAllTaskGos = {}
for i = 1, (5+2) do
curDayAllTaskGos[i] = Util.GetGameObject(self.gameObject, "taskList/MissionPre (".. i ..")")
end
this.curDayTip = Util.GetGameObject(self.transform, "curDayTip"):GetComponent("Text")
this.selected = Util.GetGameObject(self.transform, "selected")
this.dayPre = Util.GetGameObject(self.gameObject, "dayPre")
local v2 = Util.GetGameObject(self.gameObject, "rect"):GetComponent("RectTransform").rect
this.titleScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.gameObject, "rect").transform,
this.dayPre, nil, Vector2.New(-v2.x*2, -v2.y*2), 2, 1, Vector2.New(0,0))
this.titleScrollView.moveTween.MomentumAmount = 1
this.titleScrollView.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)
end
--添加事件监听(用于子类重写)
function JourneyWithWindPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityOpenOrClose, this.AutoClose)
end
--移除事件监听(用于子类重写)
function JourneyWithWindPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityOpenOrClose, this.AutoClose)
end
--界面打开时调用(用于子类重写)
function JourneyWithWindPanel:OnOpen(_curDayIndex)
allBtnsConFigData = ActivityGiftManager.GetJourneyWithWindAllDayConFigData()
local curServerDay = math.ceil((CalculateSecondsNowTo_N_OClock(0) + GetTimeStamp() - PlayerManager.userCreateTime)/86400)
for i = 1, #allBtnsConFigData do
if curServerDay >= allBtnsConFigData[i].Values[1][2] then
curDay = allBtnsConFigData[i].Values[1][2]
end
end
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.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()
LogYellow("allBtnsConFigData "..#allBtnsConFigData)
LogYellow("curDayIndex "..curDayIndex)
this.titleScrollView:SetData(allBtnsConFigData, function (index, go)
this.SingleDayBtnDataShow(go, allBtnsConFigData[index],index)
end,true,true)
this.titleScrollView:SetIndex(curDayIndex)
end
function this.SingleDayBtnDataShow(_go,data,index)
local go = Util.GetGameObject(_go, "dayPre")
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.ResourceID))
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)
if index%2 == 0 then
go.transform.anchoredPosition = Vector3.New(3.05,23,0)
else
go.transform.anchoredPosition = Vector3.New(3.05,176.09,0)
end
Util.AddOnceClick(go, function()
this.ShowDayData(data.Values[1][2])
this.selected.transform:SetParent(Util.GetGameObject(go, "selectedParent").transform)
this.selected.transform.anchoredPosition = Vector3.New(4.3,9.4,0)
end)
end
--当前天的具体任务显示
function this.ShowDayData(_curDayIndex)
curDayIndex = _curDayIndex
ActivityGiftManager.SetJourneyWithWindPlayerPrefs(curDayIndex,1)
this.curDayTip.text = string.format(Language[10528],NumToChinese[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-2 do
if curDayAllTaskConFigData[i] then
curDayAllTaskGos[i]:SetActive(true)
Util.GetGameObject(curDayAllTaskGos[i], "pre1"):SetActive(true)
Util.GetGameObject(curDayAllTaskGos[i], "pre2"):SetActive(false)
Util.GetGameObject(curDayAllTaskGos[i], "pre1/name"):GetComponent("Text").text = "目标"
Util.GetGameObject(curDayAllTaskGos[i], "pre1/condition"):GetComponent("Text").text = curDayAllTaskConFigData[i].Show
local btnJump = Util.GetGameObject(curDayAllTaskGos[i], "pre1/btnJump")
local btnFinish = Util.GetGameObject(curDayAllTaskGos[i], "pre1/btnFinish")
btnFinish:SetActive(false)
btnJump:SetActive(false)
Util.GetGameObject(btnJump, "get"):GetComponent("Text").text = "前往"
local buyInfo = Util.GetGameObject(curDayAllTaskGos[i], "buyInfo"):GetComponent("Text")
Util.GetGameObject(curDayAllTaskGos[i], "headImage/name"):GetComponent("Text").text = curDayAllTaskConFigData[i].HeadName
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 = 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
btnFinish:SetActive(true)
elseif state == 0 then
btnJump:SetActive(true)
if isOpen then
btnJump:GetComponent("Button").enabled = true
if curDayAllTaskConFigData[i].TaskType ~= 14 then
buyInfo.text = string.format("%s/%s",progress,curDayAllTaskConFigData[i].TaskValue[2][1])
end
Util.AddOnceClick(btnJump, function()
JumpManager.GoJump(curDayAllTaskConFigData[i].Jump[1])
end)
else
Util.SetGray(btnJump,true)
btnJump:GetComponent("Button").enabled = false
if curDayAllTaskConFigData[i].TaskType ~= 14 then
buyInfo.text = string.format(Language[11903],ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,curDayAllTaskConFigData[i].SystemId).OpenRules[2])
end
end
end
end
else
curDayAllTaskGos[i]:SetActive(false)
end
end
this.ShowDayDataActivityReward()--位置1 不变
this.ShowDayDataGiftBag()--位置2 不变
CheckRedPointStatus(RedPointType.JourneyWithWind)
end
--奖励任务
function this.ShowDayDataActivityReward()
local go = curDayAllTaskGos[6]
if go and curBtnConFigData and activityData then
Util.GetGameObject(go, "pre1"):SetActive(false)
Util.GetGameObject(go, "pre2"):SetActive(true)
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
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, "pre2/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
isGetState = ActivityGiftManager.SingleJourneyWithWindRewardNoGet(curRewardTaskData)
local imageStr = isGetState and "s_slbz_1anniuongse" or "s_slbz_1anniuhuise"
local getBtn = Util.GetGameObject(go, "pre2/getBtn")
getBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite(imageStr)
local btnText = Util.GetGameObject(getBtn, "get"):GetComponent("Text")
Util.GetGameObject(go, "headImage/name"):GetComponent("Text").text = "奖励"
Util.GetGameObject(getBtn, "redPoint"):SetActive(isGetState)
btnText.text = "领取"
getBtn:GetComponent("Button").enabled = true
Util.AddOnceClick(getBtn, function()
if isGetState then
NetManager.GetActivityRewardRequest(curRewardTaskData.missionId, activityData.activityId, function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
btnText.text = "已领取"
getBtn:GetComponent("Button").enabled = false
CheckRedPointStatus(RedPointType.JourneyWithWind)
end)
end)
else
if curRewardTaskData.state == 0 then
PopupTipPanel.ShowTip("完成当日所有目标才可领取!")
elseif curRewardTaskData.state == 1 then
btnText.text = "已领取"
getBtn:GetComponent("Button").enabled = false
end
end
end)
end
end
end
-- 礼包
function this.ShowDayDataGiftBag()
local go = curDayAllTaskGos[7]
local rechargecommodityData = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,curBtnConFigData.Values[2][1])
if go and rechargecommodityData then
Util.GetGameObject(go, "pre1"):SetActive(false)
Util.GetGameObject(go, "pre2"):SetActive(true)
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, "pre2/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
local rechargeData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.DirectPurchaseGift, rechargecommodityData.Id)
local freetimes = rechargeData.dynamicBuyTimes - rechargeData.buyTimes
local imageStr = "s_slbz_1anniuhuise"--freetimes > 0 and "s_slbz_1anniuongse" or "s_slbz_1anniuhuise"
local getBtn = Util.GetGameObject(go, "pre2/getBtn")
getBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite(imageStr)
local btnText = Util.GetGameObject(getBtn, "get"):GetComponent("Text")
Util.GetGameObject(go, "headImage/name"):GetComponent("Text").text = "额外礼包"
local btnFinish = Util.GetGameObject(go, "pre2/btnFinish")
btnFinish:SetActive(freetimes <= 0)
getBtn:SetActive(freetimes > 0)
btnText.text = rechargecommodityData.Price
Util.AddOnceClick(getBtn, function()
if freetimes > 0 and isGetState then
PayManager.Pay(rechargecommodityData.Id, function(id)
FirstRechargeManager.RefreshAccumRechargeValue(rechargecommodityData.Id)
btnFinish:SetActive(true)
end)
else
PopupTipPanel.ShowTip("完成当日所有目标才可购买!")
end
end)
end
end
--活动到期自动关闭
function this.AutoClose()
if this.timer then
this.timer:Stop()
this.timer = nil
end
self:ClosePanel()
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