源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

305 lines
9.0 KiB

RankEquipView = RankEquipView or BaseClass(BaseItem)
function RankEquipView:__init(parent_wnd, prefab_asset, layer_name)
self.base_file = "rank"
self.layout_file = "RankEquipView"
self.is_delay_callback = true
self.equip_suit_id = 1
self.model = RankModel:getInstance()
self.mainVo = RoleManager.Instance.mainRoleInfo
self.equip_item_list = {}
self.suit_tab_list = {}
self.data = false
self.show_role_id = false
self:Load()
end
function RankEquipView:Load_callback()
self:SetAnchoredPosition(0,0)
self.nodes = {
"contain/tab_bg:img",
"contain/equip_conta",
"contain/tabScroll/Viewport/tab_con",
"contain/tabScroll:scroll",
"contain/evilCon",
"contain/star_tip_btn/star_tip_num:tmp", "contain/suit_btn/suit_num:tmp",
"contain/suit_btn/suit_text:tmp", "contain/star_tip_btn/star_tip_text:tmp",
}
self:GetChildren(self.nodes)
self.suit_text_tmp.text = "宝石等级"
self.star_tip_text_tmp.text = "装备星级"
if self.need_refreshData then
self:SetData(self.data)
end
self:InitEvent()
end
function RankEquipView:InitEvent()
local function OnUpdateEquipInfo(role_id)
if role_id == self.data.role_id then
self:UpdateSuitTab()
end
end
self:BindEvent(RankModel:getInstance(), RankModel.UPDATE_EQUIP_INFO, OnUpdateEquipInfo)
end
--根据等级获取展示的最大套数,配置,当前真实代数
function RankEquipView:GetRoleReinMaxTurn(level)
local turn = 1--展示最高代(以前的做法,只创建最大套数个tab,现在全部创建出来,所以后面返回最大套数)
local really_turn = 0--当前真实代数
local list = {}
for k,v in ipairs(Config.Equipmentseriesopen) do
list[k] = v
-- if v.visible_lv <= level then
-- turn = v.series > turn and v.series or turn
-- list[k] = v
-- end
if v.open_lv <= level then
really_turn = really_turn + 1
end
end
return #Config.Equipmentseriesopen,list,really_turn
end
--更新装备套件标签
function RankEquipView:UpdateSuitTab( )
for k,v in pairs(self.suit_tab_list) do
v:SetVisible(false)
end
local len,list,max_suit_id = self:GetRoleReinMaxTurn(self.data.level)
local equip_list = self.model:GetEquipList(self.show_role_id, self.equip_suit_id)
local all_equip_list = self.model:GetAllEquipList(self.show_role_id)
local all_star_num = 0
for k,v in pairs(all_equip_list) do
for m,n in pairs(v) do
for p,q in pairs(n.other_data) do
if q.type == 5 then
local attr_list = stringtotable(q.info)
for y,z in pairs(attr_list) do
local attr_cfg = EquipModel:getInstance():GetEquipmentGreatAttrCfg(z)
if attr_cfg and attr_cfg.type == 1 then
all_star_num = all_star_num + 1
end
end
end
end
end
end
self.star_tip_num_tmp.text = all_star_num
local active_list = EquipModel:getInstance():GetCurSuitInfo(equip_list)
if len == 0 then return end
local function call_back( equip_suit_id )
self:UpdateSuitState(equip_suit_id)
self.init_choose_index = false--初始化结束
end
local offer_x = 0
local offer_y = 0
local x = 0
local y = 0
for i=1,max_suit_id do
local item = self.suit_tab_list[i]
if item == nil then
item = RankSuitTab.New(self.tab_con,nil,self.layer_name)
self.suit_tab_list[i] = item
item:SetPosition((RankSuitTab.Width - 5) * (i - 1), 0)
item:SetCallBack(call_back)
end
item:SetData(active_list[i],i,list[i],len,nil, self.data.level)
item:SetVisible(true)
end
SetSizeDeltaX(self.tab_con, (RankSuitTab.Width-5)*max_suit_id+5)
self.tabScroll_scroll.enabled = max_suit_id > 4
local go_suit_id = self.model.now_equip_suit_id
if self.model.now_equip_suit_id > max_suit_id then
go_suit_id = max_suit_id
end
self:UpdateSuitState(go_suit_id)
if go_suit_id <= 3 then
SetAnchoredPositionX(self.tab_con, 0)
elseif go_suit_id == 4 then
SetAnchoredPositionX(self.tab_con, -4)
elseif go_suit_id == 5 then
SetAnchoredPositionX(self.tab_con, -89)
elseif go_suit_id == 6 then
SetAnchoredPositionX(self.tab_con, -172)
else
SetAnchoredPositionX(self.tab_con, 0)
end
end
function RankEquipView:UpdateSuitState(equip_suit_id)
self.equip_suit_id = equip_suit_id or self.equip_suit_id
for k,v in pairs(self.suit_tab_list) do
v:SetChoose(self.equip_suit_id)
end
self:SetEquipData()
end
function RankEquipView:SetData(data)
self.data = data
if self.is_loaded then
self.need_refreshData = false
if self.show_role_id ~= self.data.role_id then
self.show_role_id = self.data.role_id
RankModel:getInstance():Fire(RankModel.REQUEST_EQUIP_CCMD_EVENT,self.show_role_id)
end
else
self.need_refreshData = true
end
end
function RankEquipView:__delete()
for i,v in ipairs(self.equip_item_list) do
v:DeleteMe()
end
self.equip_item_list = {}
for i,v in ipairs(self.suit_tab_list) do
v:DeleteMe()
end
self.suit_tab_list = {}
if self.evil_item then
self.evil_item:DeleteMe()
end
end
function RankEquipView:GetRowCol(num, col_num)
local row = 0
local col = 0
if col_num and col_num > 0 and num and num > 0 then
row = math.floor((num - 1) / col_num ) + 1
col = (num - 1) % col_num +1
end
return row, col
end
--设置装备数据
function RankEquipView:SetEquipData()
local list = self.model:GetEquipList(self.show_role_id, self.equip_suit_id)
local all_gem_lv = 0
local cur_suit_id_num,suit_equip_pos_list = 0,{}
local necklace_cur_suit_id_num,necklace_suit_equip_pos_list = 0,{}
for m,n in pairs(list) do
local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(n.type_id)
if equip_cfg and equip_cfg.color and equip_cfg.color >= 4 and equip_cfg.equip_type ~= EquipModel.EquipType.Guard then--橙色品质才有套装
if equip_cfg.equip_type >= EquipModel.EquipType.Necklace then
necklace_cur_suit_id_num = necklace_cur_suit_id_num + 1
necklace_suit_equip_pos_list[equip_cfg.equip_type] = true
elseif equip_cfg.equip_type < EquipModel.EquipType.Necklace then
cur_suit_id_num = cur_suit_id_num + 1
suit_equip_pos_list[equip_cfg.equip_type] = true
end
end
for p,q in pairs(n.other_data) do
if q.type == 18 then
local gem_list = stringtotable(q.info)
for y,z in pairs(gem_list) do
local gem_cfg = Config.Equipmentgems[z[2]]
if gem_cfg then
all_gem_lv = all_gem_lv + gem_cfg.lv
end
end
end
end
end
for m,n in pairs(list) do
n.cur_suit_id_num = cur_suit_id_num
n.suit_equip_pos_list = suit_equip_pos_list
n.necklace_cur_suit_id_num = necklace_cur_suit_id_num
n.necklace_suit_equip_pos_list = necklace_suit_equip_pos_list
end
self.suit_num_tmp.text = all_gem_lv
local show_index =
{
[1] = {cell = 1,index = 3},
[2] = {cell = 2,index = 1},
[3] = {cell = 3,index = 4},
[4] = {cell = 4,index = 9},
[5] = {cell = 5,index = 6},
[6] = {cell = 6,index = 7},
[7] = {cell = 7,index = 10},
[8] = {cell = 8,index = 5},
[9] = {cell = 9,index = 8},
[10] = {cell = 10,index = 11},
[11] = {cell = 11,index = 2},
[12] = {cell = 12,index = 12},
}
local index_key_list = {}
local empty_key_list = {}
for k,v in pairs(show_index) do
empty_key_list[v.index] = {}
empty_key_list[v.index].equip_suit_type = v.cell
end
for _,vo in pairs(list) do
local index = show_index[vo.equip_suit_type] and show_index[vo.equip_suit_type].index or 0
index_key_list[index] = vo
end
local start_x = -147
local start_y = 207
local space_x = 105
local space_y = 102
for frame_count= 1, 11 do
local item = self.equip_item_list[frame_count]
if not item then
item = RankEquipItem.New(self.equip_conta, nil, self.layer_name)
self.equip_item_list[frame_count] = item
item:SetEquipStyle(frame_count)
local row , col = self:GetRowCol(frame_count + 1, 3)
if frame_count == 12 then
item:SetPosition( start_x + (col - 1) * space_x, start_y - (row - 5) * space_y)
else
item:SetPosition( start_x + (col - 1) * space_x, start_y - (row - 1) * space_y)
end
end
local vo = index_key_list[frame_count]
if vo then
item:SetData(vo,nil,self.show_role_id)
item:SetPosType(vo.equip_suit_type, false)
else
item:ClearData()
item:SetPosType(empty_key_list[frame_count].equip_suit_type, true)
end
-- item:SetBgAlpha((vo and frame_count == 2) and 0 or 1)
item:SetBgAlpha(1)
--更新守护模型
-- if frame_count == 2 then
-- self:UpdateEvilMomodel(index_key_list[frame_count])
if frame_count == 12 then
local mate_info = self.model:GetMateShipData( self.data.role_id )
if mate_info then
item:SetRingShow(mate_info.mate_stage,mate_info.mate_star)
end
end
end
end
function RankEquipView:UpdateEvilMomodel(vo)
if not self.evil_item then
self.evil_item = RankBagEvilItem.New(self.evilCon,nil,self.layer_name)
end
self.evil_item:SetData(vo and vo.type_id or false)
end