源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

269 行
8.4 KiB

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