204 lines
7.4 KiB
Lua
Executable File
204 lines
7.4 KiB
Lua
Executable File
local EquipResonateUI = class("EquipResonateUI", BaseUI)
|
|
|
|
function EquipResonateUI:onClose()
|
|
end
|
|
function EquipResonateUI:isFullScreen()
|
|
return false
|
|
end
|
|
function EquipResonateUI:ctor(params)
|
|
params = params or {}
|
|
self.page = params.page or GConst.EquipConst.RESONATE_PAGE.LV_UP
|
|
self.slotId = params and params.slotId
|
|
end
|
|
|
|
function EquipResonateUI:getPrefabPath()
|
|
return "assets/prefabs/ui/equip/equip_resonate_ui.prefab"
|
|
end
|
|
|
|
function EquipResonateUI:onLoadRootComplete()
|
|
local uiMap = self.root:genAllChildren()
|
|
|
|
uiMap["equip_resonate_ui.mask"]:addClickListener(function()
|
|
self:closeUI()
|
|
end)
|
|
uiMap["equip_resonate_ui.bg.close_btn"]:addClickListener(function()
|
|
self:closeUI()
|
|
end)
|
|
|
|
if not self.equipCells then
|
|
self.equipCells = {}
|
|
for i = 1, 6 do
|
|
local cell = uiMap["equip_resonate_ui.bg.equip_list.equip_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL)
|
|
cell:addClickListener(function()
|
|
local uid = DataManager.EquipData:getPartEquipUid(self.slotId, self.part)
|
|
if uid ~= 0 then
|
|
self.part = i
|
|
self:onRefresh()
|
|
end
|
|
end)
|
|
table.insert(self.equipCells, cell)
|
|
end
|
|
end
|
|
|
|
self.lvTx = uiMap["equip_resonate_ui.bg.page_info.lv_tx"]
|
|
self.tipsTx = uiMap["equip_resonate_ui.bg.page_info.tips_tx"]
|
|
-- self.attrNameTx = uiMap["equip_resonate_ui.bg.page_info.attr_bg.attr_name_tx"]
|
|
-- self.attrCurrValueTx = uiMap["equip_resonate_ui.bg.page_info.attr_bg.layout.attr_curr_value_tx"]
|
|
-- self.arrowImg = uiMap["equip_resonate_ui.bg.page_info.attr_bg.layout.arrow_img"]
|
|
-- self.attrNextValueTx = uiMap["equip_resonate_ui.bg.page_info.attr_bg.layout.attr_next_value_tx"]
|
|
-- self.layout = uiMap["equip_resonate_ui.bg.page_info.attr_bg.layout"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
|
|
|
|
uiMap["equip_resonate_ui.bg.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_4))
|
|
uiMap["equip_resonate_ui.bg.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_6))
|
|
|
|
self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_1), I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_2), I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_3)}
|
|
self.pageBtns = {}
|
|
self.pageBtnTxs = {}
|
|
for i = 1, 3 do
|
|
self.pageBtns[i] = uiMap["equip_resonate_ui.bg.page_btn_" .. i]
|
|
self.pageBtnTxs[i] = uiMap["equip_resonate_ui.bg.page_btn_" .. i .. ".text"]
|
|
self.pageBtns[i]:addClickListener(function()
|
|
if self.page == i then
|
|
return
|
|
end
|
|
self.page = i
|
|
self:onRefresh()
|
|
end)
|
|
end
|
|
|
|
self.attrBgs = {}
|
|
self.attrNameTxs = {}
|
|
self.attrLayouts = {}
|
|
self.attrCurrValueTxs = {}
|
|
self.attrArrowImgs = {}
|
|
self.attrNextValueTxs = {}
|
|
for i = 1, 2 do
|
|
self.attrBgs[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i]
|
|
self.attrNameTxs[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i .. ".attr_name_tx"]
|
|
self.attrLayouts[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i .. ".layout"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
|
|
self.attrCurrValueTxs[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i .. ".layout.attr_curr_value_tx"]
|
|
self.attrArrowImgs[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i .. ".layout.arrow_img"]
|
|
self.attrNextValueTxs[i] = uiMap["equip_resonate_ui.bg.page_info.attr_bg_" .. i .. ".layout.attr_next_value_tx"]
|
|
end
|
|
|
|
self:bind(DataManager.EquipData, "isDirty", function()
|
|
self:onRefresh()
|
|
end)
|
|
end
|
|
|
|
function EquipResonateUI:onRefresh()
|
|
self:refreshEquipCell()
|
|
self:refreshPageBtn()
|
|
self:refreshPage()
|
|
end
|
|
|
|
function EquipResonateUI:refreshEquipCell()
|
|
for part = 1, 6 do
|
|
local eid = DataManager.EquipData:getPartEquipUid(self.slotId, part)
|
|
if eid and eid > 0 then
|
|
local equipEntity = DataManager.EquipData:getEquipByUid(eid)
|
|
self.equipCells[part]:refresh(equipEntity, self.slotId)
|
|
else
|
|
self.equipCells[part]:refreshEmpty(part)
|
|
end
|
|
end
|
|
end
|
|
|
|
function EquipResonateUI:refreshPageBtn()
|
|
for i = 1, 3 do
|
|
if self.page == i then
|
|
self.pageBtns[i]:setSprite(GConst.ATLAS_PATH.COMMON, "common_menu_1")
|
|
self.pageBtnTxs[i]:setText(self.btnTxs[i])
|
|
else
|
|
self.pageBtns[i]:setSprite(GConst.ATLAS_PATH.COMMON, "common_menu_2")
|
|
self.pageBtnTxs[i]:setText(self.btnTxs[i])
|
|
end
|
|
end
|
|
end
|
|
|
|
function EquipResonateUI:refreshPage()
|
|
if self.page == GConst.EquipConst.RESONATE_PAGE.LV_UP then
|
|
self:refreshPageLv()
|
|
elseif self.page == GConst.EquipConst.RESONATE_PAGE.QLT then
|
|
self:refreshPageQlt()
|
|
elseif self.page == GConst.EquipConst.RESONATE_PAGE.REFINE then
|
|
self:refreshPageRefine()
|
|
end
|
|
end
|
|
|
|
function EquipResonateUI:refreshPageLv()
|
|
local lv, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(self.page, self.slotId)
|
|
self:refreshUI(lv, nextLv, attrs, attrNexts, DataManager.EquipData:getResonateMaxLevel(1))
|
|
end
|
|
|
|
function EquipResonateUI:refreshPageQlt()
|
|
local lv, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(self.page, self.slotId, self.part)
|
|
self:refreshUI(lv, nextLv, attrs, attrNexts, DataManager.EquipData:getResonateMaxLevel(2))
|
|
end
|
|
|
|
function EquipResonateUI:refreshPageRefine()
|
|
local lv, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(self.page, self.slotId)
|
|
self:refreshUI(lv, nextLv, attrs, attrNexts, DataManager.EquipData:getResonateMaxLevel(3))
|
|
end
|
|
|
|
function EquipResonateUI:refreshUI(lv, nextLv, attrs, attrNexts, maxLevel)
|
|
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.LV_POINT) .. lv)
|
|
local typeList = {}
|
|
for k, v in pairs(attrNexts or {}) do
|
|
table.insert(typeList, {typeName = k, id = GFunc.getAttrIdByName(k)})
|
|
end
|
|
if #typeList <= 0 then
|
|
for k, v in pairs(attrs or {}) do
|
|
table.insert(typeList, {typeName = k, id = GFunc.getAttrIdByName(k)})
|
|
end
|
|
end
|
|
table.sort(typeList, function (a, b)
|
|
return a.id < b.id
|
|
end)
|
|
for i = 1, 2 do
|
|
if typeList[i] and typeList[i].typeName then
|
|
local typeName = typeList[i].typeName
|
|
self.attrBgs[i]:setActive(true)
|
|
self.attrNameTxs[i]:setText(GFunc.getAttrNameByType(typeName))
|
|
self.attrCurrValueTxs[i]:setText(GFunc.getFinalAttrValue(typeName, attrs[typeName] or 0))
|
|
local meshProCompNow = self.attrCurrValueTxs[i]:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO)
|
|
local nowTipsNowX = meshProCompNow.preferredWidth
|
|
self.attrCurrValueTxs[i]:setSizeDeltaX(nowTipsNowX)
|
|
|
|
if maxLevel ~= nil and lv >= maxLevel then
|
|
self.attrArrowImgs[i]:setActive(false)
|
|
self.attrNextValueTxs[i]:setActive(false)
|
|
self.tipsTx:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_2))
|
|
else
|
|
if nextLv == nil then
|
|
self.tipsTx:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_2))
|
|
else
|
|
if self.page == GConst.EquipConst.RESONATE_PAGE.QLT then
|
|
self.tipsTx:setText(I18N:getGlobalText("EQUIP_HERO_M_" .. self.page, I18N:getGlobalText("EQUIP_QLT_DESC_" .. nextLv[1], nextLv[2])))
|
|
else
|
|
self.tipsTx:setText(I18N:getGlobalText("EQUIP_HERO_M_" .. self.page, nextLv[1]))
|
|
end
|
|
end
|
|
|
|
self.attrNextValueTxs[i]:setText(GFunc.getFinalAttrValue(typeName, attrNexts[typeName] or 0))
|
|
self.attrArrowImgs[i]:setActive(true)
|
|
self.attrNextValueTxs[i]:setActive(true)
|
|
|
|
local meshProCompNext = self.attrNextValueTxs[i]:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO)
|
|
local nowTipsNextX = meshProCompNext.preferredWidth
|
|
self.attrNextValueTxs[i]:setSizeDeltaX(nowTipsNextX)
|
|
end
|
|
self.attrLayouts[i]:RefreshLayout()
|
|
else
|
|
self.attrBgs[i]:setActive(false)
|
|
end
|
|
end
|
|
if #typeList < 2 then
|
|
self.attrBgs[1]:setAnchoredPositionY(-4)
|
|
else
|
|
self.attrBgs[1]:setAnchoredPositionY(26)
|
|
end
|
|
end
|
|
|
|
|
|
return EquipResonateUI |