291 lines
11 KiB
Lua
291 lines
11 KiB
Lua
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 |