require("Base/BasePanel") TailsManSouPanel = Inherit(BasePanel) local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local this = TailsManSouPanel local redPointList = {} local tabsRedpoints = {} local tabs={} local tabsImg = {"r_hero_huo 1_zh", "r_hero_feng 1_zh", "r_hero_shui 1_zh", "r_hero_dadi 1_zh"} -- Tab管理器 local TabBox = require("Modules/Common/TabBox") local tabData = { [1] = { --金色 default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "金色", rpType = RedPointType.tailsmanSoul_gold,quality = 5 }, [2] = { --红色 default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "红色", rpType = RedPointType.tailsmanSoul_red,quality = 6 }, [3] = { --白金 default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "白金", rpType = RedPointType.tailsmanSoul_whiteGold,bg = "t_tianshumijuan_lingshouditu",quality = 7 }, } local curData = {} local curPage = 1 local proId = 1 --初始化组件(用于子类重写) function TailsManSouPanel:InitComponent() this.spLoader = SpriteLoader.New() self.itemPreList = {} self.bg = Util.GetGameObject(self.gameObject,"bg"):GetComponent("Image") --self.tabbox = Util.GetGameObject(self.gameObject,"bg/tabbox") self.btnBack = Util.GetGameObject(self.gameObject,"bg/btnBack") self.selectBtn = Util.GetGameObject(self.gameObject,"bg/Tabs/selectBtn") self.fetterItem = Util.GetGameObject(self.gameObject,"fetterItem") local grid = Util.GetGameObject(self.gameObject,"bg/fetterGrid") local v21 = grid.transform.rect self.scroll = SubUIManager.Open(SubUIConfig.ScrollCycleView,grid.transform,self.fetterItem,nil,Vector2.New(v21.width, v21.height), 1, 1, Vector2.New(0,25)) self.scroll.moveTween.MomentumAmount = 1 self.scroll.moveTween.Strength = 2 self.empty = Util.GetGameObject(self.gameObject,"bg/NoneImage") self.addBtn = Util.GetGameObject(self.gameObject,"bg/add") self.starAddBtn = Util.GetGameObject(self.gameObject,"bg/starAdd") self.starAddBtn:SetActive(false) self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) self.effectJin = Util.GetGameObject(self.gameObject,"bg/effect/UI_effect_RecruitPanel_particle_jin") self.effectHong = Util.GetGameObject(self.gameObject,"bg/effect/UI_effect_RecruitPanel_particle_hong") for i = 1, 5 do tabs[i] = Util.GetGameObject(self.transform, "bg/Tabs/grid/Btn" .. i) tabsRedpoints[i] = Util.GetGameObject(tabs[i], "redpoint") local name =Util.GetGameObject(tabs[i], "Text"):GetComponent("Text") name.text = PropertyType[i] if tabsImg[i] then Util.GetGameObject(tabs[i], "Image"):GetComponent("Image").sprite = self.spLoader:LoadSprite(tabsImg[i]) end end end --绑定事件(用于子类重写) function TailsManSouPanel:BindEvent() BindRedPointObject(RedPointType.tailsmanSoul_gold,tabsRedpoints[1].gameObject) BindRedPointObject(RedPointType.tailsmanSoul_red,tabsRedpoints[2].gameObject) BindRedPointObject(RedPointType.tailsmanSoul_whiteGold,tabsRedpoints[3].gameObject) BindRedPointObject(RedPointType.tailsmanSoul_blue,tabsRedpoints[4].gameObject) BindRedPointObject(RedPointType.tailsmanSoul_whiteBlue,tabsRedpoints[5].gameObject) for i = 1,5 do Util.AddClick(tabs[i], function() if i == proId then return end proId = i self:SetSelectBtn() curData = TailsManSoulManager.GetTailsmanSoulDatasByPro(proId) self:RefreshData() end) end Util.AddClick(self.btnBack, function() curPage = 1 self:ClosePanel() end) Util.AddClick(self.addBtn, function() local li = TailsManSoulManager.GetTailsmanTotalPro() if not li or #li < 1 then PopupTipPanel.ShowTip("当前无属性加成") return end local s = function(data) local lis1 = {} for k,v in pairs(data) do table.insert(lis1,{str = string.format("%s+%s",propertyConfig[k].Info,GetPropertyFormatStr(propertyConfig[k].Style,v)),sort = propertyConfig[k].SortId}) end table.sort(lis1,function(a,b) return a.sort < b.sort end) local list2 = {} for i = 1,#lis1 do table.insert(list2,lis1[i].str) end return list2 end local data = {} local singData = {} singData.title = "加成属性" singData.pro = s(li) singData.tip = "" table.insert(data,singData) -- for i = 1 ,#data do -- LogGreen("data[i]:"..data[i].title.." #pro:"..#data[i].pro) -- for k,v in ipairs(data[i].pro) do -- LogGreen("data[i]:"..v) -- end -- end UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.IncarnationDes,data) -- local li = TailsManSoulManager.GetTailsmanTotalPro() -- local li2 = {} -- for k,v in pairs(li) do -- if propertyConfig[k].Style == 1 then -- li2[k] = v -- elseif propertyConfig[k].Style == 2 then -- li2[k] = v/100 -- end -- end -- UIManager.OpenPanel(UIName.RoleProInfoPopup,li2,nil,false,nil) end) Util.AddClick(self.starAddBtn, function() local data = {} local singData = {} singData.title = "总星级加成" singData.pro = {} local star = TailsManSoulManager.GetTotalStar() local s = function(skillList,starNum) local proStr = "" for k,v in ipairs(skillList) do if proStr == "" then proStr = string.format("%s+%s",string.gsub(propertyConfig[v[1]].Info,"几率", ""),GetPropertyFormatStr(propertyConfig[v[1]].Style,v[2])) else proStr = proStr.. string.format(",%s+%s",string.gsub(propertyConfig[v[1]].Info,"几率", ""),GetPropertyFormatStr(propertyConfig[v[1]].Style,v[2])) end end local str = "" local color = "B9AC97" if star >= starNum then color = "00FF00" end str = string.format("%s/%s星:%s",color,star,starNum,proStr) return str end for k,v in ConfigPairs(ConfigManager.GetConfig(ConfigName.TrumpStar)) do local str = s(v.PropListShow,v.StarNum) table.insert(singData.pro,str) end table.insert(data,singData) UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.ShenHunShuXing,data) end) -- self.tabBox = TabBox.New() -- self.tabBox:SetTabAdapter(self.SetTabAdapter) -- self.tabBox:SetTabIsLockCheck(self.TabIsLockCheck) -- self.tabBox:SetChangeTabCallBack(self.SetChangeTabCallBack) end function TailsManSouPanel:RefreshList(istop,isAnim) self.datas = IncarnationManager.GetItemDataListByPro(proId) self.scroll:ForeachItemGO(function(index,go) go.gameObject:SetActive(false) end) if not self.datas or #self.datas < 1 then self.empty.gameObject:SetActive(true) self.scroll.gameObject:SetActive(false) else self.empty.gameObject:SetActive(false) self.scroll.gameObject:SetActive(true) self.scroll:SetData(self.datas,function(index,go) self:SetSingleData(go,self.datas[index],index) end,istop,isAnim) end end function TailsManSouPanel:SetSelectBtn() self.selectBtn.transform:SetParent(tabs[proId].transform) self.selectBtn:GetComponent("RectTransform").localPosition = Vector3.zero end -- function TailsManSouPanel.SetTabAdapter(newTab, index, status) -- local img = Util.GetGameObject(newTab.gameObject,"img"):GetComponent("Image") -- local redpot = Util.GetGameObject(newTab.gameObject,"redpot") -- local tabName = Util.GetGameObject(newTab.gameObject,"Text"):GetComponent("Text") -- local lock = Util.GetGameObject(newTab.gameObject,"lock") -- if tabs[index].rpType > 0 then -- if redPointList[tabs[index].rpType] then -- ClearRedPointObject(tabs[index].rpType,redPointList[tabs[index].rpType]) -- end -- BindRedPointObject(tabs[index].rpType,redpot) -- redPointList[tabs[index].rpType] = redpot -- end -- img.sprite = this.spLoader:LoadSprite(tabs[index][status]) -- tabName.text = tabs[index].tabName -- if status == "lock" then -- lock.gameObject:SetActive(true) -- else -- lock.gameObject:SetActive(false) -- end -- newTab.gameObject:SetActive(true) -- end -- function TailsManSouPanel.TabIsLockCheck(index) -- return false -- end -- function TailsManSouPanel.SetChangeTabCallBack(index) -- if curPage == index then -- return -- end -- curPage = index -- this:OnShow(self) -- end --添加事件监听(用于子类重写) function TailsManSouPanel:AddListener() end --移除事件监听(用于子类重写) function TailsManSouPanel:RemoveListener() end --界面打开时调用(用于子类重写) function TailsManSouPanel:OnOpen(...) local args = {...} curPage = args[1] or 2 end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function TailsManSouPanel:OnShow() self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) --self.tabBox:Init(self.tabbox.gameObject, tabs, curPage) curData = TailsManSoulManager.GetTailsmanSoulDatasByPro(1) self:RefreshData() self.effectJin.gameObject:SetActive(tabData[curPage].quality == 5) self.effectHong.gameObject:SetActive(tabData[curPage].quality == 6) Util.SetParticleSortLayer(self.effectJin.gameObject,self.sortingOrder + 1) Util.SetParticleSortLayer(self.effectHong.gameObject,self.sortingOrder + 1) end function TailsManSouPanel:RefreshData() self:SetSelectBtn() self.scroll:ForeachItemGO(function(index,go) go.gameObject:SetActive(false) end) if not curData or #curData < 1 then self.empty.gameObject:SetActive(true) self.scroll.gameObject:SetActive(false) else self.empty.gameObject:SetActive(false) self.scroll.gameObject:SetActive(true) self.scroll:SetData(curData,function(index,go) self:SetSingleData(go,curData[index],index) end) self.scroll:SetIndex(1) end end function TailsManSouPanel:SetSingleData(go,data,index) if not self.itemPreList[go] then self.itemPreList[go] = {} self.itemPreList[go].obj = Util.GetGameObject(go,"go") --self.itemPreList[go].effect = Util.GetGameObject(self.itemPreList[go].obj,"ui-fabao") self.itemPreList[go].bg = Util.GetGameObject(self.itemPreList[go].obj,"bg"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin --self.itemPreList[go].tip = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/tip"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin self.itemPreList[go].mask1 = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/mask1"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin self.itemPreList[go].mask2 = Util.GetGameObject(self.itemPreList[go].bg.transform,"slider/mask2"):GetComponent("Image") --根据品质变化的图片 f_fabaojuling_zhujiemianbaijin f_fabaojuling_zhujiemianhong f_fabaojuling_zhujiemianjin self.itemPreList[go].nameText = Util.GetGameObject(self.itemPreList[go].obj,"bg/nameDi"):GetComponent("Image") --名字图片 根据表读取 self.itemPreList[go].slider = Util.GetGameObject(self.itemPreList[go].obj,"bg/slider"):GetComponent("Slider") self.itemPreList[go].progress = Util.GetGameObject(self.itemPreList[go].slider.transform,"progress"):GetComponent("Text") self.itemPreList[go].red = Util.GetGameObject(self.itemPreList[go].bg.transform,"red") self.itemPreList[go].iconList = {} for i = 1,4 do self.itemPreList[go].iconList[i] = {} self.itemPreList[go].iconList[i].go = Util.GetGameObject(self.itemPreList[go].bg.transform,"compGrid/iconDi"..i) self.itemPreList[go].iconList[i].icon = Util.GetGameObject(self.itemPreList[go].iconList[i].go.transform,"icon"):GetComponent("Image") self.itemPreList[go].iconList[i].effecthong = Util.GetGameObject(self.itemPreList[go].iconList[i].go,"UI_Effect_Kuang_HongSe") self.itemPreList[go].iconList[i].effectjin = Util.GetGameObject(self.itemPreList[go].iconList[i].go,"UI_Effect_Kuang_JinSe") end end self.itemPreList[go].data = data if not data then go.gameObject:SetActive(false) return end go.gameObject:SetActive(true) self.itemPreList[go].bg.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].bg) --self.itemPreList[go].tip.sprite = this.spLoader:LoadSprite(GetTailsmanSoulDiImage[self.itemPreList[go].data.quality].tip) self.itemPreList[go].mask1.sprite = this.spLoader:LoadSprite("f_fabaojuling_huawenbaijin") self.itemPreList[go].mask2.sprite = this.spLoader:LoadSprite("f_fabaojuling_huawenbaijin") self.itemPreList[go].nameText.sprite = this.spLoader:LoadSprite(GetResourcePath(self.itemPreList[go].data.icon)) self.itemPreList[go].slider.value = self.itemPreList[go].data.lv/self.itemPreList[go].data.maxLv self.itemPreList[go].progress.text = self.itemPreList[go].data.lv.."/"..self.itemPreList[go].data.maxLv self.itemPreList[go].red.gameObject:SetActive(self:CheckRedPoint(self.itemPreList[go].data.trumpList)) --self.itemPreList[go].effect:SetActive(self.itemPreList[go].data.quality == 6) for i = 1,math.max(#data.trumpList,#self.itemPreList[go].iconList) do if not data.trumpList[i] then self.itemPreList[go].iconList[i].go.gameObject:SetActive(false) else self.itemPreList[go].iconList[i].go.gameObject:SetActive(true) self.itemPreList[go].iconList[i].icon.sprite = this.spLoader:LoadSprite(GetResourcePath(data.trumpList[i].config.Icon)) end self.itemPreList[go].iconList[i].effecthong.gameObject:SetActive(data.trumpList[i].config.Quality == 6) self.itemPreList[go].iconList[i].effectjin.gameObject:SetActive(data.trumpList[i].config.Quality == 5) end Util.SetParticleSortLayer(go,self.sortingOrder + 1) --Util.SetParticleSortLayer(self.itemPreList[go].effect,self.sortingOrder + 1) Util.AddOnceClick(go,function() UIManager.OpenPanel(UIName.TailsmanSoulMainPanel,self.itemPreList[go].data.id) end) end function TailsManSouPanel:CheckRedPoint(data) for k,v in pairs(data) do local costId,num = TailsManSoulManager.GetTailsmanCost(v.id,v.lv) if num and num > 0 then if BagManager.GetItemCountById(costId) >= num then return true end end end return false end --界面层级发生改变(用于子类重写) function TailsManSouPanel:OnSortingOrderChange() for k,v in pairs(self.itemPreList) do Util.SetParticleSortLayer(k,self.sortingOrder + 1) end Util.SetParticleSortLayer(self.effectJin.gameObject,self.sortingOrder + 1) Util.SetParticleSortLayer(self.effectHong.gameObject,self.sortingOrder + 1) end --界面关闭时调用(用于子类重写) function TailsManSouPanel:OnClose() end --界面销毁时调用(用于子类重写) function TailsManSouPanel:OnDestroy() this.spLoader:Destroy() for k,v in pairs(redPointList) do ClearRedPointObject(k,v) end SubUIManager.Close(self.scroll) self.itemPreList = {} redPointList = {} SubUIManager.Close(self.UpView) curPage = 1 ClearRedPointObject(RedPointType.tailsmanSoul_gold,tabsRedpoints[1].gameObject) ClearRedPointObject(RedPointType.tailsmanSoul_red,tabsRedpoints[2].gameObject) ClearRedPointObject(RedPointType.tailsmanSoul_whiteGold,tabsRedpoints[3].gameObject) ClearRedPointObject(RedPointType.tailsmanSoul_blue,tabsRedpoints[4].gameObject) ClearRedPointObject(RedPointType.tailsmanSoul_whiteBlue,tabsRedpoints[5].gameObject) end return TailsManSouPanel