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

235 lines
9.6 KiB
Lua
Raw Normal View History

2021-11-15 18:24:39 +08:00
require("Base/BasePanel")
TailsmanSoulMainPanel = Inherit(BasePanel)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local sortOrder = 0
local curData = {}
function TailsmanSoulMainPanel:InitComponent()
self.spLoader = SpriteLoader.New()
self.help = Util.GetGameObject(self.transform, "help")
self.helpPos = self.help:GetComponent("RectTransform").localPosition
self.btnBack = Util.GetGameObject(self.transform, "btnBack")
self.tailsmainSoul = Util.GetGameObject(self.gameObject, "tailsmainSoul")
self.tailsmainSoulDi = Util.GetGameObject(self.tailsmainSoul, "di"):GetComponent("Image")
self.icon = Util.GetGameObject(self.tailsmainSoul, "icon"):GetComponent("Image")
self.starGray = Util.GetGameObject(self.transform,"proMainLayout/starGrid/starGray")
self.starLight = Util.GetGameObject(self.transform,"proMainLayout/starGrid/starLight")
self.upLvBtn = Util.GetGameObject(self.transform, "proMainLayout/upLvBtn")
self.upLvBtnText = Util.GetGameObject(self.upLvBtn, "Text"):GetComponent("Text")
self.costIcon = Util.GetGameObject(self.transform, "proMainLayout/layout/icon"):GetComponent("Image")
self.costNum = Util.GetGameObject(self.transform, "proMainLayout/layout/num"):GetComponent("Text")
self.pro = Util.GetGameObject(self.transform, "proMainLayout/pro")
self.proGrid = Util.GetGameObject(self.transform, "proMainLayout/proScrollRect/proScroll")
self.proList = {}
self.select = Util.GetGameObject(self.transform, "select")
self.tailsGrid = Util.GetGameObject(self.transform, "tailsScroll")
self.tailsPre = Util.GetGameObject(self.transform, "tailsPre")
self.tailsList = {}
for i = 1, self.tailsGrid.transform.childCount do
if not self.tailsList[i] then
self.tailsList[i] = {}
self.tailsList[i].go = self.tailsGrid.transform:GetChild(i-1)
self.tailsList[i].card = Util.GetGameObject(self.tailsList[i].go,"card"):GetComponent("Image")
self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform,"bg"):GetComponent("Image")
self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform,"icon"):GetComponent("Image")
self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starGray")
self.tailsList[i].starLight = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starLight")
self.tailsList[i].name = Util.GetGameObject(self.tailsList[i].card.transform,"nameDi/name"):GetComponent("Text")
end
end
self.skillPro = Util.GetGameObject(self.transform, "skillLayout/pro")
self.skillGrid = Util.GetGameObject(self.transform, "skillLayout/proScrolllRect/proScroll")
self.skillList = {}
end
function TailsmanSoulMainPanel:BindEvent()
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.help, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.tailsmainSoul,self.helpPos.x, self.helpPos.y)
end)
--逍遥游
Util.AddClick(self.upLvBtn,function()
end)
end
--添加事件监听(用于子类重写)
function TailsmanSoulMainPanel:AddListener()
end
--移除事件监听(用于子类重写)
function TailsmanSoulMainPanel:RemoveListener()
end
function TailsmanSoulMainPanel:OnSortingOrderChange()
end
function TailsmanSoulMainPanel:OnOpen(curCompId)
self.curCompId = curCompId
self.index = 1
end
function TailsmanSoulMainPanel:OnShow()
self.trumpList,self.compMaxLv,self.complv,self.skillDataList = TailsManSoulManager.GetTailsmanSoulDataById(self.curCompId)
self:SetTailsManList(self.trumpList,self.tailsGrid,self.tailsPre)
self:ChangeTailsMan()
local data1 = self:GetSkillDataList(self.skillDataList)
self:SetProList(self.skillDataList,self.skillList,self.skillGrid,self.skillPro)
end
function TailsmanSoulMainPanel:GetSkillDataList()
for k,v in pairs(self.skillDataList) do
if self.complv < k then
v = string.format("<color=#FFCF9E>%s</color>",v)
else
v = string.format("<color=#00FF00>%s</color>",v)
end
end
end
function TailsmanSoulMainPanel:ChangeTailsMan()
self.data = self.trumpList[self.index]
self.icon.sprite = self.spLoader:LoadSprite(GetResourcePath(self.data.config.Icon))
self.tailsmainSoulDi.sprite = self.spLoader:LoadSprite(GetTailsmanDiImage[self.data.config.Quality])
local data1 = self:GetProData()
self:SetProList(data1,self.proList,self.proGrid,self.pro)
self:SetSelect()
self:SetCostItem()
self:SetStar(self.starGray,self.data.config.Quality)
self:SetStar(self.starLight,self.data.lv)
end
function TailsmanSoulMainPanel:GetProData()
local proData = {}
local curData = ConfigManager.GetConfigDataByDoubleKey(ConfigName.TrumpLevelupPool,"PoolId",self.data.config.LvupPool,"Level",self.data.lv).LvupProps
local nextProData = {}
local tempdata = ConfigManager.GetConfigDataByDoubleKey(ConfigName.TrumpLevelupPool,"PoolId",self.data.config.LvupPool,"Level",self.data.lv + 1)
local isMax = 0
if not tempdata then
isMax = 1
else
nextProData = self:SetProData(tempdata.LvupProps)
end
local str = ""
for i = 1,#curData do
str = string.format("<color=#FFCF9E>%s:%s</color>",propertyConfig[curData[i][1]].Info,curData[i][2])
if nextProData[curData[i][1]] then
str = str..string.format("<color=#00FF00>(+%s)</color>",nextProData[curData[i][1]])
end
table.insert(proData,str)
end
return proData
end
function TailsmanSoulMainPanel:SetProData(proData)
local proList = {}
for i = 1,#proData do
if not proList[proData[i][1]] then
proList[proData[i][1]] = 0
end
proList[proData[i][1]] = proList[proData[i][1]] + proData[i][2]
end
return proList
end
function TailsmanSoulMainPanel:SetProList(data,preList,grid,pre)
for i = 1,math.max(#data,#preList) do
if not data[i] then
preList[i].go.gameObject:SetActive(false)
else
if not preList[i] then
preList[i] = {}
preList[i].go = newObjToParent(pre,grid)
preList[i].goText = preList[i].go:GetComponent("Text")
end
preList[i].go.gameObject:SetActive(true)
preList[i].goText.text = data[i]
end
end
ForceRebuildLayout(grid.transform)
end
function TailsmanSoulMainPanel:SetCostItem()
local costId,num = TailsManSoulManager.GetTailsmanCost(self.data.id,self.data.lv)
local curNum = BagManager.GetItemCountById(costId)
local colo = curNum >= num and "#FF0000" or "#FFCF9E"
if num and num > 0 then
self.costIcon.gameObject:SetActive(true)
self.costNum.text = string.format("<color=#%s>%s/%s</color>",colo,curNum,num)
else
self.costIcon.gameObject:SetActive(false)
self.costNum.text = "已达最高等级"
end
if self.data.lv < 1 then
self.upLvBtnText.text = "激活"
else
self.upLvBtnText.text = "强化"
end
end
function TailsmanSoulMainPanel:SetSelect()
self.select.transform:SetParent(self.tailsList[self.index].go)
self.select.transform.localPosition = Vector3.zero
self.select.transform.localScale = Vector3.one
end
function TailsmanSoulMainPanel:SetTailsManList(data,grid,pre)
for i = 1,math.max(#data,#self.tailsList) do
if not data[i] then
self.tailsList[i].go.gameObject:SetActive(false)
else
if not self.tailsList[i] then
self.tailsList[i] = {}
self.tailsList[i].go = newObjToParent(pre.transform,grid.transform)
self.tailsList[i].card = Util.GetGameObject(self.tailsList[i].go,"card"):GetComponent("Image")
self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform,"bg"):GetComponent("Image")
self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform,"icon"):GetComponent("Image")
self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starGray")
self.tailsList[i].starLight = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starLight")
self.tailsList[i].name = Util.GetGameObject(self.tailsList[i].card.transform,"nameDi/name"):GetComponent("Text")
end
self.tailsList[i].go.gameObject:SetActive(true)
self.tailsList[i].card.sprite = self.spLoader:LoadSprite(GetTailsmanCardStarImage[data[i].config.Quality])
self.tailsList[i].bg.sprite = self.spLoader:LoadSprite(GetTailsmanStarImage[data[i].config.Quality])
self.tailsList[i].icon.sprite = self.spLoader:LoadSprite(GetResourcePath(data[i].config.Icon))
self.tailsList[i].name.text = data[i].config.Name
self:SetStar(self.tailsList[i].starGray,data[i].config.Quality)
self:SetStar(self.tailsList[i].starLight,data[i].lv)
Util.AddOnceClick(self.tailsList[i].card.gameObject,function()
self.index = i
self:ChangeTailsMan()
end)
end
end
end
function TailsmanSoulMainPanel:SetStar(grid,star)
for i = 1, grid.transform.childCount do
if star >= i then
grid.transform:GetChild(i-1).gameObject:SetActive(true)
else
grid.transform:GetChild(i-1).gameObject:SetActive(false)
end
end
end
function TailsmanSoulMainPanel:OnClose()
end
--界面销毁时调用(用于子类重写)
function TailsmanSoulMainPanel:OnDestroy()
self.proList = {}
self.skillList = {}
end
return TailsmanSoulMainPanel