require("Base/BasePanel") GodWeaponInfoPanel = Inherit(BasePanel) local this = GodWeaponInfoPanel local godwData --初始化组件(用于子类重写) function this:InitComponent() this.btnBack = Util.GetGameObject(self.gameObject, "btnBack") this.leftBtn = Util.GetGameObject(self.gameObject, "leftBtn/btn") this.rightBtn = Util.GetGameObject(self.gameObject, "rightBtn/btn") this.spLoader = SpriteLoader.New() this.icon = Util.GetGameObject(self.gameObject, "iconBg/icon"):GetComponent("Image") this.nameText = Util.GetGameObject(self.gameObject, "nameInfo/nameText"):GetComponent("Text") this.starGrid = Util.GetGameObject(self.gameObject, "starGrid/starGrid") this.propGrid = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/grid") this.upStarBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/upStarBtn") this.upLvBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/upLvBtn") this.resetBtn = Util.GetGameObject(self.gameObject, "infoLayout/propertyInfo/resetBtn") this.skillGrid = Util.GetGameObject(self.gameObject, "infoLayout/skill/scroll/grid") this.unloadBtn = Util.GetGameObject(self.gameObject, "infoLayout/unloadBtn") this.changeBtn = Util.GetGameObject(self.gameObject, "infoLayout/changeBtn") this.upLvBtnRedPoint = Util.GetGameObject(this.upLvBtn, "redPoint") this.upStarBtnRedPoint = Util.GetGameObject(this.upStarBtn, "redPoint") end --绑定事件(用于子类重写) function this:BindEvent() Util.AddClick(this.btnBack, function() self:ClosePanel() end) Util.AddClick(this.leftBtn, function() local posIndex = 1 local allTeam = GodWeaponManager.GetAllTeamWeapon() local posList = GodWeaponManager.GetAllTeamWeaponPos() for i = 1, #posList do if godwData.point == posList[i] then posIndex = i end end posIndex = posIndex - 1 if posIndex <= 0 then posIndex = #posList end local _data = allTeam[posList[posIndex]] this.UpdateWin(_data) end) Util.AddClick(this.rightBtn, function() local posIndex = 1 local allTeam = GodWeaponManager.GetAllTeamWeapon() local posList = GodWeaponManager.GetAllTeamWeaponPos() for i = 1, #posList do if godwData.point == posList[i] then posIndex = i end end posIndex = posIndex + 1 if posIndex > #posList then posIndex = 1 end local _data = allTeam[posList[posIndex]] this.UpdateWin(_data) end) Util.AddClick(this.upLvBtn, function() UIManager.OpenPanel(UIName.GodWeaponUpPanel, 1, godwData) end) Util.AddClick(this.upStarBtn, function() UIManager.OpenPanel(UIName.GodWeaponUpPanel, 2, godwData) end) Util.AddClick(this.unloadBtn, function() local oldWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) NetManager.RequestMagicSoldierLocation(godwData.Did, 0, function() PopupTipPanel.ShowTip(Language[11188]) this.unloadBtn.gameObject:SetActive(false) this.changeBtn.gameObject:SetActive(false) GodWeaponManager.SetWeaponUpZhen(godwData.Did, 0) local newWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) --飘战力 PokemonManager.PiaoWarPowerChange(oldWarPower, newWarPower) CheckRedPointStatus(RedPointType.GodWeapon) end) end) Util.AddClick(this.changeBtn, function() UIManager.OpenPanel(UIName.GodWeaponListPanel, 1, godwData, godwData.point) end) Util.AddClick(this.resetBtn, function() this.ResetBtnOnClick() end) end --添加事件监听(用于子类重写) function this:AddListener() Game.GlobalEvent:AddEvent(GameEvent.GodWeapon.RefreshGodWeaponInfoPanel, this.UpdateWin) end --移除事件监听(用于子类重写) function this:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.GodWeapon.RefreshGodWeaponInfoPanel, this.UpdateWin) end --界面打开时调用(用于子类重写) function this:OnOpen(_data) this.UpdateWin(_data) end function this:OnShow() local newData = GodWeaponManager.GetSingleWeaponData(godwData.Did) this.UpdateWin(newData) end function this.UpdateWin(_data) if _data.point and _data.point > 0 then this.unloadBtn.gameObject:SetActive(true) this.changeBtn.gameObject:SetActive(true) this.leftBtn.gameObject:SetActive(true) this.rightBtn.gameObject:SetActive(true) else this.unloadBtn.gameObject:SetActive(false) this.changeBtn.gameObject:SetActive(false) this.leftBtn.gameObject:SetActive(false) this.rightBtn.gameObject:SetActive(false) end godwData = _data local upLvRed = GodWeaponManager.CheckUpLvRedPoint(godwData) this.upLvBtnRedPoint:SetActive(upLvRed) local upStarRed = GodWeaponManager.CheckUpStarRedPoint(godwData) this.upStarBtnRedPoint:SetActive(upStarRed) this.icon.sprite = this.spLoader:LoadSprite(GetResourcePath(_data.config.Icon)) this.nameText.text = GetLanguageStrById(_data.config.Name) local starSize = Vector2.New(65, 65) PokemonManager.SetHeroStars(this.spLoader, this.starGrid, _data.star, 1, starSize) local allPropDic = GodWeaponManager.GetSinglePokemonAddProData(_data.Did, _data.star) local propInfoList = {} propInfoList[1] = {} propInfoList[1].name = Language[10539] propInfoList[1].val = _data.lv propInfoList[2] = {} propInfoList[2].name = Language[10788] propInfoList[2].val = _data.star local index = 3 for key, value in pairs(allPropDic) do propInfoList[index] = {} local propConfig = ConfigManager.GetConfigData(ConfigName.PropertyConfig, key) propInfoList[index].name = propConfig.Info propInfoList[index].val = value index = index + 1 end for i = 1, this.propGrid.transform.childCount do local propText = this.propGrid.transform:GetChild(i - 1).gameObject if i > #propInfoList then propText:SetActive(false) else propText:SetActive(true) propText:GetComponent("Text").text = GetLanguageStrById(propInfoList[i].name) Util.GetGameObject(propText, "val"):GetComponent("Text").text = propInfoList[i].val end end local skillInfo = GodWeaponManager.GetSingleGodWeaponSkillDes(_data.Did) for i = 1, this.skillGrid.transform.childCount do local skillObj = this.skillGrid.transform:GetChild(i - 1).gameObject if i > #skillInfo then skillObj:SetActive(false) else Util.GetGameObject(skillObj, "titleBg/title"):GetComponent("Text").text = GetLanguageStrById(skillInfo[i].title) Util.GetGameObject(skillObj, "titleBg/icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite( skillInfo[i].icon) Util.GetGameObject(skillObj, "des"):GetComponent("Text").text = GetLanguageStrById(skillInfo[i].des) skillObj:SetActive(true) local allSkillData = ConfigManager.GetAllConfigsDataByDoubleKey(ConfigName.ShenBingSkill, "SkillPanDuan", skillInfo[i].skillPanDuan, "SpiritAnimalMatch", _data.id) local helpBtn = Util.GetGameObject(skillObj, "titleBg/helpBtn") Util.AddOnceClick(helpBtn, function() UIManager.OpenPanel(UIName.GodWeaponSkillInfoPopup, skillInfo[i].title, allSkillData) end) end end LayoutRebuilder.ForceRebuildLayoutImmediate(this.skillGrid.transform) end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function this.ResetBtnOnClick() if godwData.point > 0 then PopupTipPanel.ShowTip(Language[11189]) return end if godwData.lv == 1 and godwData.star <= 0 then PopupTipPanel.ShowTip(Language[11190]) return end local lv = godwData.lv local star = godwData.star local qua = godwData.config.Quality --所有材料 local allMaterials = {} --升级消耗 local lvConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenBingLevel, "Level", lv, "Quality", qua) if lvConfig then local matrs = lvConfig.SumConsume if matrs then for i = 1, #matrs do local mat = matrs[i] if mat[2] > 0 then table.insert(allMaterials, { mat[1], mat[2] }) end end end end --升星消耗 local lingshouConfig = ConfigManager.GetConfigData(ConfigName.ShenBing, godwData.id) if star > 0 then local starConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenbingStar, "Star", star, "Quality", qua) if starConfig then --消耗本体数量 if starConfig.SumItemNum >= 1 then table.insert(allMaterials, { godwData.id, starConfig.SumItemNum }) end end end UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.PokemonResolve, lingshouConfig, allMaterials, 2, function() NetManager.MagicSoldierReturnRequest(godwData.Did, function(msg) PopupTipPanel.ShowTip(Language[11191]) UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function() GodWeaponManager.ResetGodWeapon(godwData.Did, 1, 0) this.UpdateWin(GodWeaponManager.GetSingleWeaponData(godwData.Did)) end) end) end) end function this:OnSortingOrderChange() this.sortingOrder = self.sortingOrder end --界面关闭时调用(用于子类重写) function this:OnClose() end --界面销毁时调用(用于子类重写) function this:OnDestroy() this.spLoader:Destroy() end return this