require("Base/BasePanel") local spcialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig) local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig) local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) RoleGiftPanel = Inherit(BasePanel) local isGonming = 0 local tableName = { Language[12684], Language[10228] } local isUpZhen = false local this = RoleGiftPanel local indexBtnNum = 0 local tabs = {} local redTabs = {} local curHeroData = nil local teamHero local v1 local allUpIds = {} local upSuitId = {} local allEquip = {} local index = 0 local lv, curNum, maxNum local heroListData local isDown = false --初始化组件(用于子类重写)RoleEquipChangePopup function RoleGiftPanel:InitComponent() this.spLoader = SpriteLoader.New() this.bg2 = Util.GetGameObject(self.transform, "bg2") screenAdapte(this.bg2) this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft }) this.btnBack = Util.GetGameObject(self.transform, "btnBack/btnBack") for i = 1, 2 do tabs[i] = Util.GetGameObject(self.transform, "Tabs/Btn" .. i) local nameTxt = Util.GetGameObject(tabs[i], "Text"):GetComponent("Text") nameTxt.fontSize = 40 nameTxt.text = tableName[i] redTabs[i] = Util.GetGameObject(tabs[i], "red") if i == 2 then tabs[i]:SetActive(false) end --effectList[i] = Util.GetGameObject(self.transform, "bg/equipInfo/equip" .. i .. "/effect") end this.titleTxt = Util.GetGameObject(self.gameObject, "title"):GetComponent("Text") this.titleTxt.text = Language[12729] this.selectBtn = Util.GetGameObject(self.gameObject, "selectBtn") this.btnPrant = Util.GetGameObject(self.gameObject, "Tabs") this.equipPreList2 = {} this.equipPreList = {} this.equipPre = Util.GetGameObject(self.gameObject, "equipPre") this.upItemPre = Util.GetGameObject(self.gameObject, "upItemPre") this.grid = Util.GetGameObject(self.gameObject, "scroll/grid") this.selsectSkillImage = Util.GetGameObject(self.gameObject, "selsectSkillImage") this.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject") this.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject") this.allEquipUp = Util.GetGameObject(self.transform, "allEquipUp") this.allEquipDown = Util.GetGameObject(self.transform, "allEquipDown") this.allEquipUpRedPoint = Util.GetGameObject(self.transform, "allEquipUp/redPoint") this.allEquipUpRedPoint:SetActive(false) this.ScrollBar = Util.GetGameObject(self.gameObject, "listObj/bg/Scrollbar"):GetComponent("Scrollbar") local v2 = Util.GetGameObject(self.gameObject, "listObj/bg/scroll"):GetComponent("RectTransform").rect this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "listObj/bg/scroll").transform, this.equipPre, this.ScrollBar, Vector2.New(v2.width, v2.height), 1, 4, Vector2.New(40, 15)) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 v1 = Util.GetGameObject(self.gameObject, "upScroll"):GetComponent("RectTransform").rect this.UpScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "upScroll").transform, this.upItemPre, nil, Vector2.New(v1.width, v1.height), 1, 4, Vector2.New(50, 42)) this.UpScrollView.moveTween.MomentumAmount = 1 this.UpScrollView.moveTween.Strength = 1 Util.GetGameObject(self.transform, "powerBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite( "t_tongyong-zhanli_zh") this.force = Util.GetGameObject(self.transform, "powerBtn/value"):GetComponent("Text") this.itemNumText = Util.GetGameObject(self.transform, "itemNumText"):GetComponent("Text") this.upLvEffect = Util.GetGameObject(self.transform, "powerBtn/effect") this.emptyObj = Util.GetGameObject(self.transform, "listObj/bg/emptyObj") this.emptyObj.gameObject:SetActive(false) this.mask = Util.GetGameObject(self.gameObject, "mask") this.mask:SetActive(false) this.collectImg = Util.GetGameObject(self.gameObject, "collectImg"):GetComponent("Image") this.lvTxt = Util.GetGameObject(self.gameObject, "lvTxt"):GetComponent("Text") this.collectImg.sprite = this.spLoader:LoadSprite("gh_tt_8") this.btn_help = Util.GetGameObject(self.gameObject, "btn_help") this.listObj = Util.GetGameObject(self.transform, "listObj") this.listCloseBtn = Util.GetGameObject(self.transform, "listObj/bg/btn_close") Util.GetGameObject(self.transform, "listObj/bg/title (1)"):GetComponent("Text").text = Language[12729] this.proTitle = Util.GetGameObject(self.transform, "proTitle/name/text"):GetComponent("Text") this.proTitle.text = Language[12730] this.proGrid = Util.GetGameObject(self.transform, "pro") this.proPre = Util.GetGameObject(self.transform, "pro/name") this.tipInfo = Util.GetGameObject(self.transform, "tipInfo"):GetComponent("Text") this.proEmptyObj = Util.GetGameObject(self.transform, "proEmptyObj") Util.GetGameObject(self.transform, "proEmptyObj/TextImage/Text"):GetComponent("Text").text = Language[12687] end --绑定事件(用于子类重写) function RoleGiftPanel:BindEvent() Util.AddClick(this.listCloseBtn, function() this.listObj:SetActive(false) end) Util.AddClick(this.btn_help, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Gift, 0, 0) end) Util.AddClick(this.collectImg.gameObject, function() -- local data = {} -- local singData = {} -- singData.title = "当前礼物总加成" -- singData.pro = IncarnationManager.GetproDesLst(GiftManager.GetHeroGiftAddPro(curHeroData.dynamicId),"00FF00") -- singData.tip ="" --"总加成包括化身之力提供的属性" -- table.insert(data,singData) -- UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.IncarnationDes,data) end) Util.AddClick(this.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) Util.AddClick(this.leftBtn, function() index = (index - 1 > 0 and index - 1 or #heroListData) curHeroData = heroListData[index] this.RefreshWindowData() end) Util.AddClick(this.rightBtn, function() index = (index + 1 <= #heroListData and index + 1 or 1) curHeroData = heroListData[index] this.RefreshWindowData() end) Util.AddOnceClick(this.allEquipUp, function() local canNum = curNum - #allUpIds if canNum > 0 then local list = {} table.sort(allEquip, function(a, b) return equipConfig[a.id].ExhibitionScore > equipConfig[b.id].ExhibitionScore end) for i = 1, #allEquip do if i <= canNum then if CheckListIsContainValue1(allUpIds, allEquip[i].id) == false and CheckListIsContainValue1(upSuitId, equipConfig[allEquip[i].id].SuiteID) == false then table.insert(list, allEquip[i].id) table.insert(upSuitId, equipConfig[allEquip[i].id].SuiteID) end end end NetManager.GiftEquipWearRequest(1, curHeroData.dynamicId, list, function() GiftManager.SetHeroGift(curHeroData.dynamicId, list, 1) this.RefreshWindowData() end) end end) Util.AddOnceClick(this.allEquipDown, function() isDown = true NetManager.GiftEquipWearRequest(2, curHeroData.dynamicId, allUpIds, function() isDown = false GiftManager.SetHeroGift(curHeroData.dynamicId, allUpIds, 2) this.RefreshWindowData() end) end) for i = 1, 2 do Util.AddClick(tabs[i], function() -- isPlayAnim = true if i == indexBtnNum then return end indexBtnNum = i this:OnClickTabBtn(indexBtnNum) end) end end --添加事件监听(用于子类重写) function RoleGiftPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.RefreshWindowData) end --移除事件监听(用于子类重写) function RoleGiftPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.RefreshWindowData) end --界面打开时调用(用于子类重写) function RoleGiftPanel:OnOpen(...) local data = { ... } curHeroData = data[1] if data[2] then heroListData = data[2] else heroListData = HeroManager.GetAllHeroDatas() end this.listObj:SetActive(false) end function RoleGiftPanel:OnShow() for i = 1, #heroListData do if curHeroData == heroListData[i] then index = i end end teamHero = FormationManager.GetAllMainFormationHeroId() this.RefreshWindowData() end function this:OnSortingOrderChange() end function this.RefreshWindowData() local WarPower = 0 if isDown then return end isUpZhen = teamHero[curHeroData.dynamicId] if isUpZhen then WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL) else WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId) end this.force.text = WarPower --显示上面赠送的 local list = GiftManager.GetHeroGifts(curHeroData.dynamicId) lv, curNum, maxNum = GiftManager.GetCollectLvAndNum() if #list >= 50 then curNum = #list + 6 maxNum = #list + 6 else curNum = 50 maxNum = 50 end this.lvTxt.text = Language[12731] .. lv .. Language[10065] LogError("lv=========" .. lv .. " curnum==" .. curNum .. " maxNum==" .. maxNum) --maxNum=0 local giftDatas = {} allUpIds = {} upSuitId = {} for i = 1, maxNum do local data = {} data.type = 1 data.qua = 0 data.id = 0 data.isRed = false if i <= #list then data.type = 2 data.id = list[i] data.qua = itemConfig[list[i]].Quantity table.insert(allUpIds, data.id) table.insert(upSuitId, equipConfig[data.id].SuiteID) else data.isRed = GiftManager.CheckRoleRedPointById(curHeroData.dynamicId) end table.insert(giftDatas, data) end table.sort(giftDatas, function(a, b) if a.type == b.type then if a.qua and a.qua == b.qua then return a.id < b.id else return a.qua > b.qua end else return a.type > b.type end end) this.UpScrollView:SetData(giftDatas, function(index, go) this.SingleUpItemShow(go, giftDatas[index], index) end ) local proList = IncarnationManager.GetproDesLst(GiftManager.GetHeroGiftAddPro(curHeroData.dynamicId), "00FF00") table.insert(proList, string.format(Language[12732], GiftManager.GetHeroGiftAddPotencyLv(curHeroData.dynamicId))) local originalList = GiftManager.GetHeroGiftAddOriginalPro(curHeroData.dynamicId) if proList and #proList > 0 then this.proGrid:SetActive(true) this.proEmptyObj:SetActive(false) local len = this.proGrid.transform.childCount local create = #proList - len if create > 0 then for i = 1, create do newObjToParent(this.proPre, this.proGrid) end end len = this.proGrid.transform.childCount for i = 1, len do if i <= #proList - 1 then this.proGrid.transform:GetChild(i - 1).gameObject:SetActive(true) LogError("originalList[i]======================" .. originalList[i]) this.proGrid.transform:GetChild(i - 1):GetComponent("Text").text = proList[i] .. string.format(GetLanguageStrById(Language[12733]), math.floor(originalList[i] * GiftManager.GetPlayerGiftAdd() / 100), GiftManager.GetPlayerGiftAdd()) .. string.format(GetLanguageStrById(Language[12183]), math.floor(originalList[i] * HeroManager.ReturnGiftAtt()), HeroManager.ReturnGiftAtt()) elseif i == #proList then this.proGrid.transform:GetChild(i - 1).gameObject:SetActive(true) this.proGrid.transform:GetChild(i - 1):GetComponent("Text").text = proList[i] else this.proGrid.transform:GetChild(i - 1).gameObject:SetActive(false) end end else this.proGrid:SetActive(false) this.proEmptyObj:SetActive(true) end --this.tipInfo.text=string.format("神将潜能等级+%s",GiftManager.GetHeroGiftAddPotencyLv(curHeroData.dynamicId)) --显示下面可赠送的 this:OnClickTabBtn(1) end --显示上面几个 function this.SingleUpItemShow(_go, data, _index) _go:SetActive(true) _go.transform:SetAsFirstSibling() local frame = _go:GetComponent("Image") local icon = Util.GetGameObject(_go, "icon"):GetComponent("Image") local name = Util.GetGameObject(_go, "name"):GetComponent("Text") local lockObj = Util.GetGameObject(_go, "lock") local lockText = Util.GetGameObject(_go, "Text"):GetComponent("Text") local add = Util.GetGameObject(_go, "add") local red = Util.GetGameObject(_go, "red") local starGrid = Util.GetGameObject(_go, "starGrid") if data.id and data.id ~= 0 then red:SetActive(false) frame.sprite = this.spLoader:LoadSprite(GetQuantityImageByquality(itemConfig[data.id].Quantity)) icon.gameObject:SetActive(true) name.gameObject:SetActive(true) lockObj:SetActive(false) starGrid:SetActive(true) lockText.gameObject:SetActive(false) add:SetActive(false) name.text = SubString2(GetLanguageStrById(itemConfig[data.id].Name), 8) icon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig[data.id].ResourceID)) SetHeroStars(this.spLoader, starGrid, equipConfig[data.id].Star, 1, nil, -15) Util.AddOnceClick(icon.gameObject, function() if curHeroData == nil then return end BagManager.isBagPanel = false UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2, this, data, 2, false, nil, curHeroData, 4) end ) else frame.sprite = this.spLoader:LoadSprite("r_characterbg_blue") icon.gameObject:SetActive(false) name.gameObject:SetActive(false) starGrid:SetActive(false) if _index > curNum then lockObj:SetActive(true) add:SetActive(false) red:SetActive(false) lockText.gameObject:SetActive(true) lockText.text = Language[12731] .. lv + 1 .. Language[10056] else lockObj:SetActive(false) lockText.gameObject:SetActive(false) add:SetActive(true) red:SetActive(data.isRed) end end Util.AddOnceClick(add, function() this.listObj:SetActive(true) end) end --点击装备按钮 function this:OnClickTabBtn(_index) indexBtnNum = _index this:SetSelectBtn() allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.HeroGift) -- this:SortEquipDatas(allEquip) local count = 0 for i = 1, #allEquip do count = count + 1 if CheckListIsContainValue1(allUpIds, allEquip[i].id) or CheckListIsContainValue1(upSuitId, equipConfig[allEquip[i].id].SuiteID) then allEquip[i].isUp = 1 else allEquip[i].isUp = 2 end end table.sort(allEquip, function(a, b) if a.isUp == b.isUp then if a.quality == b.quality then return a.id < b.id else return a.quality > b.quality end else return a.isUp > b.isUp end end) --"装备数量:" this.itemNumText.text = Language[12690] .. count this:SetItemData(allEquip) --this.CheckRedTab() end function this:SetItemData(_itemDatas) if LengthOfTable(_itemDatas) == 0 then this.emptyObj.gameObject:SetActive(true) else this.emptyObj.gameObject:SetActive(false) end for k, v in pairs(this.equipPreList) do v.gameObject:SetActive(false) end this.ScrollView:SetData( _itemDatas, function(index, go) this.SingleItemDataShow(go, _itemDatas[index]) end ) end function this.SingleItemDataShow(_go, _itemData) if not itemConfig[_itemData.id] then return end if not this.equipPreList[_go] then this.equipPreList[_go] = SubUIManager.Open(SubUIConfig.ItemView, _go.transform) end local redPoint = Util.GetGameObject(_go.transform, "redPoint") local tip = Util.GetGameObject(_go.transform, "tip") tip:SetActive(_itemData.isUp == 1) local isHave = CheckListIsContainValue1(allUpIds, _itemData.id) or CheckListIsContainValue1(upSuitId, equipConfig[_itemData.id].SuiteID) redPoint:SetActive(isHave == false and curNum > #allUpIds) this.equipPreList[_go].gameObject:SetActive(true) this.equipPreList[_go].transform:SetAsFirstSibling() this.equipPreList[_go]:ResetNameColor(Color.New(255 / 255, 255 / 255, 255 / 255, 1)) --if itemConfig[_itemData.id].ItemType == ItemType.Equip then this.equipPreList[_go]:OnOpen(false, { _itemData.id, _itemData.num }, 1.1, true, false, false, this.sortingOrder + 1, _itemData.idDyn) -- 0.查看属性 1.穿戴 2.卸下 3.交换 --宝物界面 Util.AddOnceClick(Util.GetGameObject(_go.transform, "mask"), function() BagManager.isBagPanel = true if isHave then UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2, this, _itemData, 6, false, nil, curHeroData, 4) else UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2, this, _itemData, 3, false, nil, curHeroData, 4) end end ) --end end function this:SetSelectBtn() this.selectBtn:SetActive(true) this.selectBtn.transform:SetParent(tabs[indexBtnNum].transform) this.selectBtn:GetComponent("RectTransform").anchoredPosition3D = Vector3(-12.28, 1.08, 0) this.selectBtn.transform:SetSiblingIndex(1) Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = GetCurLanguage() == -1 and tableName[indexBtnNum] or "" .. tableName[indexBtnNum] .. "" --typeTab[indexBtnNum] end --选择图片设置父级 function this.SelectImageSetParent(_objPoint) this.selsectSkillImage:SetActive(false) this.selsectSkillImage.transform:SetParent(_objPoint.transform) this.selsectSkillImage.transform.localScale = Vector3.one this.selsectSkillImage.transform.localPosition = Vector3.zero end --界面关闭时调用(用于子类重写) function RoleGiftPanel:OnClose() BagManager.isBagPanel = false end --界面销毁时调用(用于子类重写) function RoleGiftPanel:OnDestroy() end return RoleGiftPanel