287 lines
12 KiB
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 |