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

337 lines
15 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
TailsmanSoulMainPanel = Inherit(BasePanel)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local specialConfig=ConfigManager.GetConfigData(ConfigName.SpecialConfig,177)
local sortOrder = 0
local pro=tonumber(specialConfig.Value)/10000
local addLv=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.starGrid = Util.GetGameObject(self.transform,"proMainLayout/starGrid")
self.upLvBtn = Util.GetGameObject(self.transform, "proMainLayout/upLvBtn")
self.upLvBtnText = Util.GetGameObject(self.upLvBtn, "Text"):GetComponent("Text")
self.upLvBtnRed = Util.GetGameObject(self.upLvBtn, "red")
self.costLayout = Util.GetGameObject(self.transform, "proMainLayout/layout")
self.costIconParent = Util.GetGameObject(self.transform, "proMainLayout/layout/iconDi")
self.costIcon = Util.GetGameObject(self.costIconParent, "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,"ItemView")
self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform,"item/frame"):GetComponent("Image")
self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform,"item/icon"):GetComponent("Image")
self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform,"item/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,"name"):GetComponent("Text")
self.tailsList[i].red = Util.GetGameObject(self.tailsList[i].card.transform,"redPoint")
end
end
self.skillPro = Util.GetGameObject(self.transform, "skillLayout/pro")
self.skillGrid = Util.GetGameObject(self.transform, "skillLayout/proScrolllRect/proScroll")
self.skillGridPos = self.skillGrid:GetComponent("RectTransform").anchoredPosition3D
self.skillList = {}
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
--self.effect = Util.GetGameObject(self.transform, "Effect")
end
function TailsmanSoulMainPanel:BindEvent()
Util.AddClick(self.costIcon.gameObject, function()
local costId,num = TailsManSoulManager.GetTailsmanCost(self.data.id,self.data.lv)
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,costId,nil)
end)
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()
local costId,num = TailsManSoulManager.GetTailsmanCost(self.data.id,self.data.lv)
local curNum = BagManager.GetItemCountById(costId)
local isEnough = false,false
if num and num > 0 then
if curNum >= num then
local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
NetManager.FaBaoSoulUpLvRequest(self.data.id,self.data.lv + 1, function()
self:OnShow()
if self.data.lv < 2 then
PopupTipPanel.ShowTip(string.format("%s激活成功",self.data.config.Name))
else
PopupTipPanel.ShowTip(string.format("%s强化成功",self.data.config.Name))
end
local newPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
if newPower - oldPower > 0 then
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPower,newValue = newPower})
end
end)
else
PopupTipPanel.ShowTip(string.format("%s不足",ItemConfig[costId].Name))
end
else
PopupTipPanel.ShowTip("已达上限")
end
end)
end
--添加事件监听(用于子类重写)
function TailsmanSoulMainPanel:AddListener()
end
--移除事件监听(用于子类重写)
function TailsmanSoulMainPanel:RemoveListener()
end
function TailsmanSoulMainPanel:OnSortingOrderChange()
-- Util.SetParticleSortLayer(self.effect,self.sortingOrder + 1)
end
function TailsmanSoulMainPanel:OnOpen(curCompId)
self.curCompId = curCompId
self.index = 1
end
function TailsmanSoulMainPanel:OnShow()
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
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(data1,self.skillList,self.skillGrid,self.skillPro)
self:SetSkillGridPos(data1)
--Util.SetParticleSortLayer(self.effect,self.sortingOrder + 1)
end
function TailsmanSoulMainPanel:SetSkillGridPos()
-- local pos = self.skillGrid:GetComponent("RectTransform").anchoredPosition3D
-- for i = 1,#self.skillList do
-- if self.complv > i then
-- pos.y = self.skillGridPos.y + GetPreferredHeight(self.skillList[i].go.transform)
-- end
-- end
-- self.skillGrid:GetComponent("RectTransform").anchoredPosition3D = pos
end
function TailsmanSoulMainPanel:GetSkillDataList()
local datas = {}
for k,v in pairs(self.skillDataList) do
local str = v
if self.complv == k then
str = string.format("<color=#00FF00>%s %s</color>",str,"羁绊基础属性提升"..pro*100*k.."%")
elseif self.complv < k then
str = string.format("<color=#BFBFBF>%s %s</color>",str,"羁绊聚灵基础属性提升"..pro*100*k.."%")
else
str = string.format("<color=#FFCF9E>%s %s</color>",str,"羁绊聚灵基础属性提升"..pro*100*k.."%")
end
datas[k] = str
end
return datas
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])
--获取技能加成等级
addLv=0
for i=1,5 do
local curData = TailsManSoulManager.GetTailsmanSoulDatasByPro(i)
for j=1,#curData do
--LogError("curData.lv=========="..curData[j].lv)
if curData[j].lv>0 then
addLv=addLv+curData[j].lv
end
end
end
local data1 = self:GetProData()
self:SetProList(data1,self.proList,self.proGrid,self.pro)
self:SetSelect()
self:SetCostItem()
--self:SetStar(self.starGray,self.data.config.LvMax)
--self:SetStar(self.starLight,self.data.lv)
SetHeroStars(self.spLoader,self.starGrid,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.TryGetConfigDataByDoubleKey(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
--LogError("addlv======================"..addLv.." pro========="..pro)
local value=math.floor(curData[i][2]*(1+addLv*pro)+0.5)
str = string.format("<color=#FEA736>%s%s</color>",propertyConfig[curData[i][1]].Info,GetPropertyFormatStrOne(propertyConfig[curData[i][1]].Style,value) )
if nextProData[curData[i][1]] then
str = str..string.format("<color=#00FF00>(+%s)</color>",GetPropertyFormatStrOne(propertyConfig[curData[i][1]].Style,nextProData[curData[i][1]] - value))
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
for k, v in pairs(proList) do
proList[k]=math.floor(v*(1+addLv*pro)+0.5)
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.gameObject,grid.gameObject)
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 "#Ffeac6"
local ismax = false
if num and num > 0 then
self.costLayout.gameObject:SetActive(true)
self.costIcon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(costId))
self.costNum.text = string.format("<color=#%s>%s/%s</color>",colo,curNum,num)
if curNum > num then
self.upLvBtnRed.gameObject:SetActive(true)
else
self.upLvBtnRed.gameObject:SetActive(false)
end
Util.SetGray(self.upLvBtn,false)
ismax = false
else
self.upLvBtnRed.gameObject:SetActive(false)
self.costLayout.gameObject:SetActive(false)
Util.SetGray(self.upLvBtn,true)
ismax = true
end
if self.data.lv < 1 then
self.upLvBtnText.text = "激活"
elseif ismax then
self.upLvBtnText.text = "已达上限"
else
self.upLvBtnText.text = "强化"
end
end
function TailsmanSoulMainPanel:SetSelect()
self.select.transform:SetParent(self.tailsList[self.index].go.transform)
self.select.transform.localPosition = Vector3.New(-0.84,20.73,0)
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.gameObject,grid.gameObject)
self.tailsList[i].card = Util.GetGameObject(self.tailsList[i].go,"ItemView")
self.tailsList[i].bg = Util.GetGameObject(self.tailsList[i].card.transform,"item/frame"):GetComponent("Image")
self.tailsList[i].icon = Util.GetGameObject(self.tailsList[i].card.transform,"item/icon"):GetComponent("Image")
--self.tailsList[i].starGray = Util.GetGameObject(self.tailsList[i].card.transform,"item/starGrid/starGray")
--self.tailsList[i].starLight = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid/starLight")
self.tailsList[i].starGrid = Util.GetGameObject(self.tailsList[i].card.transform,"starGrid")
self.tailsList[i].name = Util.GetGameObject(self.tailsList[i].card.transform,"name"):GetComponent("Text")
self.tailsList[i].red = Util.GetGameObject(self.tailsList[i].card.transform,"redPoint")
end
self.tailsList[i].go.gameObject:SetActive(true)
self.tailsList[i].bg.sprite = self.spLoader:LoadSprite(GetQuantityImageByquality(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.LvMax)
--self:SetStar(self.tailsList[i].starLight,data[i].lv)
SetHeroStars(self.spLoader,self.tailsList[i].starGrid,data[i].lv)
local costId,num = TailsManSoulManager.GetTailsmanCost(data[i].id,data[i].lv)
local curNum = BagManager.GetItemCountById(costId)
if num and num > 0 and curNum >= num then
self.tailsList[i].red.gameObject:SetActive(true)
else
self.tailsList[i].red.gameObject:SetActive(false)
end
Util.AddOnceClick(self.tailsList[i].go,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 = {}
SubUIManager.Close(self.UpView)
end
return TailsmanSoulMainPanel