require("Base/BasePanel")
RoleGodSoulLayout = Inherit(BasePanel)
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
function RoleGodSoulLayout:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = RoleGodSoulLayout })
return b
end
--初始化组件(用于子类重写)
function RoleGodSoulLayout:InitComponent()
self.spLoader = SpriteLoader.New()
self.help = Util.GetGameObject(self.gameObject,"bgdi/help")
self.helpPosition = self.help:GetComponent("RectTransform").localPosition
self.godPre = Util.GetGameObject(self.gameObject,"bgdi/godPre")
self.costPre = Util.GetGameObject(self.gameObject,"bgdi/costPre")
self.singlePre = Util.GetGameObject(self.gameObject,"bgdi/singlePre")
self.grid = Util.GetGameObject(self.gameObject,"bgdi/scroll/grid")
self.gridPos = self.grid:GetComponent("RectTransform").anchoredPosition
self.gridList = {}
end
--绑定事件(用于子类重写)
function RoleGodSoulLayout:BindEvent()
Util.AddClick(self.help, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.shenhun,self.helpPosition.x,self.helpPosition.y - 500)
end)
end
--添加事件监听(用于子类重写)
function RoleGodSoulLayout:AddListener()
end
--移除事件监听(用于子类重写)
function RoleGodSoulLayout:RemoveListener()
end
function RoleGodSoulLayout:OnShow()
self.gameObject:SetActive(true)
end
function RoleGodSoulLayout:SetData(_sortinglayer,_parent,_curHerodata,_isUpZhen,_heroDatas)
self.sortingOrder = _sortinglayer
self.curHeroData = _curHerodata
self.parent = _parent
self.isUpZhen = _isUpZhen
self.herodatas = _heroDatas
self:UpdateGodList()
local pos = Vector3.New(self.gridPos.x,self.gridPos.y,self.gridPos.z)
for i = 1,self.lv do
pos.y = pos.y + GetPreferredHeight(self.gridList[i].go.transform)
end
local pos1 = self.grid:GetComponent("RectTransform").anchoredPosition
if pos1.y ~= pos.y then
self.grid:GetComponent("RectTransform").anchoredPosition = pos
end
end
function RoleGodSoulLayout:UpdateGodList()
if self.curHeroData.dynamicId then
self.lv = GodSoulManager.GetGodSoulLv(self.curHeroData.dynamicId)
self.addShow = true
self.heroConfig = self.curHeroData.heroConfig
else
self.lv = 0
self.addShow = false
self.heroConfig = self.curHeroData
end
self.godDatas = GodSoulManager.GetGodSoulDataByLv(self.heroConfig.Id,0)
if not self.gridList then
self.gridList = {}
end
for i = 1,math.max(#self.gridList,#self.godDatas) do
if not self.godDatas[i] then
self.gridList[i].go.gameObject:SetActive(false)
else
if not self.gridList[i] then
self.gridList[i] = {}
self.gridList[i].go = newObjToParent(self.singlePre,self.grid)
self.gridList[i].tip = Util.GetGameObject(self.gridList[i].go,"middle/Text"):GetComponent("Text")
self.gridList[i].godGrid = Util.GetGameObject(self.gridList[i].go,"middle/godGrid")
self.gridList[i].godLvList = {}
self.gridList[i].costGrid = Util.GetGameObject(self.gridList[i].go,"middle/costGrid")
self.gridList[i].costList = {}
self.gridList[i].add = Util.GetGameObject(self.gridList[i].go,"add")
self.gridList[i].red = Util.GetGameObject(self.gridList[i].add,"red")
self.gridList[i].red.gameObject:SetActive(false)
self.gridList[i].des = Util.GetGameObject(self.gridList[i].go,"bottom/des"):GetComponent("Text")
end
self.gridList[i].go.gameObject:SetActive(true)
self:UpdataSingleGod(i)
end
end
end
function RoleGodSoulLayout:UpdataSingleGod(index)
for i = 1,math.max(#self.gridList[index].godLvList,index) do
if index < i then
self.gridList[index].godLvList[i].gameObject:SetActive(false)
else
if not self.gridList[index].godLvList[i] then
self.gridList[index].godLvList[i] = newObjToParent(self.godPre,self.gridList[index].godGrid)
end
self.gridList[index].godLvList[i].gameObject:SetActive(true)
end
end
--绿色
for i = 1,math.max(#self.gridList[index].costList,#self.godDatas[index]) do
if not self.godDatas[index][i] then
self.gridList[index].costList[i].go.gameObject:SetActive(false)
else
if not self.gridList[index].costList[i] then
self.gridList[index].costList[i] = {}
self.gridList[index].costList[i].go = newObjToParent(self.costPre,self.gridList[index].costGrid)
self.gridList[index].costList[i].frame = Util.GetGameObject(self.gridList[index].costList[i].go,"frame"):GetComponent("Image")
self.gridList[index].costList[i].icon = Util.GetGameObject(self.gridList[index].costList[i].frame.transform,"icon"):GetComponent("Image")
self.gridList[index].costList[i].num = Util.GetGameObject(self.gridList[index].costList[i].go,"num"):GetComponent("Text")
end
self.gridList[index].costList[i].go.gameObject:SetActive(true)
if self.godDatas[index][i].id > 0 then
if self.godDatas[index][i].star > 10 then
self.gridList[index].costList[i].frame.sprite = self.spLoader:LoadSprite("s_shenhunxitong_zuanshitouxiangkuang")
else
self.gridList[index].costList[i].frame.sprite = self.spLoader:LoadSprite("s_shenhunxitong_hong")
end
self.gridList[index].costList[i].icon.gameObject:SetActive(true)
self.gridList[index].costList[i].icon.sprite = self.spLoader:LoadSprite(GetResourcePath(heroConfig[self.godDatas[index][i].id].Icon))
elseif self.godDatas[index][i].property > 0 then
self.gridList[index].costList[i].icon.gameObject:SetActive(false)
self.gridList[index].costList[i].frame.sprite = self.spLoader:LoadSprite(PropertySmallIcon[self.godDatas[index][i].star][self.godDatas[index][i].property])
elseif self.godDatas[index][i].profession > 0 then
self.gridList[index].costList[i].icon.gameObject:SetActive(false)
self.gridList[index].costList[i].frame.sprite = self.spLoader:LoadSprite(GodSoulProfession[self.godDatas[index][i].star][self.godDatas[index][i].profession])
else
self.gridList[index].costList[i].icon.gameObject:SetActive(false)
self.gridList[index].costList[i].frame.sprite = self.spLoader:LoadSprite(StarImage[self.godDatas[index][i].star])
end
if not self.addShow then
self.gridList[index].costList[i].num.text = string.format("×%s",self.godDatas[index][i].num)
Util.SetGray(self.gridList[index].costList[i].frame.gameObject,false)
elseif index == self.lv + 1 then --未激活时红色,图标置灰
self.gridList[index].costList[i].num.text = string.format("×%s",self.godDatas[index][i].num)
Util.SetGray(self.gridList[index].costList[i].frame.gameObject,true)
else --激活时绿色,图标不置灰
self.gridList[index].costList[i].num.text = string.format("×%s",self.godDatas[index][i].num)
Util.SetGray(self.gridList[index].costList[i].frame.gameObject,false)
end
end
end
self.gridList[index].red.gameObject:SetActive(false)
if not self.addShow then
self.gridList[index].tip.text = "需要:" --未解锁红色
self.gridList[index].costGrid.gameObject:SetActive(true)
self.gridList[index].add.gameObject:SetActive(false)
Util.SetGray(self.gridList[index].godGrid,false)
--Util.SetGray(self.gridList[index].des.gameObject,false)
self.gridList[index].des.text = string.format("%s",self.godDatas[index].skill) --神魂效果 绿色 未激活时置灰
elseif index <= self.lv + 1 then
self.gridList[index].tip.text = "需要:" --未解锁红色
self.gridList[index].costGrid.gameObject:SetActive(true)
self.gridList[index].add.gameObject:SetActive(true)
if index == self.lv + 1 then
Util.SetGray(self.gridList[index].godGrid,true) --勾魂图标 未激活时置灰
--Util.SetGray(self.gridList[index].des.gameObject,true)
self.gridList[index].des.text = string.format("%s",self.godDatas[index].skill) --神魂效果 绿色 未激活时置灰
local isShow = GodSoulManager.CheckRedPointGodSoul(self.curHeroData) or false
self.gridList[index].red.gameObject:SetActive(isShow)
else
Util.SetGray(self.gridList[index].godGrid,false)
--Util.SetGray(self.gridList[index].des.gameObject,false)
self.gridList[index].des.text = string.format("%s",self.godDatas[index].skill) --神魂效果 绿色 未激活时置灰
end
else
self.gridList[index].costGrid.gameObject:SetActive(false)
self.gridList[index].add.gameObject:SetActive(true)
--红色
self.gridList[index].tip.text = string.format("激活%s级神魂后解锁:",index - 1)
Util.SetGray(self.gridList[index].godGrid,true)
--Util.SetGray(self.gridList[index].des.gameObject,true)
self.gridList[index].des.text = string.format("%s",self.godDatas[index].skill) --神魂效果 绿色 未激活时置灰
end
Util.AddOnceClick(self.gridList[index].add,function()
if index <= self.lv + 1 then
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.ShenHun,self.godDatas[index],self.curHeroData,index)
else
PopupTipPanel.ShowTip("所选神魂尚未解锁!")
end
end)
end
function RoleGodSoulLayout:OnHide()
self.gameObject:SetActive(false)
end
function RoleGodSoulLayout:OnClose()
self.gridList = {}
end
return RoleGodSoulLayout