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

287 lines
12 KiB
Lua

local NiuQiChongTianPanel = {}
local artConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local sortingOrder = 0
function NiuQiChongTianPanel:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = NiuQiChongTianPanel })
return b
end
local TabBox = require("Modules/Common/TabBox")
local _TabData={ [1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12251] ,rpType = RedPointType.NiuQiChongTian_1},
[2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12252] ,rpType = RedPointType.NiuQiChongTian_2},
[3] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12253] ,rpType = RedPointType.NiuQiChongTian_3},}
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1)}
local BtnState ={
[0] = {ImgName = "s_slbz_1anniuhuangse",Text = Language[10556]},
[1] = {ImgName = "s_slbz_1anniuongse",Text = Language[11948]},
[2] = {ImgName = "s_slbz_1anniuhuise",Text = Language[10101]},
}
--初始化组件(用于子类重写)
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()
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")
self.time = Util.GetGameObject(self.gameObject, "tiao/Text"):GetComponent("Text")
self.NiuQiValue = Util.GetGameObject(self.gameObject, "mid/progress/niu/Image/Text"):GetComponent("Text")
--任务列表
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
self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.scrollItem.transform,self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0,0))
self.ScrollView.moveTween.MomentumAmount = 1
self.ScrollView.moveTween.Strength = 2
self.effect5 = Util.GetGameObject(self.reward, "icon (5)/UI_Effect_jinkuang_Yuan")
Util.SetParticleSortLayer(self.effect5, 1)
sortingOrder = 0
end
--绑定事件(用于子类重写)
function NiuQiChongTianPanel:BindEvent()
Util.AddClick(self.backBtn,function ()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function NiuQiChongTianPanel:AddListener()
end
--移除事件监听(用于子类重写)
function NiuQiChongTianPanel:RemoveListener()
end
function NiuQiChongTianPanel:OnSortingOrderChange()
Util.AddParticleSortLayer(self.effect5, self.sortingOrder - sortingOrder)
sortingOrder = self.sortingOrder
end
--界面打开时调用(用于子类重写)
function NiuQiChongTianPanel:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
-- 打开,重新打开时回调
function NiuQiChongTianPanel:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
Util.AddParticleSortLayer(self.effect5, _sortingOrder - sortingOrder)
sortingOrder = _sortingOrder
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
local NiuQiChongTianPanelTabAdapter = function(tab, index, status)
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
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = self.spLoader:LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = _TabData[index].name
tabLab:GetComponent("Text").color = _TabFontColor[status]
end
local NiuQiChongTianPanelSwitchView = function(index,bool)
self.curPage = index
self.rewardData = NiuQiChongTianManager.GetNeedRewardData(self.curPage)
self:SetProgress()
self:SetReward(bool)
end
self.TabCtrl = TabBox.New()
self.TabCtrl:SetTabAdapter(NiuQiChongTianPanelTabAdapter)
self.TabCtrl:SetChangeTabCallBack(NiuQiChongTianPanelSwitchView)
self.TabCtrl:Init(self.tabBox, _TabData, self.curIndex)
self:SetTime()
end
function NiuQiChongTianPanel:SwitchView(index,bool)
self.curPage = index
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)
end
updateTime()
self.timer = Timer.New(function()
tempTime = tempTime - 1
updateTime()
end,1,-1,false)
self.timer:Start()
end
function NiuQiChongTianPanel:SetProgress()
self.curScore = NiuQiChongTianManager.GetScore()
self.NiuQiValue.text = self.curScore
self.progressData = NiuQiChongTianManager.configData
self.progress.fillAmount = self.curScore/self.progressData[#self.progressData].value[2][1]
for i = 1, self.reward.transform.childCount do
local item = self.reward.transform:GetChild(i-1)
Util.GetGameObject(item, "num/Text"):GetComponent("Text").text = self.progressData[i].reward[1][2]
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)
local btn = Util.GetGameObject(item, "icon")
Util.AddOnceClick(btn,function ()
if self.progressData[i].state == 1 then
NetManager.GetActivityRewardRequest(self.progressData[i].missionId,self.progressData[i].self.activityId,function (drop)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function ()
self.progressData[i].state = 2
NiuQiChongTianPanel:SetProgress()
CheckRedPointStatus(RedPointType.NiuQiChongTian_4)
end)
end)
elseif self.progressData[i].state == 0 then
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,self.progressData[i].reward[1][1],nil)
else
PopupTipPanel.ShowTip(Language[10421])
end
end)
end
end
function NiuQiChongTianPanel:SetReward(bool)
local anim = bool or false
local data = {}
self.ScrollView:SetData(self.rewardData, function (index, go)
self:SingleDataShow(go,index,self.rewardData[index])
end,false,anim)
end
function NiuQiChongTianPanel:SingleDataShow(go, index,data)
local title = Util.GetGameObject(go, "title/titleText"):GetComponent("Text")
local btn = Util.GetGameObject(go, "btn"):GetComponent("Button")
local btnImg = Util.GetGameObject(go, "btn"):GetComponent("Image")
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")
local shows = data.Reward
title.text = GetLanguageStrById(data.Text)
redPoint:SetActive(data.state == 1)
btn.interactable = data.state ~= 2
btnImg.sprite = self.spLoader:LoadSprite(BtnState[data.state].ImgName)
btnText.text = BtnState[data.state].Text
--滚动条复用重设itemview
if self.itemsGrid[go] then
for i = 1, 4 do
self.itemsGrid[go][i].gameObject:SetActive(false)
end
for i = 1, #shows do
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)
end
end
else
self.itemsGrid[go]={}
for i = 1, 4 do
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)
obj.transform:SetAsFirstSibling()
obj.transform:DOAnchorPos(Vector3(0,-3,0),0)
obj:GetComponent("RectTransform").transform.localScale = Vector3.one*1.1
obj.gameObject:SetActive(true)
obj.transform:SetSiblingIndex(0)
end
for i = 1, #shows do
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)
end
end
Util.AddOnceClick(btn.gameObject,function ()
if data.state == 0 then
UIManager.OpenPanel(UIName.RecruitPanel)
elseif data.state == 1 then
NetManager.TakeMissionRewardRequest(TaskTypeDef.NiuQiChongTian,data.id,function (msg)
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function ()
CheckRedPointStatus(RedPointType.NiuQiChongTian + self.curPage)
CheckRedPointStatus(RedPointType.NiuQiChongTian_4)
self:SwitchView(self.curPage,true)
end)
end)
end
end)
end
--界面关闭时调用(用于子类重写)
function NiuQiChongTianPanel:OnClose()
self.gameObject:SetActive(false)
for key, value in pairs(self.redPointList) do
ClearRedPointObject(key, value)
end
self.redPointList = {}
if self.timer then
self.timer:Stop()
self.timer = nil
end
end
--界面销毁时调用(用于子类重写)
function NiuQiChongTianPanel:OnDestroy()
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)
sortingOrder = 0
end
return NiuQiChongTianPanel