-- <* -- @Author: Saber -- @Description: 转职界面右侧职业tab按钮 -- *> ReinTaskTabItem = ReinTaskTabItem or BaseClass(BaseItem) local ReinTaskTabItem = ReinTaskTabItem function ReinTaskTabItem:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "reincarnation" self.layout_file = "ReinTaskTabItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.is_selected = false self.main_vo = RoleManager.Instance.mainRoleInfo self.model = ReincarnationModel:getInstance() self.progress_list = {} -- 进度图片节点 self:Load() end function ReinTaskTabItem:Load_callback() local nodes = { "career_bg:obj:img", "career_bg/career_icon:raw", "career_bg/lock:obj", "selected:obj", "state_lb:tmp", "state_icon:img", "career_name:tmp", "progress_con", "turn:tmp", } self:GetChildren(nodes) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function ReinTaskTabItem:AddEvents( ) local function click_event(target) if target == self.career_bg_obj then if self.data and self.callback then self.callback(self.data.transfer_id) end end end AddClickEvent(self.career_bg_obj, click_event) end function ReinTaskTabItem:SetData( data, index, callback ) self.data = data self.index = index self.callback = callback if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function ReinTaskTabItem:UpdateView( ) self:UpdateBasicData() self:UpdateTurnState() self:SetSelected(self.is_selected) end function ReinTaskTabItem:UpdateBasicData( ) local career = self.main_vo.career if self.data then -- 加载职称 self.career_name_tmp.text = Trim(self.data.name) self.turn_tmp.text = ReincarnationConst.TurnTips[self.data.transfer_id] -- 加载转职头像 lua_resM:setOutsideRawImage(self, self.career_icon_raw, GameResPath.GetHeadIcon(self.data.image_id)) end end -- 更新转职进度表现 function ReinTaskTabItem:UpdateTurnState( ) local turn, turn_stage = self.main_vo.turn, self.main_vo.turn_stage -- 先隐藏所有的进度节点 for k, v in ipairs(self.progress_list) do v.gameObject:SetActive(false) end local show_flag = false local is_locked = false if self.data.transfer_id < turn + 1 then -- 往期转职 show_flag = true elseif self.data.transfer_id == turn + 1 then -- 当前进行中的转职 local cur_task_vo = self.model:GetCurTaskVo() -- 存在任务或者转职阶段不为0,则处于转职进行中,否则未解锁 if cur_task_vo or turn_stage ~= 0 then local rein_stage_cfg = self.model:GetReinLvStageData(self.data.transfer_id) local total_stage = rein_stage_cfg and #rein_stage_cfg or 5 -- 当前已接任务则当前阶段等于进行中的阶段,否则为下一阶段 -- local task_received = cur_task_vo.acceptType == 0 -- local real_index = task_received and turn_stage or turn_stage + 1 -- real_index = real_index > total_stage and total_stage or real_index -- 创建进度表现 for i = 1, total_stage do self.progress_list[i] = self.progress_list[i] or UiFactory.createChild(self.progress_con, UIType.Image3, "progress" .. i) SetAnchoredPosition(self.progress_list[i].transform, (i-1) * 11 - 41, -0.5) lua_resM:setImageSprite(self, self.progress_list[i]:GetComponent("Image"), "reincarnation_asset", i <= turn_stage and "re_tab_progress1" or "re_tab_progress0", true) self.progress_list[i].gameObject:SetActive(true) end else show_flag = true is_locked = true end else -- 未解锁 show_flag = true is_locked = true end self.lock_obj:SetActive(is_locked) lua_resM:setImageSprite(self, self.state_icon_img, "reincarnation_asset", is_locked and "rein_preview_locked" or "rein_preview_finished", true) self.state_icon_img.enabled = show_flag self.state_lb_tmp.text = show_flag and (is_locked and "未解锁" or "已完成") or "" end function ReinTaskTabItem:SetSelected(bool) self.is_selected = bool if self.is_loaded then self.selected_obj:SetActive(self.is_selected) self.career_name_tmp.color = ColorUtil:ConvertHexToRGBColor(self.is_selected and "#fdffc2" or "#ffffff") end end function ReinTaskTabItem:__delete( ) end