源战役客户端
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.
 
 
 
 
 

308 lines
10 KiB

-- <*
-- @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