miduo_client/Assets/ManagedResources/~Lua/Modules/TailsManSoul/TailsManSouPanel.lua

384 lines
17 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.

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"}
local special=ConfigManager.GetConfigData(ConfigName.SpecialConfig,177)
local pro=tonumber(special.Value)/100
-- 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
local addLv=0
--初始化组件(用于子类重写)
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")
Util.GetGameObject(self.gameObject,"bg/NoneImage/TextImage/Text"):GetComponent("Text").text="无符合要求的羁绊!"
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()
local li2= TailsManSoulManager.GetTailsmanTotalProNoAdd()
if not li or #li < 1 then
PopupTipPanel.ShowTip("当前无属性加成")
return
end
local s = function(data,data2)
local lis1 = {}
for k,v in pairs(data) do
table.insert(lis1,{str = string.format("<color=#9E6828>%s+%s 法宝共鸣额外加成%s (%s%%)</color>",propertyConfig[k].Info,GetPropertyFormatStr(propertyConfig[k].Style,v),GetPropertyFormatStr(propertyConfig[k].Style,v-data2[k]),addLv*pro),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,li2)
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.IncarnationDes2,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("<size=32><color=#%s>%s/%s星%s</color></size>",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.transform:SetSiblingIndex(2)
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()
addLv=0
for i=1,5 do
local curData = TailsManSoulManager.GetTailsmanSoulDatasByPro(i)
for j=1,#curData do
--LogError("curData.lv=========="..curData[j].lv)
if curData[j].lv>0 then
addLv=addLv+curData[j].lv
end
end
end
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