miduo_client/Assets/ManagedResources/~Lua/Modules/TailsManSoul/TailsManSouPanel.lua

220 lines
9.5 KiB
Lua

require("Base/BasePanel")
TailsManSouPanel = Inherit(BasePanel)
local this = TailsManSouPanel
local redPointList = {}
-- Tab管理器
local TabBox = require("Modules/Common/TabBox")
local tabs = {
[1] = { --金色
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "金色",
rpType = RedPointType.tailsmanSoul_gold,quality = 5
},
[2] = { --红色
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "红色",
rpType = RedPointType.tailsmanSoul_red,quality = 6
},
-- [3] = { --白金
-- default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "白金",
-- rpType = RedPointType.tailsmanSoul_whiteGold,bg = "t_tianshumijuan_lingshouditu",quality = 7
-- },
}
local curData = {}
local curPage = 1
--初始化组件(用于子类重写)
function TailsManSouPanel:InitComponent()
this.spLoader = SpriteLoader.New()
self.itemPreList = {}
self.bg = Util.GetGameObject(self.gameObject,"bg"):GetComponent("Image")
self.tabbox = Util.GetGameObject(self.gameObject,"bg/tabbox")
self.btnBack = Util.GetGameObject(self.gameObject,"bg/btnBack")
self.fetterItem = Util.GetGameObject(self.gameObject,"fetterItem")
local grid = Util.GetGameObject(self.gameObject,"bg/fetterGrid")
local v21 = grid.transform.rect
self.scroll = SubUIManager.Open(SubUIConfig.ScrollCycleView,grid.transform,self.fetterItem,nil,Vector2.New(v21.width, v21.height), 1, 1, Vector2.New(0,25))
self.scroll.moveTween.MomentumAmount = 1
self.scroll.moveTween.Strength = 2
self.empty = Util.GetGameObject(self.gameObject,"bg/NoneImage")
self.addBtn = Util.GetGameObject(self.gameObject,"bg/add")
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
end
--绑定事件(用于子类重写)
function TailsManSouPanel:BindEvent()
Util.AddClick(self.btnBack, function()
curPage = 1
self:ClosePanel()
end)
Util.AddClick(self.addBtn, function()
UIManager.OpenPanel(UIName.RoleProInfoPopup,TailsManSoulManager.GetTailsmanTotalPro(),nil,false,nil)
end)
self.tabBox = TabBox.New()
self.tabBox:SetTabAdapter(self.SetTabAdapter)
self.tabBox:SetTabIsLockCheck(self.TabIsLockCheck)
self.tabBox:SetChangeTabCallBack(self.SetChangeTabCallBack)
end
function TailsManSouPanel.SetTabAdapter(newTab, index, status)
local img = Util.GetGameObject(newTab.gameObject,"img"):GetComponent("Image")
local redpot = Util.GetGameObject(newTab.gameObject,"redpot")
local tabName = Util.GetGameObject(newTab.gameObject,"Text"):GetComponent("Text")
local lock = Util.GetGameObject(newTab.gameObject,"lock")
if tabs[index].rpType > 0 then
if redPointList[tabs[index].rpType] then
ClearRedPointObject(tabs[index].rpType,redPointList[tabs[index].rpType])
end
BindRedPointObject(tabs[index].rpType,redpot)
redPointList[tabs[index].rpType] = redpot
end
img.sprite = this.spLoader:LoadSprite(tabs[index][status])
tabName.text = tabs[index].tabName
if status == "lock" then
lock.gameObject:SetActive(true)
else
lock.gameObject:SetActive(false)
end
newTab.gameObject:SetActive(true)
end
function TailsManSouPanel.TabIsLockCheck(index)
return false
end
function TailsManSouPanel.SetChangeTabCallBack(index)
if curPage == index then
return
end
curPage = index
this:OnShow(self)
end
--添加事件监听(用于子类重写)
function TailsManSouPanel:AddListener()
end
--移除事件监听(用于子类重写)
function TailsManSouPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function TailsManSouPanel:OnOpen(...)
local args = {...}
curPage = args[1] or 1
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function TailsManSouPanel:OnShow()
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
self.tabBox:Init(self.tabbox.gameObject, tabs, curPage)
curData = TailsManSoulManager.GetTailsmanSoulDatas(tabs[curPage].quality)
self:RefreshData()
end
function TailsManSouPanel:RefreshData()
self:SortData()
self.scroll:ForeachItemGO(function(index,go)
go.gameObject:SetActive(false)
end)
if not curData or #curData < 1 then
self.empty.gameObject:SetActive(true)
self.scroll.gameObject:SetActive(false)
else
self.empty.gameObject:SetActive(false)
self.scroll.gameObject:SetActive(true)
self.scroll:SetData(curData,function(index,go)
self:SetSingleData(go,curData[index],index)
end)
self.scroll:SetIndex(1)
end
end
function TailsManSouPanel:SortData()
end
function TailsManSouPanel:SetSingleData(go,data,index)
if not self.itemPreList[go] then
self.itemPreList[go] = {}
self.itemPreList[go].obj = Util.GetGameObject(go,"go")
self.itemPreList[go].bg = Util.GetGameObject(self.itemPreList[go].obj,"bg"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin
self.itemPreList[go].tip = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/tip"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin
self.itemPreList[go].mask1 = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/mask1"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin
self.itemPreList[go].mask2 = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/mask2"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin
self.itemPreList[go].nameText = Util.GetGameObject(self.itemPreList[go].obj,"bg/nameDi"):GetComponent("Image") --名字图片 根据表读取
self.itemPreList[go].slider = Util.GetGameObject(self.itemPreList[go].obj,"bg/slider"):GetComponent("Slider")
self.itemPreList[go].progress = Util.GetGameObject(self.itemPreList[go].slider.transform,"progress"):GetComponent("Text")
self.itemPreList[go].red = Util.GetGameObject(self.itemPreList[go].bg.transform,"red")
self.itemPreList[go].iconList = {}
for i = 1,4 do
self.itemPreList[go].iconList[i] = {}
self.itemPreList[go].iconList[i].go = Util.GetGameObject(self.itemPreList[go].bg.transform,"compGrid/iconDi"..i)
self.itemPreList[go].iconList[i].icon = Util.GetGameObject(self.itemPreList[go].iconList[i].go.transform,"icon"):GetComponent("Image")
end
end
self.itemPreList[go].data = data
if not data then
go.gameObject:SetActive(false)
return
end
go.gameObject:SetActive(true)
self.itemPreList[go].bg.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].bg)
self.itemPreList[go].tip.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].tip)
self.itemPreList[go].mask1.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].mask)
self.itemPreList[go].mask2.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].mask)
self.itemPreList[go].nameText.sprite = this.spLoader:LoadSprite(GetResourcePath(self.itemPreList[go].data.icon))
self.itemPreList[go].slider.value = self.itemPreList[go].data.lv/self.itemPreList[go].data.maxLv
self.itemPreList[go].progress.text = self.itemPreList[go].data.lv.."/"..self.itemPreList[go].data.maxLv
self.itemPreList[go].red.gameObject:SetActive(self:CheckRedPoint(self.itemPreList[go].data.trumpList))
Util.SetParticleSortLayer(go,self.sortingOrder + 1)
for i = 1,math.max(#data.trumpList,#self.itemPreList[go].iconList) do
if not data.trumpList[i] then
self.itemPreList[go].iconList[i].go.gameObject:SetActive(false)
else
self.itemPreList[go].iconList[i].go.gameObject:SetActive(true)
self.itemPreList[go].iconList[i].icon.sprite = this.spLoader:LoadSprite(GetResourcePath(data.trumpList[i].config.Icon))
end
end
Util.AddOnceClick(go,function()
UIManager.OpenPanel(UIName.TailsmanSoulMainPanel,self.itemPreList[go].data.id)
end)
end
function TailsManSouPanel:CheckRedPoint(data)
for k,v in pairs(data) do
local costId,num = TailsManSoulManager.GetTailsmanCost(v.id,v.lv)
if num and num > 0 then
if BagManager.GetItemCountById(costId) >= num then
return true
end
end
end
return false
end
--界面层级发生改变(用于子类重写)
function TailsManSouPanel:OnSortingOrderChange()
for k,v in pairs(self.itemPreList) do
Util.SetParticleSortLayer(v,self.sortingOrder + 1)
end
end
--界面关闭时调用(用于子类重写)
function TailsManSouPanel:OnClose()
end
--界面销毁时调用(用于子类重写)
function TailsManSouPanel:OnDestroy()
this.spLoader:Destroy()
for k,v in pairs(redPointList) do
ClearRedPointObject(k,v)
end
SubUIManager.Close(self.scroll)
self.itemPreList = {}
redPointList = {}
SubUIManager.Close(self.UpView)
curPage = 1
end
return TailsManSouPanel