|
SkillUIListItem = SkillUIListItem or BaseClass(BaseItem)
|
|
|
|
function SkillUIListItem:__init(parent_wnd, prefab_asset, layer_name)
|
|
self.base_file = "skillUI"
|
|
self.layout_file = "SkillUIListItem"
|
|
|
|
|
|
|
|
self.model = SkillManager:getInstance()
|
|
self.skillui_model = SkillUIModel:getInstance()
|
|
|
|
|
|
self.skill_tabs = false
|
|
self.skill_id_table = false
|
|
self.skill_id_list = false
|
|
self.skill_item_list = {}
|
|
|
|
|
|
self.skill_item_con_list = {}
|
|
|
|
self.select_index = false
|
|
self.select_skill_vo = false
|
|
self.select_id = false
|
|
|
|
self.click_call_back = false
|
|
|
|
self.drag_view_mrg = DragViewMgr.New()
|
|
|
|
self:Load()
|
|
end
|
|
|
|
--清除界面
|
|
function SkillUIListItem:__delete()
|
|
self:Remove()
|
|
|
|
end
|
|
|
|
function SkillUIListItem:Load_callback()
|
|
self:LoadSuccess()
|
|
self:InitEvent()
|
|
self:UpdateSkillList()
|
|
end
|
|
|
|
function SkillUIListItem:Remove()
|
|
for i,v in ipairs(self.skill_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.skill_item_list = {}
|
|
|
|
for i,v in ipairs(self.skill_item_con_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.click_call_back = false
|
|
if self.drag_view_mrg then
|
|
self.drag_view_mrg:DeleteMe()
|
|
end
|
|
end
|
|
|
|
function SkillUIListItem:LoadSuccess()
|
|
local nodes = {
|
|
|
|
"list_group/ScrollView/Viewport/skill_con",
|
|
"list_group/ScrollView/Viewport",
|
|
"list_group/ScrollView",
|
|
"item_group:obj",
|
|
"list_group:obj",
|
|
"item_group/bg:raw",
|
|
}
|
|
self.skill_tabs = {}
|
|
for i=1, 3 do
|
|
self.skill_tabs[i] = {}
|
|
self.skill_tabs[i].trans = self:GetChild("list_group/ScrollView/Viewport/skill_con/tltle_"..i)
|
|
self.skill_tabs[i].obj = self:GetChild("list_group/ScrollView/Viewport/skill_con/tltle_"..i).gameObject
|
|
self.skill_tabs[i].text = self:GetChild("list_group/ScrollView/Viewport/skill_con/tltle_"..i.."/text"):GetComponent("TextMeshProUGUI")
|
|
self.skill_tabs[i].content_bg = self:GetChild("list_group/ScrollView/Viewport/skill_con/tltle_"..i.."/content_bg"):GetComponent("Image")
|
|
self.skill_tabs[i].content_icon = self:GetChild("list_group/ScrollView/Viewport/skill_con/tltle_"..i.."/content_icon"):GetComponent("Image")
|
|
end
|
|
self.skill_pos_table = {}
|
|
for i=1, 8 do
|
|
self.skill_pos_table[i] = {}
|
|
self.skill_pos_table[i].parent = self:GetChild("item_group/item_con_" .. i )
|
|
end
|
|
|
|
self.mScroll = self:GetChild("list_group/ScrollView"):GetComponent("ScrollRect")
|
|
|
|
self:GetChildren(nodes)
|
|
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetSkillViewBg("skill_ui_bg_5"), false)
|
|
if self.need_refreshData then
|
|
self:SetData(self.skill_id_table, self.select_id, self.view_index)
|
|
end
|
|
end
|
|
|
|
function SkillUIListItem:InitEvent()
|
|
local function onClickSkillItem(view_index, skill_id, pos)
|
|
if view_index == SkillUIModel.Click_SkillItem.CareerList then
|
|
self:ClickSkillItem(skill_id, pos)
|
|
end
|
|
end
|
|
self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM,onClickSkillItem)
|
|
|
|
local function onChangeBagListHandler()
|
|
self:UpdateRedDot()
|
|
end
|
|
self:BindEvent(GoodsModel:getInstance(),GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
|
|
end
|
|
|
|
function SkillUIListItem:SetData(list, select_id, view_index)
|
|
self.skill_id_table = list
|
|
self.select_id = select_id
|
|
self.view_index = view_index
|
|
if self.is_loaded then
|
|
if self.view_index == Config.ConfigSkillUI.TabEnum.LegendlSkill then
|
|
self.list_group_obj:SetActive(false)
|
|
self.item_group_obj:SetActive(true)
|
|
self:UpdateSkillItemCon()
|
|
else
|
|
self.list_group_obj:SetActive(true)
|
|
self.item_group_obj:SetActive(false)
|
|
self:UpdateSkillList()
|
|
end
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function SkillUIListItem:UpdateSkillItemCon()
|
|
if not self.skill_id_table then return end
|
|
self.skill_id_list = {}
|
|
local idx = 1
|
|
for i,v in ipairs(self.skill_id_table) do
|
|
for ii,vv in ipairs(v) do
|
|
local skill_vo = self.model:getSkill(vv)
|
|
self.skill_id_list[idx] = skill_vo
|
|
local item = self.skill_item_con_list[idx]
|
|
if not item then
|
|
item = SkillUIItem.New(self.skill_pos_table[idx].parent,nil,self.maskID)
|
|
self.skill_item_con_list[idx] = item
|
|
end
|
|
item:SetVisible(true, true)
|
|
item:SetUseFor("LegendlSkill")
|
|
item:SetData(skill_vo, idx, SkillUIModel.Click_SkillItem.CareerList, false)
|
|
item:CanDrag(false)
|
|
item:SetHandle(skill_vo:CanUp() and ( skill_vo.level == 0 and SkillUIItem.HANDLE_TYPE.learn or SkillUIItem.HANDLE_TYPE.up) or SkillUIItem.HANDLE_TYPE.default)
|
|
item:SetLockInfo(true)
|
|
if skill_vo.id == self.select_id then
|
|
self.select_index = idx
|
|
end
|
|
idx = idx + 1
|
|
item:SetSelect(skill_vo.id == self.select_id)
|
|
end
|
|
end
|
|
end
|
|
|
|
function SkillUIListItem:UpdateSkillList()
|
|
if not self.skill_id_table then return end
|
|
self.skill_id_list = {}
|
|
for i=1,#self.skill_tabs do
|
|
self.skill_tabs[i].obj:SetActive(false)
|
|
end
|
|
for i,v in ipairs(self.skill_item_list) do
|
|
v:SetVisible(false, true)
|
|
end
|
|
local height = 0
|
|
local tab_heigt = 335
|
|
local item_start_x = 100
|
|
local item_start_y = -92
|
|
local item_width = 134
|
|
local item_height = 144
|
|
local idx = 1
|
|
local cfg = Config.Transfercareer
|
|
local career = RoleManager:getInstance():GetMainRoleVo().career
|
|
local tab_name_cfg = Config.ConfigSkillUI.UITab[self.view_index][career]
|
|
local tab_icon_cfg = Config.ConfigSkillUI.UITabIcon[self.view_index][career]
|
|
for i,v in ipairs(self.skill_id_table) do
|
|
self.skill_tabs[i].obj:SetActive(true)
|
|
SetAnchoredPosition(self.skill_tabs[i].trans, 0 , - height)
|
|
local tab_name = ""
|
|
if type(tab_name_cfg[i]) == "table" then
|
|
local career = tab_name_cfg[i].career
|
|
local turn = tab_name_cfg[i].turn
|
|
for k,v in pairs(cfg) do
|
|
if v.career == career and v.transfer_id == turn then
|
|
tab_name = Trim(v.name)
|
|
break
|
|
end
|
|
end
|
|
else
|
|
tab_name = tab_name_cfg[i]
|
|
end
|
|
|
|
self.skill_tabs[i].text.text = tab_name
|
|
|
|
local w = self.skill_tabs[i].text.preferredWidth
|
|
SetAnchoredPositionX(self.skill_tabs[i].text.transform, - 175 - (40 + w ) / 2 +5)
|
|
SetAnchoredPositionX(self.skill_tabs[i].content_icon.transform, - 175 - (40 + w ) / 2 - 5 )
|
|
lua_resM:setImageSprite(self,self.skill_tabs[i].content_icon, "skillui_asset", (career == 1 or career == 2) and "skill_ui_item_25" or "skill_ui_item_26", true)
|
|
|
|
height = height + tab_heigt
|
|
for ii,vv in ipairs(v) do
|
|
local row , col = self.skillui_model:GetRowCol(ii, 4)
|
|
local skill_vo = self.model:getSkill(vv)
|
|
self.skill_id_list[idx] = skill_vo
|
|
local item = self.skill_item_list[idx]
|
|
if not item then
|
|
item = SkillUIItem.New(self.skill_con,nil,self.maskID, self.mScroll)
|
|
self.skill_item_list[idx] = item
|
|
end
|
|
item:SetVisible(true, true)
|
|
item:SetUseFor("SkillViewList")
|
|
item:SetData(skill_vo, idx, SkillUIModel.Click_SkillItem.CareerList, false)
|
|
item:CanDrag(false)
|
|
item:SetHandle(skill_vo:CanUp() and ( skill_vo.level == 0 and SkillUIItem.HANDLE_TYPE.learn or SkillUIItem.HANDLE_TYPE.up) or SkillUIItem.HANDLE_TYPE.default)
|
|
item:SetLockInfo(true)
|
|
local x = item_start_x + (col - 1) * item_width
|
|
local y = item_start_y - (row - 1) * item_height - (i - 1) * tab_heigt
|
|
item:SetAnchoredPosition(x, y)
|
|
if skill_vo.id == self.select_id then
|
|
self.select_index = idx
|
|
end
|
|
item:SetSelect(skill_vo.id == self.select_id)
|
|
idx = idx + 1
|
|
end
|
|
local row , col = self.skillui_model:GetRowCol(#v, 4)
|
|
end
|
|
SetSizeDeltaY(self.skill_con, height)
|
|
|
|
-- if self.view_index == Config.ConfigSkillUI.TabEnum.SpecialSkill then
|
|
-- SetSizeDeltaY(self.ScrollView, 680)
|
|
-- SetSizeDeltaY(self.Viewport, 680)
|
|
-- else
|
|
-- SetSizeDeltaY(self.ScrollView, 530)
|
|
-- SetSizeDeltaY(self.Viewport, 530)
|
|
-- end
|
|
|
|
end
|
|
|
|
function SkillUIListItem:ClickSkillItem(skill_id, index)
|
|
self.select_index = index
|
|
if self.view_index == Config.ConfigSkillUI.TabEnum.LegendlSkill then
|
|
for i,v in ipairs(self.skill_item_con_list) do
|
|
v:SetSelect(v:GetSkillId() == skill_id)
|
|
end
|
|
else
|
|
for i,v in ipairs(self.skill_item_list) do
|
|
v:SetSelect(v:GetSkillId() == skill_id)
|
|
end
|
|
end
|
|
end
|
|
|
|
function SkillUIListItem:UpdateRedDot()
|
|
if self.view_index == Config.ConfigSkillUI.TabEnum.LegendlSkill then
|
|
for i,v in ipairs(self.skill_item_con_list) do
|
|
local skill_id = v:GetSkillId()
|
|
if skill_id ~= 0 then
|
|
local skill_vo = self.model:getSkill(skill_id)
|
|
v:SetHandle(skill_vo:CanUp() and ( skill_vo.level == 0 and SkillUIItem.HANDLE_TYPE.learn or SkillUIItem.HANDLE_TYPE.up) or SkillUIItem.HANDLE_TYPE.default)
|
|
end
|
|
end
|
|
else
|
|
for i,v in ipairs(self.skill_item_list) do
|
|
local skill_id = v:GetSkillId()
|
|
if skill_id ~= 0 then
|
|
local skill_vo = self.model:getSkill(skill_id)
|
|
v:SetHandle(skill_vo:CanUp() and ( skill_vo.level == 0 and SkillUIItem.HANDLE_TYPE.learn or SkillUIItem.HANDLE_TYPE.up) or SkillUIItem.HANDLE_TYPE.default)
|
|
end
|
|
end
|
|
end
|
|
end
|