local Practice = quick_class("Practice", BasePanel) local orginLayer local XinXianConfig = ConfigManager.GetConfig(ConfigName.XiuXianConfig) local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local oldPower = 0 local newPower = 0 local oldBigLevel = 0 function Practice:InitComponent() self.spLoader = SpriteLoader.New() orginLayer = 0 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) --Btns self.helpBtn = Util.GetGameObject(self.gameObject, "Btns/helpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition self.previewBtn = Util.GetGameObject(self.gameObject, "Btns/previewBtn") self.additionBtn = Util.GetGameObject(self.gameObject, "Btns/additionBtn") self.imprintBtn = Util.GetGameObject(self.gameObject, "Btns/imprintBtn") self.imprintRedPoint = Util.GetGameObject(self.imprintBtn, "redPoint") self.starBtn = Util.GetGameObject(self.gameObject, "Btns/starBtn") self.starNum = Util.GetGameObject(self.starBtn, "starNum"):GetComponent("Text") --MidPart self.mid = Util.GetGameObject(self.gameObject, "Mid") self.levelName = Util.GetGameObject(self.mid, "LevelName"):GetComponent("Image") self.img = Util.GetGameObject(self.mid, "Man"):GetComponent("Image") --BottomPart self.bottom = Util.GetGameObject(self.gameObject, "Bottom") self.items = Util.GetGameObject(self.bottom, "Items") self.PointPre = Util.GetGameObject(self.items, "PointPre") self.lines = Util.GetGameObject(self.bottom, "Lines") self.LinePre = Util.GetGameObject(self.lines, "LinePre") self.needs = Util.GetGameObject(self.bottom, "Needs") self.needPre = Util.GetGameObject(self.needs, "pre") self.button = Util.GetGameObject(self.bottom, "Button") self.buttonText = Util.GetGameObject(self.button, "Text"):GetComponent("Text") self.redPoint = Util.GetGameObject(self.button, "redPoint") self.content = Util.GetGameObject(self.bottom, "Content") self.textBtn = Util.GetGameObject(self.content, "Text") self.needStar = Util.GetGameObject(self.content, "num"):GetComponent("Text") self.effect = Util.GetGameObject(self.mid, "Man/fx_ui_xiuxingshengxin") self.effect:SetActive(false) self.itemList = {} self.pointList = {} self.lineList = {} self.effectUpgradeList = {} end function Practice:BindEvent() --帮助按钮 Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Practice, self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.BtnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(self.previewBtn, function() UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.PracticeStatePreview) end) Util.AddClick(self.additionBtn, function() UIManager.OpenPanel(UIName.RoleProInfoPopup,PracticeManager.GetCurAllGetAddForShow(),nil,false,nil) end) Util.AddClick(self.imprintBtn, function() if PracticeManager.PracticeBigLevel > 1 then UIManager.OpenPanel(UIName.PracticeImprintPanel) else PopupTipPanel.ShowTip("到达筑基期后解锁!") end end) Util.AddClick(self.textBtn, function() Log("打开山河社稷图") end) Util.AddClick(self.starBtn, function() UIManager.OpenPanel(UIName.FightLevelChapterPanel) end) Util.AddClick(self.button, function() if self:UpgradeCheck() then return end NetManager.UpPracticeLevelRequest(function () newPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPower,newValue = newPower}) oldPower = newPower --名字颜色 Game.GlobalEvent:DispatchEvent(GameEvent.Player.OnChangeName) local curNum = XinXianConfig[PracticeManager.PracticeLevel].RealmLevel if curNum ~= 0 then for i = 1, #self.effectUpgradeList do self.effectUpgradeList[i]:SetActive(false) end self.effectUpgradeList[curNum]:SetActive(true) else for i = 1, #self.effectUpgradeList do self.effectUpgradeList[i]:SetActive(false) end end --战力更改请求 PracticeManager.ShowTipsOnUpgrade() NetManager.RequestUserForceChange(FormationTypeDef.FORMATION_NORMAL) if PracticeManager.PracticeBigLevel - oldBigLevel == 1 then self.effect:SetActive(true) Timer.New(function () UIManager.OpenPanel(UIName.CongratulationPopup,CONGRATULATION_TYPE.Practice,XinXianConfig[PracticeManager.PracticeLevel]) if PracticeManager.PracticeBigLevel == 2 then Game.GlobalEvent:DispatchEvent(GameEvent.Practice.PracticeGuide) end self.effect:SetActive(false) end,1):Start() end self:OnShow() end) end) BindRedPointObject(RedPointType.Practice_upgrade,self.redPoint) BindRedPointObject(RedPointType.Practice_imprint,self.imprintRedPoint) end --Check function Practice:UpgradeCheck() if PracticeManager.StarNum < self.curLevelConfig.NeedStarNum then PopupTipPanel.ShowTip("无法破境,请前往山河社稷图获取更多星星!") return true end if self.curLevelConfig.LevelUpCost then for i = 1, #self.curLevelConfig.LevelUpCost do local data = self.curLevelConfig.LevelUpCost[i] if BagManager.GetTotalItemNum(data[1]) < data[2] then PopupTipPanel.ShowTip(string.format("%s不足!",ItemConfig[data[1]].Name)) return true end end end return false end function Practice:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, self.OnShow,self) end function Practice:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, self.OnShow,self) end --待功能扩展(试图打开某个状态) function Practice:OnOpen() self.UpView:OnOpen({ showType = UpViewOpenType.ShowRight, panelType = PanelType.XiuXing }) self.BtView:OnOpen(self,{ sortOrder = self.sortingOrder, panelType = PanelTypeView.Practice }) end function Practice:OnSortingOrderChange() orginLayer = self.sortingOrder Util.SetParticleSortLayer(self.effect, self.sortingOrder+1) -- 头像层级 if self.playerInfoView then self.playerInfoView:SetLayer(self.sortingOrder) end end function Practice:OnShow() self.playerInfoView:OnShow() CheckRedPointStatus(RedPointType.Practice_imprint) CheckRedPointStatus(RedPointType.Practice_upgrade) FormationManager.RefreshMainFormationPower() self.curLevelConfig = PracticeManager.GetCurConfigData() LogYellow("当前修行等级Id:"..tostring(PracticeManager.PracticeLevel)) oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) oldBigLevel = PracticeManager.PracticeBigLevel self.pointData = PracticeManager.GetPointsData() self.lineData = PracticeManager.GetLinesData() self:RefreshMid() self:RefreshPoints() self:RefreshLines() self:RefreshBtn() end function Practice:RefreshMid() self.levelName.sprite = self.spLoader:LoadSprite(self.curLevelConfig.NamePic1) self.starNum.text = PracticeManager.StarNum local playerImg = NameManager.roleSex == 0 and "x_xiuxing_liangongren_nan" or "x_xiuxing_liangongren_nv" self.img.sprite = self.spLoader:LoadSprite(playerImg) -- Util.SetParticleSortLayer(self.effect, self.sortingOrder+1) end --刷新点 function Practice:RefreshPoints() if not self.pointList then self.pointList = {} end for k,v in ipairs(self.pointList) do v.gameObject:SetActive(false) end for i = 1, #self.pointData do local data = self.pointData[i] if not self.pointList[i] then self.pointList[i] = newObject(self.PointPre) self.pointList[i].transform:SetParent(self.items.transform) self.pointList[i].transform.localScale = Vector3.one self.pointList[i].transform.localPosition = Vector3.zero end self.pointList[i]:SetActive(true) self.pointList[i]:GetComponent("Image").sprite = self.spLoader:LoadSprite(data.Img) self.pointList[i]:GetComponent("RectTransform").localPosition = data.Pos local loopEffect = Util.GetGameObject(self.pointList[i],"looping") loopEffect:SetActive(data.State == 1) self.effectUpgradeList[i] = Util.GetGameObject(self.pointList[i],"Fx_xiuxing_qiu_brust") -- LogGreen("self.sortingOrder:"..tostring(self.sortingOrder)) Util.SetParticleSortLayer(loopEffect, self.sortingOrder+1) Util.SetParticleSortLayer(self.effectUpgradeList[i], self.sortingOrder+1) -- self.effectUpgradeList[i]:SetActive(false) Util.AddOnceClick(self.pointList[i],function () UIManager.OpenPanel(UIName.GeneralInfoPopup,GENERALINFO_TYPE.PracticeLevel,data) end) end end --刷新 点间的线 function Practice:RefreshLines() if not self.lineList then self.lineList = {} end for k,v in ipairs(self.lineList) do v.gameObject:SetActive(false) end for i = 1, #self.lineData do local data = self.lineData[i] if not self.lineList[i] then self.lineList[i] = newObject(self.LinePre) self.lineList[i].transform:SetParent(self.lines.transform) self.lineList[i].transform.localScale = Vector3.one self.lineList[i].transform.localPosition = Vector3.zero end self.lineList[i]:SetActive(true) local imgName = data.State == 1 and "x_xiuxing_xian_01" or "x_xiuxing_xian_02" self.lineList[i]:GetComponent("Image").sprite = self.spLoader:LoadSprite(imgName) self.lineList[i]:GetComponent("RectTransform").localPosition = data.Pos self.lineList[i]:GetComponent("RectTransform").rotation = Quaternion.Euler(data.Rota) end end function Practice:RefreshBtn() --神印按钮筑基期后开启 Util.SetGray(self.imprintBtn,PracticeManager.PracticeBigLevel < 2) if XinXianConfig[PracticeManager.PracticeLevel + 1] then self.button:SetActive(true) if self.curLevelConfig.LevelUpCost then--如果下级消耗不为空则为突破阶段 if not self.itemList then self.itemList = {} end for k,v in ipairs(self.itemList) do v.gameObject:SetActive(false) end for i = 1, #self.curLevelConfig.LevelUpCost do local data = self.curLevelConfig.LevelUpCost[i] if not self.itemList[i] then self.itemList[i] = newObject(self.needPre) self.itemList[i].transform:SetParent(self.needs.transform) self.itemList[i].transform.localScale = Vector3.one self.itemList[i].transform.localPosition = Vector3.zero end local icon = Util.GetGameObject(self.itemList[i],"icon"):GetComponent("Image") local num = Util.GetGameObject(self.itemList[i],"num"):GetComponent("Text") icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data[1])) num.text = data[2] if BagManager.GetTotalItemNum(data[1]) < data[2] then num.text = string.format("%s",data[2]) end self.itemList[i]:SetActive(true) end self.needs:SetActive(true) self.content:SetActive(false) self.buttonText.text = Language[11805] else self.needs:SetActive(false) self.content:SetActive(true) self.needStar.text = self.curLevelConfig.NeedStarNum if self.curLevelConfig.NeedStarNum > PracticeManager.StarNum then self.needStar.text = string.format("%s",self.curLevelConfig.NeedStarNum) end self.buttonText.text = "破 境" end else self.button:SetActive(false) self.needs:SetActive(false) self.content:SetActive(true) Util.GetGameObject(self.content,"Text"):SetActive(false) Util.GetGameObject(self.content,"Image"):SetActive(false) self.needStar.text = "恭喜你已修行至世间巅峰" end end function Practice:OnClose() for i = 1, #self.effectUpgradeList do self.effectUpgradeList[i]:SetActive(false) end end function Practice:OnDestroy() self.spLoader:Destroy() SubUIManager.Close(self.UpView) SubUIManager.Close(self.BtView) self.UpView = nil self.BtView = nil if self.playerInfoView then SubUIManager.Close(self.playerInfoView) self.playerInfoView = nil end ClearRedPointObject(RedPointType.Practice_upgrade,self.redPoint) ClearRedPointObject(RedPointType.Practice_imprint,self.imprintRedPoint) self.itemList = {} self.pointList = {} self.lineList = {} self.effectUpgradeList = {} end return Practice