require("Base/BasePanel") WarWayLevelUpPopup = Inherit(BasePanel) local this = WarWayLevelUpPopup local WarWaySkillConfig = ConfigManager.GetConfig(ConfigName.WarWaySkillConfig) local PassiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig) local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) --初始化组件(用于子类重写) function WarWayLevelUpPopup:InitComponent() this.BackMask = Util.GetGameObject(self.gameObject, "BackMask") this.btnClose = Util.GetGameObject(self.gameObject, "btnClose") this.ForgetBtn = Util.GetGameObject(self.gameObject, "bg/Btns/ForgetBtn") this.ResetBtn = Util.GetGameObject(self.gameObject, "bg/Btns/ResetBtn") this.LevelUpBtn = Util.GetGameObject(self.gameObject, "bg/Btns/LevelUpBtn") this.CurWarWay = Util.GetGameObject(self.gameObject, "bg/CurWarWay") this.UpWarWay = Util.GetGameObject(self.gameObject, "bg/UpWarWay") this.CostPart = Util.GetGameObject(self.gameObject, "bg/CostPart") this.Top = Util.GetGameObject(self.gameObject, "bg/Top") this.NeedStar = Util.GetGameObject(self.gameObject, "bg/NeedStar") end --绑定事件(用于子类重写) function WarWayLevelUpPopup:BindEvent() Util.AddClick(this.BackMask, function() self:ClosePanel() end) Util.AddClick(this.btnClose, function() self:ClosePanel() end) Util.AddClick(this.ForgetBtn, function() --这个传过去的玩家能力id应该是当前的,而不是用升级之前的id,要不然就会发生视图层和模型层数据不一致的问题 local curWarWaySlotId= this.heroData[string.format("warWaySlot%dId", this.slot)] UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.WarWayForget, this.heroData, this.slot, curWarWaySlotId, self) end) Util.AddClick(this.ResetBtn, function() end) Util.AddClick(this.LevelUpBtn, function() if self.isEnoughMaterials then local warWaySlotId = this.heroData[string.format("warWaySlot%dId", this.slot)] local warWayConfig = WarWaySkillConfig[warWaySlotId] local cost = WarWaySkillConfig[warWaySlotId+1] if warWayConfig.Level < 4 then if this.heroData.star < cost.TankStarLimit then PopupTipPanel.ShowTipByLanguageId(12506) else NetManager.WarWayLearning(this.heroData.dynamicId, warWaySlotId, this.slot, function(msg) local nextId = tonumber(tostring(warWayConfig.WarWayGroup) .. tostring(warWayConfig.Level + 1)) HeroManager.UpdateWarWayData(this.heroData.dynamicId, this.slot, nextId, true) RoleInfoPanel:UpdatePanelData() self:UpdateUI() end) end end else PopupTipPanel.ShowTipByLanguageId(10455) end end) end --添加事件监听(用于子类重写) function WarWayLevelUpPopup:AddListener() end --移除事件监听(用于子类重写) function WarWayLevelUpPopup:RemoveListener() end --界面打开时调用(用于子类重写) function WarWayLevelUpPopup:OnOpen(...) local args = {...} this.heroData = args[1] this.slot = args[2] this.warWaySlotId = args[3] self.isEnoughMaterials = true end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function WarWayLevelUpPopup:OnShow() self:UpdateUI() end function WarWayLevelUpPopup:UpdateUI() local warWaySlotId = this.heroData[string.format("warWaySlot%dId", this.slot)] local warWayConfig = WarWaySkillConfig[warWaySlotId] --local cost=WarWaySkillConfig[warWaySlotId+1] local function setIcon(go, warWayConfig) Util.GetGameObject(go, "icon"):GetComponent("Image").sprite = Util.LoadSprite(GetResourceStr(warWayConfig.Image)) local passiveConfig = PassiveSkillConfig[warWayConfig.SkillId] Util.GetGameObject(go, "Name"):GetComponent("Text").text = GetLanguageStrById(passiveConfig.Name) Util.GetGameObject(go, "Desc"):GetComponent("Text").text = GetLanguageStrById(passiveConfig.Desc) Util.AddOnceClick(Util.GetGameObject(go, "frame"), function() UIManager.OpenPanel(UIName.CommonInfoPopup, CommonInfoType.WarWay, Util.GetGameObject(go, "frame"), warWayConfig.ID) end) end setIcon(this.CurWarWay, warWayConfig) this.NeedStar:SetActive(false) if warWayConfig.Level >= 4 then --> max this.UpWarWay:SetActive(false) this.CostPart:SetActive(false) this.LevelUpBtn:SetActive(false) this.Top:SetActive(true) return else this.UpWarWay:SetActive(true) this.CostPart:SetActive(true) this.LevelUpBtn:SetActive(true) this.Top:SetActive(false) end local nextId = tonumber(tostring(warWayConfig.WarWayGroup) .. tostring(warWayConfig.Level + 1)) local warWayConfigNext = WarWaySkillConfig[nextId] setIcon(this.UpWarWay, warWayConfigNext) --> materials for i = 1, 2 do --< 目前支持俩 local costgo = Util.GetGameObject(this.CostPart, "cost" .. tostring(i)) if #warWayConfigNext.UpgradeCost >= i then local itemid = warWayConfigNext.UpgradeCost[i][1] local itemnum = warWayConfigNext.UpgradeCost[i][2] local icon = Util.GetGameObject(costgo, "icon") local Name = Util.GetGameObject(costgo, "Name") local Num = Util.GetGameObject(costgo, "Num") local frame = Util.GetGameObject(costgo, "frame") local itemData = ItemConfig[itemid] frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(itemData.Quantity)) icon:GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(itemData.ResourceID)) Name:GetComponent("Text").text = GetLanguageStrById(itemData.Name) local ownNum = BagManager.GetItemCountById(itemid) Num:GetComponent("Text").text = GetNumUnenoughColor(ownNum, itemnum, PrintWanNum2(ownNum), PrintWanNum2(itemnum)) ItemImageTips(itemid, icon) if ownNum < itemnum then self.isEnoughMaterials = false end costgo:SetActive(true) else costgo:SetActive(false) end end if warWayConfigNext.TankStarLimit == 0 then else this.NeedStar:SetActive(true) if this.heroData.star >= warWayConfigNext.TankStarLimit then this.NeedStar:GetComponent("Text").text = string.format("%s", GetLanguageStrById(50340) .. this.heroData.star .. "/" .. warWayConfigNext.TankStarLimit) else this.NeedStar:GetComponent("Text").text = string.format("%s", GetLanguageStrById(50340) .. this.heroData.star .. "/" .. warWayConfigNext.TankStarLimit) end end end --界面关闭时调用(用于子类重写) function WarWayLevelUpPopup:OnClose() end --界面销毁时调用(用于子类重写) function WarWayLevelUpPopup:OnDestroy() end return WarWayLevelUpPopup