419 lines
18 KiB
Lua
419 lines
18 KiB
Lua
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 = Language[10202],
|
|
rpType = RedPointType.tailsmanSoul_gold,
|
|
quality = 5
|
|
},
|
|
[2] = { --红色
|
|
default = "r_hero_xuanze_002",
|
|
lock = "r_hero_xuanze_002",
|
|
select = "r_hero_xuanze_001",
|
|
tabName = Language[10203],
|
|
rpType = RedPointType.tailsmanSoul_red,
|
|
quality = 6
|
|
},
|
|
[3] = { --白金
|
|
default = "r_hero_xuanze_002",
|
|
lock = "r_hero_xuanze_002",
|
|
select = "r_hero_xuanze_001",
|
|
tabName = Language[12896],
|
|
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")
|
|
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(Language[12897])
|
|
return
|
|
end
|
|
local s = function(data, data2)
|
|
local lis1 = {}
|
|
for k, v in pairs(data) do
|
|
table.insert(lis1,
|
|
{
|
|
str = string.format(Language[12898], GetLanguageStrById(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 = Language[12899]
|
|
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 = Language[12900]
|
|
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, Language[12901], ""),
|
|
GetPropertyFormatStr(propertyConfig[v[1]].Style, v[2]))
|
|
else
|
|
proStr = proStr ..
|
|
string.format(",%s+%s", string.gsub(propertyConfig[v[1]].Info, Language[12901], ""),
|
|
GetPropertyFormatStr(propertyConfig[v[1]].Style, v[2]))
|
|
end
|
|
end
|
|
|
|
local str = ""
|
|
local color = "B9AC97"
|
|
if star >= starNum then
|
|
color = "00FF00"
|
|
end
|
|
str = string.format(Language[12902], 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
|
|
self.selectBtn.transform:SetAsFirstSibling()
|
|
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(proId)
|
|
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)
|
|
CheckRedPointStatus(RedPointType.tailsmanSoul_gold)
|
|
CheckRedPointStatus(RedPointType.tailsmanSoul_red)
|
|
CheckRedPointStatus(RedPointType.tailsmanSoul_whiteGold)
|
|
CheckRedPointStatus(RedPointType.tailsmanSoul_blue)
|
|
CheckRedPointStatus(RedPointType.tailsmanSoul_whiteBlue)
|
|
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()
|
|
proId = 1
|
|
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
|