miduo_client/Assets/ManagedResources/~Lua/Modules/Gem/GemPanel.lua

291 lines
11 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.

local Gem = quick_class("Gem", BasePanel)
local itemData = ConfigManager.GetConfig(ConfigName.ItemConfig)
local gemConfig = ConfigManager.GetConfig(ConfigName.GemConfig)
local PropertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
local typeName = {
[1] = "攻击",[2] = "生命",[3] = "护甲",[4] = "魔抗",[5] = "攻击",[6] = "生命",[7] = "护甲",[8] = "魔抗",
}
local imgName = {
[1] = "m_mingge_gongji",[2] = "m_mingge_shengming",[3] = "m_mingge_zengshang",[4] = "m_mingge_shanghai",
[5] = "m_mingge_renjie",[6] = "m_mingge_pochan",[7] = "m_mingge_yaoling",[8] = "m_mingge_daoxuan",
}
function Gem:InitComponent()
self.spLoader = SpriteLoader.New()
if not self.playerInfoView then
self.playerInfoView = SubUIManager.Open(SubUIConfig.PlayerInfoView, self.transform)
end
self.BtView = SubUIManager.Open(SubUIConfig.BtView, self.transform)
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform)
--MidPart
self.mid = Util.GetGameObject(self.gameObject, "Mid")
self.img = Util.GetGameObject(self.mid, "Man"):GetComponent("Image")
self.ManCanvas = Util.GetGameObject(self.mid, "Man"):GetComponent("Canvas")
self.fx_ui_xiuxingshengxin_cangzhu = Util.GetGameObject(self.gameObject, "Bg/fx_ui_xiuxingshengxin_cangzhu")
--Gems
self.gems = Util.GetGameObject(self.gameObject, "Gems")
self.stones = Util.GetGameObject(self.gameObject, "Stones")
self.gemName = Util.GetGameObject(self.gameObject, "Stones/Name/Text"):GetComponent("Text")
self.itemList = {}
self.propertyList = {}
self.lightList = {}
--页签
self.btnPractice = Util.GetGameObject(self.gameObject, "Tab/tab1")
self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition
self.additionBtn = Util.GetGameObject(self.gameObject, "additionBtn")
self.curType = 1
--页签
self.tab = Util.GetGameObject(self.gameObject, "Tab")
self.practice_tab = Util.GetGameObject(self.tab, "tab1/Redpot")
self.gem_tab = Util.GetGameObject(self.tab, "tab2/Redpot")
end
function Gem:BindEvent()
--帮助按钮
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Gem, self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.btnPractice, function()
UIManager.OpenPanel(UIName.PracticePanel)
self:ClosePanel()
end)
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Gem, self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.additionBtn, function()
local tempData = GemManager.GetSortAttri()
if #tempData > 0 then
UIManager.OpenPanel(UIName.GeneralInfoPopup, GENERALINFO_TYPE.Gem)
else
PopupTipPanel.ShowTip("尚无命格属性加成!")
end
end)
BindRedPointObject(RedPointType.Practice,self.practice_tab)
BindRedPointObject(RedPointType.Gem,self.gem_tab)
end
function Gem:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Gem.RefreshPanel, self.Refresh,self)
end
function Gem:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Gem.RefreshPanel, self.Refresh,self)
end
--待功能扩展(试图打开某个状态)
function Gem:OnOpen()
self.UpView:OnOpen({ showType = UpViewOpenType.ShowRight, panelType = PanelType.XiuXing })
self.BtView:OnOpen(self,{ sortOrder = self.sortingOrder, panelType = PanelTypeView.Practice })
local oldWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
end
function Gem:OnSortingOrderChange()
self.BtView:OnOpen(self,{ sortOrder = self.sortingOrder, panelType = PanelTypeView.Practice })
self.ManCanvas.sortingOrder = self.sortingOrder + 2
Util.SetParticleSortLayer(self.fx_ui_xiuxingshengxin_cangzhu, self.sortingOrder + 1)
-- 头像层级
if self.playerInfoView then
self.playerInfoView:SetLayer(self.sortingOrder)
end
end
function Gem:OnShow()
self.playerInfoView:OnShow()
Util.SetParticleSortLayer(self.fx_ui_xiuxingshengxin_cangzhu, self.sortingOrder + 1)
self:Refresh()
end
function Gem:Refresh()
CheckRedPointStatus(RedPointType.Gem)
self:RefreshMid()
self:SetGems()
self:SetStones(GemManager.myGemList[self.curType],self.curType)
end
--刷新中部人物
function Gem:RefreshMid()
local playerImg = NameManager.roleSex == 0 and "x_xiuxing_liangongren_nan" or "x_xiuxing_liangongren_nv"
self.img.sprite = self.spLoader:LoadSprite(playerImg)
self.ManCanvas.sortingOrder = self.sortingOrder + 2
end
--设置中部宝石数据
function Gem:SetGems()
local gemData = GemManager.myGemList
for i = 1, 8 do
local itemGo = Util.GetGameObject(self.gems,"item ("..i..")")
local nameImg = Util.GetGameObject(itemGo,"Name"):GetComponent("Text")
local redPoint = Util.GetGameObject(itemGo,"RedPoint")
self.lightList[i] = Util.GetGameObject(itemGo,"Light")
nameImg.text = typeName[i]
redPoint:SetActive(false)
for j = 1, 3 do
local stoneGo = Util.GetGameObject(itemGo,"stone ("..j..")")
local level = Util.GetGameObject(stoneGo,"Text"):GetComponent("Text")
local icon = Util.GetGameObject(stoneGo,"icon"):GetComponent("Image")
local img = Util.GetGameObject(stoneGo,"icon"):GetComponent("Image")
local name = nil
level.text = ""
if gemData[i] and gemData[i][j] and gemData[i][j] > 0 then
name = GetSpriteNameByItemId(gemData[i][j])
level.text = gemConfig[gemData[i][j]].Level
end
--红点和命石icon
local redPointData = GemManager.GetGemsFromBagByType(i)
if name ~= nil then--装备了命石
icon.gameObject:SetActive(true)
icon.sprite = self.spLoader:LoadSprite(name)
local numInBag = BagManager.GetTotalItemNum(gemData[i][j])
for key, value in pairs(redPointData) do--有更高级的命石红点显示
if value.id > gemData[i][j] then
redPoint:SetActive(true)
break
end
if numInBag + 1 > gemConfig[gemData[i][j]].UpgradeNum and gemConfig[gemData[i][j]].NextGem > 0 then
redPoint:SetActive(true)
break
end
end
else
icon.gameObject:SetActive(false)
for key, value in pairs(redPointData) do--有多余命石,红点显示
if value.num > 0 then
redPoint:SetActive(true)
break
end
end
end
end
Util.AddOnceClick(itemGo,function ()
self.curType = i
self:SetStones(gemData[i],i)
end)
end
end
--设置下部宝石数据
function Gem:SetStones(_data,index)
-- if _data then--最终删除
-- LogWarn("[1]"..tostring(_data[1]).." [2]"..tostring(_data[2]).." [3]"..tostring(_data[3]))
-- else
-- LogWarn("无数据")
-- end
local data = _data
local redPointData = GemManager.GetGemsFromBagByType(index)
self.gemName.text = typeName[index].."命格"
for i = 1, #self.lightList do
self.lightList[i]:SetActive(self.curType == i)
end
for i = 1, 3 do
local stoneGo = Util.GetGameObject(self.stones,"Stone ("..i..")")
local item = Util.GetGameObject(stoneGo,"Item")
local mask = Util.GetGameObject(stoneGo,"Mask")
local property = Util.GetGameObject(stoneGo,"Property")
local textPre = Util.GetGameObject(property,"Text")
local name = Util.GetGameObject(stoneGo,"Name"):GetComponent("Text")
local redPoint = Util.GetGameObject(stoneGo,"RedPoint")
textPre:GetComponent("Text").text = ""
textPre:SetActive(false)
property:SetActive(false)
item:SetActive(false)
redPoint:SetActive(false)
name.text = ""
if data and data[i] and data[i] > 0 then
if not self.itemList[i] then
local view = SubUIManager.Open(SubUIConfig.ItemView,item.transform)
self.itemList[i] = view
end
self.itemList[i]:OnOpen(false, {data[i],0}, 1.1, false,false,false,self.sortingOrder + 1)
self.itemList[i].gameObject:SetActive(true)
item:SetActive(true)
name.text = gemConfig[data[i]].Name
self:SetProperty(gemConfig[data[i]],data,property,textPre)
local numInBag = BagManager.GetTotalItemNum(data[i])
--红点
for key, value in pairs(redPointData) do--有更高级的命石红点显示
if value.id > data[i] then
redPoint:SetActive(true)
break
end
if numInBag + 1 >= gemConfig[data[i]].UpgradeNum and gemConfig[data[i]].NextGem > 0 then
redPoint:SetActive(true)
break
end
end
else
for key, value in pairs(redPointData) do--有多余命石,红点显示
if value.num > 0 then
redPoint:SetActive(true)
break
end
end
end
Util.AddOnceClick(mask,function ()
if data and data[i] and data[i] > 0 then
UIManager.OpenPanel(UIName.RewardGemSingleShowPopup,data[i],2,nil,index,i)
else
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.SelectGem,index,i)
end
end)
end
end
function Gem:SetProperty(configData,data,parent,text)
if not configData then
return
end
if not self.propertyList[parent] then
self.propertyList[parent] = {}
end
for k = 1, #self.propertyList[parent] do
self.propertyList[parent][k]:SetActive(false)
end
for j = 1, #configData.Property do
local data = configData.Property[j]
local item = self.propertyList[parent][j]
parent:SetActive(true)
if not item then
item = newObjToParent(text,parent.transform)
self.propertyList[parent][j] = item
end
item:SetActive(true)
local str=""
if PropertyConfig[data[1]].Style==1 then
str=string.format( "全体神将%s+%s",PropertyConfig[data[1]].Info,data[2])
elseif PropertyConfig[data[1]].Style==2 then
str=string.format( "全体神将%s+%s",PropertyConfig[data[1]].Info,data[2]/100).."%"
end
item:GetComponent("Text").text = str -- string.format( "%s+%s",PropertyConfig[data[1]].Info,data[2]/100).."%"
end
end
function Gem:OnClose()
self.lightList = {}
end
function Gem:OnDestroy()
self.spLoader:Destroy()
SubUIManager.Close(self.UpView)
SubUIManager.Close(self.BtView)
ClearRedPointObject(RedPointType.Practice,self.practice_tab)
ClearRedPointObject(RedPointType.Gem,self.gem_tab)
self.UpView = nil
self.BtView = nil
if self.playerInfoView then
SubUIManager.Close(self.playerInfoView)
self.playerInfoView = nil
end
self.itemList = {}
self.propertyList = {}
self.lightList = {}
end
return Gem