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() 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("Image") local redPoint = Util.GetGameObject(itemGo,"RedPoint") self.lightList[i] = Util.GetGameObject(itemGo,"Light") nameImg.sprite = self.spLoader:LoadSprite(imgName[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") local numInBag = BagManager.GetTotalItemNum(data[i]) 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) --红点 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) item:GetComponent("Text").text = 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