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

133 lines
4.7 KiB

пре 4 недеља
  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 转职界面右侧职业tab按钮
  4. -- *>
  5. ReinTaskTabItem = ReinTaskTabItem or BaseClass(BaseItem)
  6. local ReinTaskTabItem = ReinTaskTabItem
  7. function ReinTaskTabItem:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "reincarnation"
  9. self.layout_file = "ReinTaskTabItem"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.is_selected = false
  13. self.main_vo = RoleManager.Instance.mainRoleInfo
  14. self.model = ReincarnationModel:getInstance()
  15. self.progress_list = {} -- 进度图片节点
  16. self:Load()
  17. end
  18. function ReinTaskTabItem:Load_callback()
  19. local nodes = {
  20. "career_bg:obj:img",
  21. "career_bg/career_icon:raw",
  22. "career_bg/lock:obj",
  23. "selected:obj",
  24. "state_lb:tmp", "state_icon:img",
  25. "career_name:tmp",
  26. "progress_con",
  27. "turn:tmp",
  28. }
  29. self:GetChildren(nodes)
  30. self:AddEvents()
  31. if self.need_refreshData then
  32. self:UpdateView()
  33. end
  34. end
  35. function ReinTaskTabItem:AddEvents( )
  36. local function click_event(target)
  37. if target == self.career_bg_obj then
  38. if self.data and self.callback then
  39. self.callback(self.data.transfer_id)
  40. end
  41. end
  42. end
  43. AddClickEvent(self.career_bg_obj, click_event)
  44. end
  45. function ReinTaskTabItem:SetData( data, index, callback )
  46. self.data = data
  47. self.index = index
  48. self.callback = callback
  49. if self.is_loaded then
  50. self.need_refreshData = false
  51. self:UpdateView()
  52. else
  53. self.need_refreshData = true
  54. end
  55. end
  56. function ReinTaskTabItem:UpdateView( )
  57. self:UpdateBasicData()
  58. self:UpdateTurnState()
  59. self:SetSelected(self.is_selected)
  60. end
  61. function ReinTaskTabItem:UpdateBasicData( )
  62. local career = self.main_vo.career
  63. if self.data then
  64. -- 加载职称
  65. self.career_name_tmp.text = Trim(self.data.name)
  66. self.turn_tmp.text = ReincarnationConst.TurnTips[self.data.transfer_id]
  67. -- 加载转职头像
  68. lua_resM:setOutsideRawImage(self, self.career_icon_raw, GameResPath.GetHeadIcon(self.data.image_id))
  69. end
  70. end
  71. -- 更新转职进度表现
  72. function ReinTaskTabItem:UpdateTurnState( )
  73. local turn, turn_stage = self.main_vo.turn, self.main_vo.turn_stage
  74. -- 先隐藏所有的进度节点
  75. for k, v in ipairs(self.progress_list) do
  76. v.gameObject:SetActive(false)
  77. end
  78. local show_flag = false
  79. local is_locked = false
  80. if self.data.transfer_id < turn + 1 then -- 往期转职
  81. show_flag = true
  82. elseif self.data.transfer_id == turn + 1 then -- 当前进行中的转职
  83. local cur_task_vo = self.model:GetCurTaskVo()
  84. -- 存在任务或者转职阶段不为0,则处于转职进行中,否则未解锁
  85. if cur_task_vo or turn_stage ~= 0 then
  86. local rein_stage_cfg = self.model:GetReinLvStageData(self.data.transfer_id)
  87. local total_stage = rein_stage_cfg and #rein_stage_cfg or 5
  88. -- 当前已接任务则当前阶段等于进行中的阶段,否则为下一阶段
  89. -- local task_received = cur_task_vo.acceptType == 0
  90. -- local real_index = task_received and turn_stage or turn_stage + 1
  91. -- real_index = real_index > total_stage and total_stage or real_index
  92. -- 创建进度表现
  93. for i = 1, total_stage do
  94. self.progress_list[i] = self.progress_list[i] or UiFactory.createChild(self.progress_con, UIType.Image3, "progress" .. i)
  95. SetAnchoredPosition(self.progress_list[i].transform, (i-1) * 11 - 41, -0.5)
  96. lua_resM:setImageSprite(self, self.progress_list[i]:GetComponent("Image"),
  97. "reincarnation_asset", i <= turn_stage and "re_tab_progress1" or "re_tab_progress0", true)
  98. self.progress_list[i].gameObject:SetActive(true)
  99. end
  100. else
  101. show_flag = true
  102. is_locked = true
  103. end
  104. else -- 未解锁
  105. show_flag = true
  106. is_locked = true
  107. end
  108. self.lock_obj:SetActive(is_locked)
  109. lua_resM:setImageSprite(self, self.state_icon_img, "reincarnation_asset", is_locked and "rein_preview_locked" or "rein_preview_finished", true)
  110. self.state_icon_img.enabled = show_flag
  111. self.state_lb_tmp.text = show_flag and (is_locked and "<color=#a9c1e1>未解锁</color>" or "<color=#2cf86f>已完成</color>") or ""
  112. end
  113. function ReinTaskTabItem:SetSelected(bool)
  114. self.is_selected = bool
  115. if self.is_loaded then
  116. self.selected_obj:SetActive(self.is_selected)
  117. self.career_name_tmp.color = ColorUtil:ConvertHexToRGBColor(self.is_selected and "#fdffc2" or "#ffffff")
  118. end
  119. end
  120. function ReinTaskTabItem:__delete( )
  121. end