151 lines
4.8 KiB
Lua
151 lines
4.8 KiB
Lua
require("Base/BasePanel")
|
|
HandBookRoleSkinPanel = Inherit(BasePanel)
|
|
local this = HandBookRoleSkinPanel
|
|
local porpertyConfigs = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
|
local artResConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
|
|
local skinPres = {}
|
|
local porpertys = {}
|
|
local curHeroData = {}
|
|
local curSkinId = 0
|
|
local parent = nil
|
|
local skins = {}
|
|
function HandBookRoleSkinPanel:InitComponent(gameObject)
|
|
this.gameObject = gameObject
|
|
this.skinPre = Util.GetGameObject(gameObject,"skinPre")
|
|
this.Select = Util.GetGameObject(gameObject,"selectLight")
|
|
this.skinGrid = Util.GetGameObject(gameObject,"skinGrid")
|
|
for i = 1, this.skinGrid.transform.childCount do
|
|
skinPres[i] = {}
|
|
skinPres[i].obj = this.skinGrid.transform:GetChild(i - 1)
|
|
skinPres[i].data = nil
|
|
end
|
|
return this
|
|
end
|
|
|
|
function HandBookRoleSkinPanel:BindEvent()
|
|
end
|
|
--添加事件监听(用于子类重写)
|
|
function HandBookRoleSkinPanel:AddListener()
|
|
|
|
end
|
|
--移除事件监听(用于子类重写)
|
|
function HandBookRoleSkinPanel:RemoveListener()
|
|
|
|
end
|
|
|
|
this.UpdateShow = this:OnShow()
|
|
|
|
--界面打开时调用
|
|
function HandBookRoleSkinPanel:OnShow(_sortinglayer,_parent,_curHerodata)
|
|
this.gameObject:SetActive(true)
|
|
curHeroData = _curHerodata
|
|
parent = _parent
|
|
curSkinId = 0
|
|
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.HeroSkin,"HeroId",curHeroData.Id)
|
|
local tempskins = {}
|
|
for i = 1 ,#configs do
|
|
LogGreen("configs[i].Type:"..configs[i].Type)
|
|
if not tempskins[configs[i].Type] then
|
|
tempskins[configs[i].Type] = configs[i]
|
|
end
|
|
end
|
|
skins = {}
|
|
for i,v in pairs(tempskins) do
|
|
table.insert(skins,v)
|
|
end
|
|
table.sort(skins,function(a,b)
|
|
if a.Type == b.Type then
|
|
return a.Id < b.Id
|
|
else
|
|
return a.Type < b.Type
|
|
end
|
|
end)
|
|
this:UpdateView()
|
|
end
|
|
|
|
function HandBookRoleSkinPanel:UpdateView()
|
|
for k,v in pairs(skinPres) do
|
|
v.obj.gameObject:SetActive(false)
|
|
v.data = nil
|
|
end
|
|
local index = 1
|
|
for i,v in ipairs(skins) do
|
|
if not skinPres[index] then
|
|
skinPres[index] = {}
|
|
end
|
|
if not skinPres[index].obj then
|
|
skinPres[index].obj = newObjToParent(this.skinPre,this.skinGrid)
|
|
end
|
|
skinPres[index].data = v
|
|
skinPres[index].obj.gameObject:SetActive(true)
|
|
self:SetSingleData(skinPres[index].obj,v)
|
|
index = index + 1
|
|
end
|
|
end
|
|
|
|
function HandBookRoleSkinPanel:SetSingleData(go,data)
|
|
local icon = Util.GetGameObject(go,"skinIcon"):GetComponent("Image")
|
|
local lock = Util.GetGameObject(go,"skinState").gameObject:SetActive(false)
|
|
local infoPre = Util.GetGameObject(go,"skinInfo/infoPre")
|
|
local infoGrid = Util.GetGameObject(go,"skinInfo/grid")
|
|
local skinName = Util.GetGameObject(go,"skinName/name"):GetComponent("Text")
|
|
skinName.text = GetLanguageStrById(data.ReadingName)
|
|
if data.IsDefault == 1 then
|
|
skinName.text = Language[11828]
|
|
end
|
|
icon.sprite = Util.LoadSprite(artResConfig[data.Painting].Name)
|
|
if not porpertys then
|
|
porpertys = {}
|
|
end
|
|
if not porpertys[go] then
|
|
porpertys[go] = {}
|
|
end
|
|
for i = 1, infoGrid.transform.childCount do
|
|
porpertys[go][i] = infoGrid.transform:GetChild(i - 1)
|
|
porpertys[go][i].gameObject:SetActive(false)
|
|
end
|
|
if data.MonomerProperty and #data.MonomerProperty > 0 then
|
|
for i = 1, #data.MonomerProperty do
|
|
if not porpertys[go][i] then
|
|
porpertys[go][i] = newObjToParent(infoPre,infoGrid)
|
|
end
|
|
porpertys[go][i].gameObject:SetActive(true)
|
|
local tempProData = porpertyConfigs[data.MonomerProperty[i][1]]
|
|
Util.GetGameObject(porpertys[go][i],"info"):GetComponent("Text").text = GetLanguageStrById(tempProData.Info) .. "+" ..GetPropertyFormatStr(tempProData.Style,data.MonomerProperty[i][2])
|
|
porpertys[go][i]:GetComponent("Button").enabled = false
|
|
end
|
|
end
|
|
Util.AddOnceClick(go.gameObject,function()
|
|
local skinId = data.IsDefault == 1 and 0 or data.Type
|
|
this:BtnAction(skinId,data)
|
|
end)
|
|
end
|
|
|
|
function HandBookRoleSkinPanel:BtnAction(skinId,data)
|
|
if skinId == curSkinId then
|
|
return
|
|
end
|
|
curSkinId = skinId
|
|
if skinId == 0 then
|
|
parent:ChangeCurentHeroSkinLive()
|
|
else
|
|
parent:ChangeCurentHeroSkinLive(data)
|
|
end
|
|
|
|
end
|
|
|
|
function HandBookRoleSkinPanel:OnHide()
|
|
this.gameObject:SetActive(false)
|
|
if parent then
|
|
parent:ChangeCurentHeroSkinLive()
|
|
end
|
|
end
|
|
function HandBookRoleSkinPanel:OnClose()
|
|
|
|
end
|
|
function HandBookRoleSkinPanel:OnDestroy()
|
|
skinPres = {}
|
|
porpertys = {}
|
|
curHeroData = {}
|
|
end
|
|
return HandBookRoleSkinPanel |