miduo_client/Assets/ManagedResources/~Lua/Modules/NiuQiChongTian/NiuQiChongTianPanel.lua

324 lines
13 KiB
Lua
Raw Normal View History

2021-05-22 15:10:06 +08:00
local NiuQiChongTianPanel = {}
2021-03-22 20:08:18 +08:00
local artConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local sortingOrder = 0
2021-03-19 15:16:49 +08:00
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = NiuQiChongTianPanel })
return b
end
2021-03-19 15:16:49 +08:00
local TabBox = require("Modules/Common/TabBox")
2023-12-07 01:11:27 +08:00
local _TabData={ [1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12251] , nameNew = "英雄招募" ,rpType = RedPointType.NiuQiChongTian_1},
2023-09-01 19:35:49 +08:00
[2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12252] , nameNew = "妖晶消耗" ,rpType = RedPointType.NiuQiChongTian_2},
2021-10-15 17:39:04 +08:00
[3] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12253] , nameNew = "极速探索" ,rpType = RedPointType.NiuQiChongTian_3},}
2021-03-19 15:16:49 +08:00
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1)}
2021-03-24 13:43:56 +08:00
local BtnState ={
2023-11-15 17:19:43 +08:00
[0] = {ImgName = "Btn_hz_cheng_01",Text = Language[10556]},
[1] = {ImgName = "Btn_hz_cheng_01",Text = Language[11948]},
[2] = {ImgName = "Btn_hz_lan_01",Text = Language[10101]},
2021-03-24 13:43:56 +08:00
}
2021-03-19 15:16:49 +08:00
--初始化组件(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:InitComponent()
self.progressData = {}
self.rewardData = {}
self.curScore = 0
self.itemsGrid = {}--item重复利用
self.curPage = 1
self.curIndex = 1
self.redPointList = {}
self.spLoader = SpriteLoader.New()
2021-03-19 15:16:49 +08:00
self.backBtn = Util.GetGameObject(self.gameObject,"backBtn")
self.tabBox = Util.GetGameObject(self.gameObject, "TabBox")
--进度条
self.progress = Util.GetGameObject(self.gameObject, "mid/progress/value"):GetComponent("Image")--fillAmount
self.reward = Util.GetGameObject(self.gameObject, "mid/reward")
2021-05-24 19:50:21 +08:00
self.time = Util.GetGameObject(self.gameObject, "tiao/Text"):GetComponent("Text")
self.NiuQiValue = Util.GetGameObject(self.gameObject, "mid/progress/niu/Image/Text"):GetComponent("Text")
2021-03-19 15:16:49 +08:00
--任务列表
self.itemPre = Util.GetGameObject(self.gameObject, "rewardPre")
self.scrollItem = Util.GetGameObject(self.gameObject, "mid/rewardArena")
local rootHight = self.scrollItem.transform.rect.height
local width = self.scrollItem.transform.rect.width
2021-03-22 20:08:18 +08:00
self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.scrollItem.transform,self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0,0))
2021-03-19 15:16:49 +08:00
self.ScrollView.moveTween.MomentumAmount = 1
self.ScrollView.moveTween.Strength = 2
2021-10-15 16:49:00 +08:00
self.ScrollView.elastic = false
self.effect5 = Util.GetGameObject(self.reward, "icon (5)/UI_Effect_jinkuang_Yuan")
Util.SetParticleSortLayer(self.effect5, 1)
sortingOrder = 0
2021-03-19 15:16:49 +08:00
end
--绑定事件(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:BindEvent()
2021-03-19 15:16:49 +08:00
Util.AddClick(self.backBtn,function ()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:AddListener()
2021-03-19 15:16:49 +08:00
end
--移除事件监听(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:RemoveListener()
2021-03-19 15:16:49 +08:00
end
2021-06-02 15:47:26 +08:00
function NiuQiChongTianPanel:OnSortingOrderChange(_sortingOrder)
Util.SetParticleSortLayer(self.effect5,_sortingOrder + 1)
self.sortingOrder = _sortingOrder
2021-03-19 15:16:49 +08:00
end
--界面打开时调用(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
2021-10-15 16:49:00 +08:00
NiuQiChongTianManager.CheckIsNewActivity()
2021-05-22 15:10:06 +08:00
self.pageIndex = _index
self.parent = parent
2021-03-19 15:16:49 +08:00
end
-- 打开,重新打开时回调
2021-05-24 11:08:16 +08:00
function NiuQiChongTianPanel:OnShow(_sortingOrder)
2021-05-22 15:10:06 +08:00
self.gameObject:SetActive(true)
2021-05-24 11:08:16 +08:00
Util.AddParticleSortLayer(self.effect5, _sortingOrder - sortingOrder)
sortingOrder = _sortingOrder
2021-05-22 15:10:06 +08:00
self.activityId = self.actConfig.ActId
self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType
if self.actConfig.IfBack == 1 then
if self.actConfig.ActiveType > 0 then
local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType)
if id and id > 0 then
self.activityId = id
local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id)
if config then
self.actConfig = config
end
end
end
end
2021-03-22 20:08:18 +08:00
2021-05-24 11:08:16 +08:00
local NiuQiChongTianPanelTabAdapter = function(tab, index, status)
if status == "lock" then
tab:SetActive(false)
return
end
tab:SetActive(true)
2021-05-24 11:08:16 +08:00
local tabLab = Util.GetGameObject(tab, "Text")
local redPoint = Util.GetGameObject(tab, "Redpot")
if _TabData[index].rpType > 0 then
if self.redPointList[_TabData[index].rpType] then
ClearRedPointObject(_TabData[index].rpType, self.redPointList[_TabData[index].rpType])
end
BindRedPointObject(_TabData[index].rpType,redPoint)
self.redPointList[_TabData[index].rpType] = redPoint
end
2021-05-24 11:08:16 +08:00
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = self.spLoader:LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = _TabData[index].nameNew
2021-05-24 11:08:16 +08:00
tabLab:GetComponent("Text").color = _TabFontColor[status]
end
2021-03-19 15:16:49 +08:00
2021-05-24 11:08:16 +08:00
local NiuQiChongTianPanelSwitchView = function(index,bool)
self.curPage = index
DynamicActivityManager.NiuQiIndex = self.curPage
2021-05-24 11:08:16 +08:00
self.rewardData = NiuQiChongTianManager.GetNeedRewardData(self.curPage)
self:SetProgress()
self:SetReward(bool)
end
2021-03-22 20:08:18 +08:00
-- 没有数据则不显示页签
local IsTabLock = function(index)
-- if index == 1 then
-- return true
-- end
local rewardData = NiuQiChongTianManager.GetNeedRewardData(index)
if not rewardData or #rewardData <= 0 then
return true
end
end
2021-05-24 11:08:16 +08:00
self.TabCtrl = TabBox.New()
self.TabCtrl:SetTabAdapter(NiuQiChongTianPanelTabAdapter)
self.TabCtrl:SetTabIsLockCheck(IsTabLock)
2021-05-24 11:08:16 +08:00
self.TabCtrl:SetChangeTabCallBack(NiuQiChongTianPanelSwitchView)
self.curPage = DynamicActivityManager.NiuQiIndex or 1
self.TabCtrl:Init(self.tabBox, _TabData, self.curPage)
2021-05-24 19:50:21 +08:00
self:SetTime()
end
function NiuQiChongTianPanel:SwitchView(index,bool)
self.curPage = index
DynamicActivityManager.NiuQiIndex = self.curPage
2021-05-24 19:50:21 +08:00
self.rewardData = NiuQiChongTianManager.GetNeedRewardData(self.curPage)
self:SetProgress()
self:SetReward(bool)
end
function NiuQiChongTianPanel:SetTime()
if self.timer then
self.timer:Stop()
self.timer = nil
end
local info = ActivityGiftManager.GetActivityTypeInfo(self.actType)
local tempTime = info.endTime - GetTimeStamp()
if tempTime < 0 then
return
end
local updateTime = function()
self.time.text = "剩余时间:"..TimeToFelaxible(tempTime)
2021-05-31 11:58:45 +08:00
if tempTime <= 0 then
self.parent:ClosePanel()
end
2021-05-24 19:50:21 +08:00
end
2021-05-24 20:26:53 +08:00
updateTime()
2021-05-24 19:50:21 +08:00
self.timer = Timer.New(function()
tempTime = tempTime - 1
updateTime()
end,1,-1,false)
self.timer:Start()
2021-03-19 15:16:49 +08:00
end
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:SetProgress()
self.curScore = NiuQiChongTianManager.GetScore()
2021-05-24 19:50:21 +08:00
self.NiuQiValue.text = self.curScore
2021-05-22 15:10:06 +08:00
self.progressData = NiuQiChongTianManager.configData
self.progress.fillAmount = self.curScore/self.progressData[#self.progressData].value[2][1]
2021-03-22 20:08:18 +08:00
for i = 1, self.reward.transform.childCount do
local item = self.reward.transform:GetChild(i-1)
2022-12-29 17:15:16 +08:00
Util.GetGameObject(item, "num/Text"):GetComponent("Text").text = PrintWanNum2(self.progressData[i].reward[1][2])
2021-05-22 15:10:06 +08:00
Util.GetGameObject(item, "Text"):GetComponent("Text").text = self.progressData[i].value[2][1]
Util.GetGameObject(item, "icon"):GetComponent("Image").sprite = self.spLoader:LoadSprite(artConfig[itemConfig[self.progressData[i].reward[1][1]].ResourceID].Name)
Util.GetGameObject(item, "red"):SetActive(self.progressData[i].state == 1)
2021-03-22 20:08:18 +08:00
local btn = Util.GetGameObject(item, "icon")
Util.AddOnceClick(btn,function ()
2021-05-22 15:10:06 +08:00
if self.progressData[i].state == 1 then
2021-05-27 10:03:57 +08:00
NetManager.GetActivityRewardRequest(self.progressData[i].missionId,self.activityId,function (drop)
2021-03-22 20:08:18 +08:00
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function ()
2021-05-22 15:10:06 +08:00
self.progressData[i].state = 2
2021-05-27 10:03:57 +08:00
self:SetProgress()
2021-03-24 20:19:40 +08:00
CheckRedPointStatus(RedPointType.NiuQiChongTian_4)
2021-03-22 20:08:18 +08:00
end)
end)
2021-05-22 15:10:06 +08:00
elseif self.progressData[i].state == 0 then
if itemConfig[self.progressData[i].reward[1][1]].ItemType == ItemType.SelfBox then
UIManager.OpenPanel(UIName.RewardBoxPanel,nil,self.progressData[i].reward[1][1])
elseif itemConfig[self.progressData[i].reward[1][1]].ItemType == ItemType.Ride then
UIManager.OpenPanel(UIName.RewardRideShowPopup,self.progressData[i].reward[1][1])
else
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,self.progressData[i].reward[1][1],nil)
end
2021-03-24 20:19:40 +08:00
else
2021-04-09 12:26:35 +08:00
PopupTipPanel.ShowTip(Language[10421])
2021-03-22 20:08:18 +08:00
end
end)
end
2021-03-19 15:16:49 +08:00
end
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:SetReward(bool)
local anim = bool or false
2021-03-22 20:08:18 +08:00
local data = {}
2021-05-22 15:10:06 +08:00
self.ScrollView:SetData(self.rewardData, function (index, go)
self:SingleDataShow(go,index,self.rewardData[index])
end,false,anim)
2021-03-22 20:08:18 +08:00
end
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:SingleDataShow(go, index,data)
2021-03-22 20:08:18 +08:00
local title = Util.GetGameObject(go, "title/titleText"):GetComponent("Text")
2021-03-24 13:43:56 +08:00
local btn = Util.GetGameObject(go, "btn"):GetComponent("Button")
local btnImg = Util.GetGameObject(go, "btn"):GetComponent("Image")
2021-03-22 20:08:18 +08:00
local btnText = Util.GetGameObject(go, "btn/Text"):GetComponent("Text")
local redPoint = Util.GetGameObject(go, "btn/redPoint")
local rewardList = Util.GetGameObject(go, "rewardList")
local grid = Util.GetGameObject(go, "rewardList")
local shadow = Util.GetGameObject(go, "shadow")
2021-10-16 16:37:44 +08:00
local progress = Util.GetGameObject(go, "progress"):GetComponent("Text")
2021-03-22 20:08:18 +08:00
local shows = data.Reward
2021-04-07 16:59:47 +08:00
title.text = GetLanguageStrById(data.Text)
2021-03-22 20:08:18 +08:00
redPoint:SetActive(data.state == 1)
2021-03-24 13:43:56 +08:00
btn.interactable = data.state ~= 2
2021-05-22 15:10:06 +08:00
btnImg.sprite = self.spLoader:LoadSprite(BtnState[data.state].ImgName)
2021-03-24 13:43:56 +08:00
btnText.text = BtnState[data.state].Text
2021-10-16 17:59:38 +08:00
if data.state == 0 then
progress.gameObject:SetActive(true)
progress.text = string.format( "%s/%s",data.progress,data.value[2][1])
else
progress.gameObject:SetActive(false)
end
2021-03-22 20:08:18 +08:00
--滚动条复用重设itemview
2021-05-22 15:10:06 +08:00
if self.itemsGrid[go] then
2021-03-22 20:08:18 +08:00
for i = 1, 4 do
2021-05-22 15:10:06 +08:00
self.itemsGrid[go][i].gameObject:SetActive(false)
2021-03-22 20:08:18 +08:00
end
for i = 1, #shows do
2021-05-22 15:10:06 +08:00
if self.itemsGrid[go][i] then
self.itemsGrid[go][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
self.itemsGrid[go][i].gameObject:SetActive(true)
2021-03-22 20:08:18 +08:00
end
end
else
2021-05-22 15:10:06 +08:00
self.itemsGrid[go]={}
2021-03-22 20:08:18 +08:00
for i = 1, 4 do
2021-05-22 15:10:06 +08:00
self.itemsGrid[go][i] = SubUIManager.Open(SubUIConfig.ItemView, grid.transform)
self.itemsGrid[go][i].gameObject:SetActive(false)
local obj = newObjToParent(shadow,self.itemsGrid[go][i].transform)
2021-03-22 20:08:18 +08:00
obj.transform:SetAsFirstSibling()
obj.transform:DOAnchorPos(Vector3(0,-3,0),0)
obj:GetComponent("RectTransform").transform.localScale = Vector3.one*1.1
obj.gameObject:SetActive(true)
2021-04-01 20:26:43 +08:00
obj.transform:SetSiblingIndex(0)
2021-03-22 20:08:18 +08:00
end
for i = 1, #shows do
2021-05-22 15:10:06 +08:00
self.itemsGrid[go][i]:OnOpen(false, {shows[i][1],shows[i][2]}, 0.9,false,false,false,sortingOrder)
self.itemsGrid[go][i].gameObject:SetActive(true)
2021-03-22 20:08:18 +08:00
end
end
2021-03-24 13:43:56 +08:00
Util.AddOnceClick(btn.gameObject,function ()
if data.state == 0 then
2021-10-15 17:52:05 +08:00
JumpManager.GoJump(data.jumpId)
2021-03-24 13:43:56 +08:00
elseif data.state == 1 then
2021-05-24 11:08:16 +08:00
NetManager.TakeMissionRewardRequest(TaskTypeDef.NiuQiChongTian,data.id,function (msg)
2021-03-24 13:43:56 +08:00
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function ()
2021-05-24 11:08:16 +08:00
CheckRedPointStatus(RedPointType.NiuQiChongTian + self.curPage)
CheckRedPointStatus(RedPointType.NiuQiChongTian_4)
2021-05-24 19:50:21 +08:00
self:SwitchView(self.curPage,true)
2021-03-24 13:43:56 +08:00
end)
end)
end
end)
2021-03-19 15:16:49 +08:00
end
--界面关闭时调用(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:OnClose()
self.gameObject:SetActive(false)
for key, value in pairs(self.redPointList) do
ClearRedPointObject(key, value)
2021-03-25 11:00:58 +08:00
end
2021-05-22 15:10:06 +08:00
self.redPointList = {}
2021-05-24 19:50:21 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
2021-03-19 15:16:49 +08:00
end
--界面销毁时调用(用于子类重写)
2021-05-22 15:10:06 +08:00
function NiuQiChongTianPanel:OnDestroy()
2021-05-24 11:08:16 +08:00
for k,v in pairs(self.itemsGrid) do
for i = 1,#v do
SubUIManager.Close(v[i])
end
end
SubUIManager.Close(self.ScrollView)
self.spLoader:Destroy(self.ScrollView)
2021-03-22 20:08:18 +08:00
sortingOrder = 0
2021-03-19 15:16:49 +08:00
end
2021-03-22 20:08:18 +08:00
return NiuQiChongTianPanel