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

487 lines
16 KiB

UITabButton = UITabButton or BaseClass(BaseItem)
local UITabButton = UITabButton
UITabButton.Style = {
[1] = {
--带图标的
offsetX = 4,
offsetY = 14,
spacing = 70.6,
size = Vector2(131, 85),
norsouce = "com_empty",
selsouce = "ui_tab_13",
fontSize = 20,
win_name = UIType.UITabButton,
},
[2] = {
--不带图标的
offsetX = 0,
offsetY = 0,
spacing = 72,
size = Vector2(115, 72),
trm_size = Vector2(115, 72),--节点大小
norsouce = "com_empty",
selsouce = "ui_tab_12",
fontSize = 20,
win_name = UIType.UITabButton4,
red_dot_pos = Vector2(40, 15),--红点坐标,有就修改没有就默认
},
[3] = {
--不带图标的并且四个字居中的
offsetX = 0,
offsetY = 0,
spacing = 71,
size = Vector2(155, 65),--Bg大小
trm_size = Vector2(150, 71),--节点大小
norsouce = "com_empty",
selsouce = "ui_tab_1",
fontSize = 20,
win_name = UIType.UITabButton2,
red_dot_pos = Vector2(63, 23.5),--红点坐标,有就修改没有就默认
},
[4] = {
--SizeSamllSP窗口的特殊button样式(只是位置偏移不同,并没有什么特殊)
offsetX = 0,
offsetY = 0,
spacing = 83,
size = Vector2(120, 90),--Bg大小
trm_size = Vector2(120, 90),--节点大小
norsouce = "com_empty",
selsouce = "ui_tab_1",
fontSize = 20,
win_name = UIType.UITabButton4,
red_dot_pos = Vector2(49, 32),--红点坐标,有就修改没有就默认
},
[5] = {
--真全屏的不带图标的并且四个字居中的
offsetX = 1.5,
offsetY = 8.5,
spacing = 71,
size = Vector2(131, 85),--Bg大小
trm_size = Vector2(135, 71),--节点大小
norsouce = "com_empty",
selsouce = "ui_tab_13",
fontSize = 20,
win_name = UIType.UITabButton5,
can_set_red_num = true, --该布局有red_num节点
},
--全屏窗口排行榜的特殊页签样式
[6] = {
--带图标的
offsetX = 4,
offsetY = 14,
spacing = 70.6,
size = Vector2(131, 85),
norsouce = "com_empty",
selsouce = "ui_tab_13",
fontSize = 20,
win_name = UIType.UITabButton6,
},
--伪全屏窗口排行榜的特殊页签样式
[8] = {
--不带图标的并且四个字居中的
offsetX = 0,
offsetY = 0,
spacing = 74,
size = Vector2(168, 67),--Bg大小
trm_size = Vector2(166, 65),--节点大小
norsouce = "com_empty",
selsouce = "ui_tab_8",
fontSize = 18,
win_name = UIType.UITabButton8,
red_dot_pos = Vector2(73, 26),--红点坐标,有就修改没有就默认
},
[9] = {
--特殊用,带图标的,如珍宝
offsetX = -19,
offsetY = 35-17,
spacing = 71,
size = Vector2(176, 84),--Bg大小
norsouce = "com_empty",
selsouce = "ui_tab_15",
fontSize = 20,
win_name = UIType.UITabButton9,
},
}
function UITabButton:__init(parent_wnd,prefab_asset,layer_name,view_style,special_style,is_scroll)
self.button_style = view_style == UITabWindow.SizeLarge and 1 or 2
self.is_scroll = is_scroll
-- (parent_wnd,prefab_asset,layer_name, show_bg, left_alignment)
if special_style and UITabButton.Style[special_style] then
--特殊选项
self.button_style = special_style
elseif view_style == UITabWindow.SizeSmallHall then
self.button_style = 3
elseif view_style == UITabWindow.SizeSmallSP then
self.button_style = 4
end
self.base_file = "uiComponent"
self.layout_file = UITabButton.Style[self.button_style] and UITabButton.Style[self.button_style].win_name or UIType.UITabButton
self.index = 0
self.cur_choose_index = 1
self.name = ""
self.extra_arg_table = false
self:Load()
self.cur_layout = lua_viewM.cur_layout or "" --公共组件,要判断是否对应界面
self.is_selected = false
self.redpos_loaded = false -- 红点位置是否已经加载过了
end
function UITabButton:__delete()
if self.guide_trigger_id then
GlobalEventSystem:UnBind(self.guide_trigger_id)
self.guide_trigger_id = nil
end
self.cur_layout = ""
end
function UITabButton:Load_callback()
self.nodes = {
"nomal_text:obj", "choose_text:obj",
}
self:GetChildren(self.nodes)
self.nomal_text_txt = self.nomal_text:GetComponent("Text") or self.nomal_text:GetComponent(typeof(TMPro.TextMeshProUGUI))
self.choose_text_txt = self.choose_text:GetComponent("Text") or self.choose_text:GetComponent(typeof(TMPro.TextMeshProUGUI))
-------------------------
self.btn_img = self.transform:GetComponent("Image")
self.line1_obj = self:GetChild("line1").gameObject
self.line_obj = self:GetChild("line").gameObject
self.line_img = self:GetChild("line"):GetComponent("Image")
self.redPoint_transform = self:GetChild("RedPoint")
self.bg = self:GetChild("bg")
self.bg_img = self:GetChild("bg"):GetComponent("Image")
self.bg_obj = self:GetChild("bg").gameObject
if self.button_style == 1 or self.button_style == 9 or self.button_style == 8 then
self.icon_img = self:GetChild("icon"):GetComponent("Image")
if self.button_style == 1 then
self.icon_clock_obj = self:GetChild("icon_clock").gameObject
end
elseif self.button_style == 6 then--排行榜使用的特殊页签样式
self.rankRewardBox_obj = self:GetChild("rankRewardBox").gameObject
self.rankKfRushFlag_obj = self:GetChild("kf_rush_flag").gameObject
end
if UITabButton.Style[self.button_style] and UITabButton.Style[self.button_style].can_set_red_num then
self.red_num_obj = self:GetChild("RedNumPoint") .gameObject
self.red_num_tmp = self:GetChild("RedNumPoint/red_num"):GetComponent(typeof(TMPro.TextMeshProUGUI))
end
self.transform.anchorMin = Vector2(0.5, 1)
self.transform.anchorMax = Vector2(0.5, 1)
self.transform.pivot = Vector2(0.5, 1)
-- self.transform:SetAsFirstSibling()
self:InitEvent()
if self.need_refreshData then
self:SetData(self.index,self.vo,self.callback,self.all_len, self.extra_arg_table)
if self.show_red_dot then
self:ShowRedPoint(true)
end
if self.show_red_dot_num or self.force_show_redNum_red then
self:ShowRedPointWithNum(self.show_red_dot_num, self.force_show_redNum_red)
end
if self.speciel_img_state then
self:SetSpeacialImg(self.speciel_img_state)
end
end
end
function UITabButton:SetData(index,vo,callback,all_len,extra_arg_table)
self.index = index
self.tab_id = vo.id or index
self.vo = vo
self.callback = callback
self.all_len = all_len
self.extra_arg_table = extra_arg_table
self.name = vo.name and vo.name or vo
-- self.is_selected = -1--为了再次设置数据重置一下
if self.is_loaded then
self.transform.name = self.index
self.parms = UITabButton.Style[self.button_style]
local parms = UITabButton.Style[self.button_style] or {offsetX = 50, offsetY = -140, spacing = 110}
self.index = index
self.nomal_text_txt.text = self.name
self.choose_text_txt.text = self.name
self:SetDunMulImg(vo.mul_state,vo.mul_num)
if vo.tip_state and vo.tip_state > 0 then
if vo.mul_state then
vo.tip_state = 1
end
self:SetSpeacialImg(vo.tip_state)
end
if self.icon_clock_obj then
self.icon_clock_obj:SetActive(vo.tip_bless and true or false)
end
self:SetTextSize(parms.fontSize)
-- self:SetPosition(parms.offsetX, parms.offsetY - (self.index - 1) * parms.spacing)
if self.is_scroll and self.button_style == 4 then
self.transform.anchoredPosition = Vector3(parms.offsetX, parms.offsetY - (self.index - 1) * parms.spacing, 0)
else
self.transform.anchoredPosition = Vector3(parms.offsetX, parms.offsetY - (self.index - 1) * parms.spacing - 10, 0)
end
-- self.transform:SetAsFirstSibling()
self:SetSize(parms.trm_size,parms.size)
self:SetSelect(self.is_selected)
-------------------------
if self.parms.line_size and self.parms.line_offer then
local node1 = self:GetChild("line").transform
SetSizeDelta(node1, self.parms.line_size.x, self.parms.line_size.y)
local change_x,change_y = self.parms.line_offer.x,self.parms.line_offer.y
local x,y = GetAnchoredPosition( node1.transform )
SetAnchoredPosition( node1.transform, x+change_x, y+change_y )
local node2 = self:GetChild("line1").transform
SetSizeDelta(node2, self.parms.line_size.x, self.parms.line_size.y)
local x,y = GetAnchoredPosition( node2.transform )
SetAnchoredPosition( node2.transform, x-change_x, y-change_y )
end
if self.parms.red_dot_pos and not self.redpos_loaded then--设置红点坐标
SetAnchoredPosition( self.redPoint_transform, self.parms.red_dot_pos.x, self.parms.red_dot_pos.y )
self.redpos_loaded = true
end
self.line1_obj:SetActive(self.index == 1 and not self.is_selected and self.button_style ~= 3)
self:AddToStageHandler()
if self.button_style == 6 then--排行榜使用的特殊页签样式
if not RankModel:getInstance().is_cs_rank then
local is_show_rank_target_box = RankModel:getInstance():IsTabRankTargetCfg(self.tab_id)
self.rankRewardBox_obj:SetActive(is_show_rank_target_box)
SetAnchoredPositionX(self.choose_text, 23.5)
SetAnchoredPositionX(self.nomal_text, 23.5)
self.rankKfRushFlag_obj:SetActive(self.tab_id >= 1 and self.tab_id <= 3)
else
self.rankRewardBox_obj:SetActive(false)
SetAnchoredPositionX(self.choose_text, 3)
SetAnchoredPositionX(self.nomal_text, 3)
self.rankKfRushFlag_obj:SetActive(false)
end
else
if self.extra_arg_table and self.extra_arg_table.tab_pos_x then
SetAnchoredPositionX(self.choose_text, self.extra_arg_table.tab_pos_x)
SetAnchoredPositionX(self.nomal_text, self.extra_arg_table.tab_pos_x)
end
end
else
self.need_refreshData = true
end
end
function UITabButton:SetSelect(bool)
self.is_selected = bool
if self.is_loaded then
if bool then
lua_resM:setImageSprite(self,self.bg_img,"uiComponent_asset",self.parms.selsouce,true)
if (self.button_style == 1 or self.button_style == 9 or self.button_style == 8) and self.vo.abName and self.vo.light_res then
lua_resM:setImageSprite(self, self.icon_img, self.vo.abName, self.vo.light_res,true)
end
self.nomal_text_obj:SetActive(false)
self.choose_text_obj:SetActive(true)
else
lua_resM:setImageSprite(self,self.bg_img,"uiComponent_asset",self.parms.norsouce,false)
if (self.button_style == 1 or self.button_style == 9 or self.button_style == 8) and self.vo.abName and self.vo.dark_res then
lua_resM:setImageSprite(self, self.icon_img, self.vo.abName, self.vo.dark_res,true)
end
self.nomal_text_obj:SetActive(true)
self.choose_text_obj:SetActive(false)
end
self.line1_obj:SetActive(self.index == 1 and not self.is_selected and self.button_style ~= 3)
self.line_obj:SetActive(not self.is_selected)
else
self.need_refreshData = true
end
end
--[[
574E5DFF
]]
function UITabButton:InitEvent()
local function onTabBtnHandler(target)
if self.callback ~= nil then
self:ClickCall()
end
end
AddClickEvent(self.bg_obj,onTabBtnHandler,LuaSoundManager.SOUND_UI.SWITCH, false)
if self.button_style == 6 then
local on_click = function ( click_obj )
if self.rankRewardBox_obj == click_obj then
RankModel:Fire(RankModel.OPEN_RANK_TARGET_VIEW, self.tab_id)
end
end
AddClickEvent(self.rankRewardBox_obj, on_click, nil, false)
end
end
function UITabButton:ShowRedPoint(bool)
bool = bool == nil and false or bool
self.show_red_dot = bool
if self.is_loaded then
self.redPoint_transform.gameObject:SetActive(bool)
end
end
function UITabButton:ShowRedPointWithNum(num, force_show)
self.show_red_dot_num = num or 0
self.force_show_redNum_red = force_show and true or false
if self.is_loaded then
if not IsNull(self.red_num_obj) then
self.red_num_obj:SetActive(self.show_red_dot_num > 0 or force_show)
self.red_num_tmp.text = self.show_red_dot_num > 0 and self.show_red_dot_num or (force_show and "!" or 0)
end
end
end
function UITabButton:SetTextSize(font_size)
if self.is_loaded then
self.nomal_text_txt.fontSize = font_size
self.choose_text_txt.fontSize = font_size
end
end
function UITabButton:SetSize(trm_size,size)
self.transform.sizeDelta = trm_size or Vector2(150, 84)
self.bg.sizeDelta = size or Vector2(142, 90)
end
function UITabButton:DoBatch(batch_parent)
self.batch_parent = batch_parent
if not self.batch_parent then
return
end
if self.is_loaded then
self.redPoint_transform:SetParent(self.batch_parent)
self.nomal_text:SetParent(self.batch_parent)
self.choose_text:SetParent(self.batch_parent)
end
end
function UITabButton:SetVisible(flag)
BaseItem.SetVisible(self, flag)
if self.nomal_text and self.nomal_text_obj.activeSelf ~= flag then
self.nomal_text_obj:SetActive(flag)
self.choose_text_obj:SetActive(flag)
end
if self.redPoint_transform and self.redPoint_transform.gameObject.activeSelf ~= (self.show_red_dot and flag) then
self.redPoint_transform.gameObject:SetActive(self.show_red_dot and flag)
end
end
function UITabButton:ClickCall( )
self.callback(self.tab_id)
--结束引导
if self.cur_layout == "BossView" then
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.FORBIDDEN_TYPE,2)
if helpVo and self.index==4 then
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
end
end
end
function UITabButton:AddToStageHandler()
if self.gameObject == nil then return end
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.FORBIDDEN_TYPE,2)
if helpVo then
local help_type = helpVo.help_type
local step = helpVo.step
if self.cur_layout == "BossView" then
if help_type == HelpType.FORBIDDEN_TYPE then
if step == 2 and self.index==4 then
local button = self.gameObject
if button then
local function call_back()
self:ClickCall()
end
GlobalEventSystem:Fire(EventName.OPEN_GUIDE_PROMPT_VIEW,button.transform,self.transform,call_back,helpVo)
end
end
end
end
end
end
--设置副本多倍标签
function UITabButton:SetDunMulImg( bool,mul_num )
if self.button_style == 3 and self.is_loaded then
if not self.mulText_tmp then
self.mulText_tmp = self:GetChild("mulImg/mulText"):GetComponent(typeof(TMPro.TextMeshProUGUI))
end
if not self.mulImg_obj then
self.mulImg_obj = self:GetChild("mulImg").gameObject
end
if not mul_num and bool then
self.mulText_tmp.text = "奖励翻倍"
else
self.mulText_tmp.text = string.format("奖励X%s",mul_num)
end
self.mulImg_obj:SetActive(bool)
end
end
--设置特殊角标
function UITabButton:SetSpeacialImg( state )
self.speciel_img_state = state
if not self.is_loaded then
return
end
if not self.specielImg_img then
self.specielImg = self:GetChild("specielImg")
if self.specielImg then
self.specielImg_img = self:GetChild("specielImg"):GetComponent("Image")
end
end
-- if self.specielImg then
-- self.specielImg:SetActive(bool)
-- end
if self.specielImg_img and state then
local ab_name = "common_asset"
local res_name
if state and state == 1 then --双倍
res_name = "ui_tab_tip1"
if self.button_style == 3 then
SetAnchoredPosition(self.specielImg.transform, -53, 25)
SetSizeDelta(self.specielImg.transform, 47.1, 27.5)
elseif self.button_style == 5 then
SetAnchoredPosition(self.specielImg.transform, -40, 26)
SetSizeDelta(self.specielImg.transform, 46, 25)
else
SetAnchoredPosition(self.specielImg.transform, -42, 31)
SetSizeDelta(self.specielImg.transform, 46, 25)
end
elseif state and state == 2 then --新品
res_name = "com_news_tips_1"
if self.button_style == 3 then
SetAnchoredPosition(self.specielImg.transform, -53, 25)
SetSizeDelta(self.specielImg.transform, 47.1, 27.5)
end
elseif state and state == 3 then --升品石
res_name = "com_news_tips_2"
if self.button_style == 5 then
SetAnchoredPosition(self.specielImg.transform, -24, 24)
SetSizeDelta(self.specielImg.transform, 71, 23)
end
elseif state and state == 4 then --珍宝UP
res_name = "com_news_tips_3"
if self.button_style == 5 then
SetAnchoredPosition(self.specielImg.transform, -24, 24)
SetSizeDelta(self.specielImg.transform, 71, 23)
end
end
if res_name then
lua_resM:setImageSprite(self,self.specielImg_img,ab_name,res_name, false)
end
end
end