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