-- <*
|
|
-- @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 "<color=#a9c1e1>未解锁</color>" or "<color=#2cf86f>已完成</color>") 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
|