miduo_client/Assets/ManagedResources/~Lua/Modules/Practice/PracticePanel.lua

266 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 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.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.content = Util.GetGameObject(self.bottom, "Content")
self.textBtn = Util.GetGameObject(self.content, "Text")
self.needStar = Util.GetGameObject(self.content, "num"):GetComponent("Text")
self.itemList = {}
self.pointList = {}
self.lineList = {}
end
function Practice:BindEvent()
--帮助按钮
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.VIP, 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()
UIManager.OpenPanel(UIName.PracticeImprintPanel)
end)
Util.AddClick(self.textBtn, function()
LogGreen("打开山河社稷图")
end)
Util.AddClick(self.starBtn, function()
LogGreen("打开山河社稷图")
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)
if PracticeManager.PracticeBigLevel - oldBigLevel == 1 then
UIManager.OpenPanel(UIName.CongratulationPopup,CONGRATULATION_TYPE.Practice,XinXianConfig[PracticeManager.PracticeLevel])
end
self:OnShow()
end)
end)
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
-- 头像层级
if self.playerInfoView then
self.playerInfoView:SetLayer(self.sortingOrder)
end
end
function Practice:OnShow()
self.playerInfoView:OnShow()
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)
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
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()
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("<color=red>%s</color>",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("<color=red>%s</color>",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()
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
self.itemList = {}
self.pointList = {}
self.lineList = {}
end
return Practice