-- <*
|
|
-- @Author: huangcong
|
|
-- @Description: 装备橙色套装界面
|
|
-- *>
|
|
BagEquipOrangeSuitView = BagEquipOrangeSuitView or BaseClass(BaseView)
|
|
local BagEquipOrangeSuitView = BagEquipOrangeSuitView
|
|
|
|
function BagEquipOrangeSuitView:__init()
|
|
self.base_file = "bag"
|
|
self.layout_file = "BagEquipOrangeSuitView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
|
|
self.is_set_zdepth = true
|
|
self.model = EquipModel:getInstance()
|
|
self.attr_item_list = {}
|
|
self.attr_item_list2 = {}
|
|
self.tab_list = {}
|
|
self.look_suit_cache = {}--查看的套装换成 等会这里面的属性都要换成已查看
|
|
self.max_item_num = 1
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:UpdateView()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:Open(suit_num)
|
|
self.suit_num = suit_num or 1
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:LoadSuccess()
|
|
local nodes = {
|
|
"bg:raw", "rightBtn:obj", "leftBtn:obj", "closeBtn:obj", "tabScroll/Viewport/tabCon", "tabScroll",
|
|
--装备套件
|
|
"fightText1:txt", "attrCon1", "suitNumText1:tmp", "fightTitleText1:tmp", "suitText1:tmp",
|
|
--饰品套件
|
|
"fightText2:txt", "attrCon2", "suitNumText2:tmp", "fightTitleText2:tmp", "suitText2:tmp",
|
|
"leftRedDot:obj", "rightRedDot:obj",
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
self.fightTitleText1_tmp.text = "全集齐战力:"
|
|
self.fightTitleText2_tmp.text = "全集齐战力:"
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("equip_bag_suit_bg"), false)
|
|
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:AddEvent()
|
|
local function click_event(target)
|
|
if target == self.closeBtn_obj then
|
|
self:Close()
|
|
elseif target == self.leftBtn_obj then -- 左
|
|
self.suit_num = self.suit_num - 1
|
|
if self.suit_num < 1 then
|
|
Message.show("到最左边啦!","fault")
|
|
self.suit_num = 1
|
|
return
|
|
end
|
|
self:RefreshView()
|
|
self:MoveTabItem()
|
|
elseif target == self.rightBtn_obj then -- 右
|
|
self.suit_num = self.suit_num + 1
|
|
if self.suit_num > self.max_item_num then
|
|
Message.show("到最右边啦!","fault")
|
|
self.suit_num = self.max_item_num
|
|
return
|
|
end
|
|
self:RefreshView()
|
|
self:MoveTabItem()
|
|
end
|
|
end
|
|
AddClickEvent(self.closeBtn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.leftBtn_obj, click_event)
|
|
AddClickEvent(self.rightBtn_obj, click_event)
|
|
|
|
|
|
local function updateRedDotBool( ... )
|
|
self:UpdateRedBool()
|
|
end
|
|
self:BindEvent(GlobalEventSystem,EventName.UPDATE_BAG_RED,updateRedDotBool)
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:UpdateView()
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
else
|
|
self.need_refreshData = true
|
|
return
|
|
end
|
|
self:UpdateTabList()
|
|
end
|
|
|
|
--更新页签
|
|
function BagEquipOrangeSuitView:UpdateTabList( )
|
|
local tab_len = EquipModel.getInstance():GetCurrentOpenSuitSeries() or 1
|
|
local function callback( index )
|
|
if not index then return end
|
|
self.suit_num = index
|
|
self:RefreshView()
|
|
end
|
|
self.max_item_num = tab_len
|
|
local offer_x = 65
|
|
local offer_y = 0
|
|
local x = 0
|
|
local y = 0
|
|
for i=1,tab_len do
|
|
local item = self.tab_list[i]
|
|
if item == nil then
|
|
item = BagEquipOrangeSuitTab.New(self.tabCon, nil, self.layer_name)
|
|
self.tab_list[i] = item
|
|
x = (BagEquipOrangeSuitTab.Width + offer_x)* (i-1) + 1
|
|
y = -3
|
|
item:SetPosition(x,y)
|
|
item:SetCallBackFunc(callback)
|
|
end
|
|
item:SetData(i,i)
|
|
end
|
|
callback(self.suit_num)
|
|
|
|
SetSizeDeltaX(self.tabCon,(BagEquipOrangeSuitTab.Width + offer_x)*tab_len)
|
|
|
|
local sum_x = (BagEquipOrangeSuitTab.Width + offer_x)*tab_len - offer_x
|
|
local size_x = 596--y66
|
|
if sum_x < size_x then
|
|
local offer_x = (size_x - sum_x)/2
|
|
for i,v in ipairs(self.tab_list) do
|
|
local pos = v:GetPosition()
|
|
v:SetPosition(pos.x+offer_x,pos.y)
|
|
end
|
|
end
|
|
|
|
self:MoveTabItem()
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:MoveTabItem( )
|
|
local offer_x = 65
|
|
if not self.is_first_open then
|
|
self.is_first_open = true
|
|
if self.suit_num > 3 then--大于三套就移动一下位置吧
|
|
local offer_index = self.suit_num - 3
|
|
SetAnchoredPositionX(self.tabCon,-offer_index*(BagEquipOrangeSuitTab.Width + offer_x))
|
|
end
|
|
else
|
|
if self.suit_num > 3 then--大于三套就移动一下位置吧
|
|
local offer_index = self.suit_num - 3
|
|
SetAnchoredPositionX(self.tabCon,-offer_index*(BagEquipOrangeSuitTab.Width + offer_x))
|
|
else
|
|
SetAnchoredPositionX(self.tabCon,0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:RefreshView( )
|
|
local active_list = EquipModel:getInstance().suit_attr_active_list[self.suit_num]
|
|
if active_list then
|
|
for k,v in pairs(active_list) do
|
|
for ii,vv in ipairs(v) do
|
|
for ii,vvv in ipairs(vv) do
|
|
vv[2] = false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
self.model:UpdateNewSuitAttrActive(false)--更新红点
|
|
|
|
self.look_suit_cache[self.suit_num] = true
|
|
for k,v in pairs(self.tab_list) do
|
|
v:SetChoose(self.suit_num)
|
|
end
|
|
|
|
self.suitText1_tmp.text = string.format("%s代",self.suit_num)
|
|
self.suitText2_tmp.text = string.format("%s代",self.suit_num)
|
|
|
|
local cur = GoodsModel:getInstance():GetEquipCurSuitOrangeNum(self.suit_num,1)
|
|
local max = 7
|
|
self.suitNumText1_tmp.text = string.format("收集进度 <color=%s>%s/%s</color>",ColorUtil.GREEN_DARK,cur,max)
|
|
|
|
local cur2 = GoodsModel:getInstance():GetEquipCurSuitOrangeNum(self.suit_num,2)
|
|
local max2 = 3
|
|
self.suitNumText2_tmp.text = string.format("收集进度 <color=%s>%s/%s</color>",ColorUtil.GREEN_DARK,cur2,max2)
|
|
self:UpdateAttrItemList()
|
|
self:UpdateAttrItemList2()
|
|
end
|
|
|
|
--更新红点
|
|
function BagEquipOrangeSuitView:UpdateRedBool( )
|
|
local leftBool = false
|
|
if self.suit_num > 1 then
|
|
for i=1,self.suit_num - 1 do
|
|
leftBool = self.model.suit_attr_active_red_series_list[i] or leftBool
|
|
end
|
|
end
|
|
self.leftRedDot_obj:SetActive(leftBool)
|
|
|
|
local rightBool = false
|
|
if self.suit_num < self.max_item_num then
|
|
for i=self.suit_num + 1,self.max_item_num do
|
|
rightBool = self.model.suit_attr_active_red_series_list[i] or rightBool
|
|
end
|
|
end
|
|
self.rightRedDot_obj:SetActive(rightBool)
|
|
|
|
for k,v in pairs(self.tab_list) do
|
|
v:UpdateRedBool()
|
|
end
|
|
end
|
|
|
|
--更新装备属性列表
|
|
function BagEquipOrangeSuitView:UpdateAttrItemList( )
|
|
for k,v in pairs(self.attr_item_list) do
|
|
v:SetVisible(false)
|
|
end
|
|
local suit_cfg_list = self.model:GetEquipmentSuitCfg(self.suit_num,1)
|
|
local cur_suit_id_num,suit_equip_pos_list = GoodsModel:getInstance():GetEquipSuitNum(self.suit_num,1)
|
|
if not suit_cfg_list or TableSize(suit_cfg_list) == 0 then return end
|
|
|
|
local anim_power_cfg = suit_cfg_list[#suit_cfg_list]
|
|
local power = anim_power_cfg and self.model:MathGreatAttrFighting(anim_power_cfg.attr,anim_power_cfg.suit_num <= cur_suit_id_num) or 0
|
|
self.fightText1_txt.text = power
|
|
|
|
local item_list = suit_cfg_list
|
|
local y_list = {0,-97,-200}
|
|
local offer_x = 0
|
|
local offer_y = 17
|
|
local x = 0
|
|
local y = 0
|
|
for i, v in ipairs(item_list) do
|
|
local item = self.attr_item_list[i]
|
|
if item == nil then
|
|
item = BagEquipOrangeSuitAttrItem.New(self.attrCon1,nil,self.layer_name)
|
|
self.attr_item_list[i] = item
|
|
end
|
|
item:SetData(v,i,cur_suit_id_num)
|
|
item:SetVisible(true)
|
|
item:SetPosition(0,y_list[i])
|
|
end
|
|
end
|
|
|
|
--更新饰品属性列表
|
|
function BagEquipOrangeSuitView:UpdateAttrItemList2( )
|
|
for k,v in pairs(self.attr_item_list2) do
|
|
v:SetVisible(false)
|
|
end
|
|
local suit_cfg_list = self.model:GetEquipmentSuitCfg(self.suit_num,2)
|
|
local cur_suit_id_num,suit_equip_pos_list = GoodsModel:getInstance():GetEquipSuitNum(self.suit_num,2)
|
|
if not suit_cfg_list or TableSize(suit_cfg_list) == 0 then return end
|
|
local anim_power_cfg = suit_cfg_list[#suit_cfg_list]
|
|
local power = anim_power_cfg and self.model:MathGreatAttrFighting(anim_power_cfg.attr,anim_power_cfg.suit_num <= cur_suit_id_num) or 0
|
|
self.fightText2_txt.text = power
|
|
local item_list = suit_cfg_list
|
|
local offer_x = 0
|
|
local offer_y = 11
|
|
local x = 0
|
|
local y = 0
|
|
for i, v in ipairs(item_list) do
|
|
local item = self.attr_item_list2[i]
|
|
if item == nil then
|
|
item = BagEquipOrangeSuitAttrItem.New(self.attrCon2,nil,self.layer_name)
|
|
self.attr_item_list2[i] = item
|
|
end
|
|
item:SetData(v,i,cur_suit_id_num)
|
|
item:SetVisible(true)
|
|
item:SetPosition(0,-(BagEquipOrangeSuitAttrItem.Height+offer_y)*(i - 1))
|
|
end
|
|
end
|
|
|
|
function BagEquipOrangeSuitView:DestroySuccess( )
|
|
for k,v in pairs(self.tab_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.tab_list = {}
|
|
|
|
for i,v in ipairs(self.attr_item_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.attr_item_list = {}
|
|
|
|
for i,v in ipairs(self.attr_item_list2) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.attr_item_list2 = {}
|
|
|
|
for series,v in pairs(self.look_suit_cache) do--缓存列表的套装全部换成已查看属性
|
|
local active_list = EquipModel:getInstance().suit_attr_active_list[series]
|
|
if active_list then
|
|
for kk,vv in pairs(active_list) do
|
|
for kkk,vvv in ipairs(vv) do
|
|
vvv[3] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|