源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 

133 wiersze
4.7 KiB

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