源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

268 行
5.5 KiB

  1. TaskDailyView = TaskDailyView or BaseClass(BaseView)
  2. local TaskDailyView = TaskDailyView
  3. TaskDailyView.Show_List = {
  4. [1] = {
  5. id = 1,
  6. str = "经验副本",
  7. icon_name = "icon_54_jjfb",
  8. exp = 0,
  9. show_recommend = true,
  10. },
  11. [2] = {
  12. id = 2,
  13. str = "日常任务",
  14. icon_name = "icon_53_mrll",
  15. exp = 0,
  16. show_recommend = false,
  17. },
  18. [3] = {
  19. id = 3,
  20. str = "社团任务",
  21. icon_name = "icon_49_ghrw",
  22. exp = 0,
  23. show_recommend = false,
  24. },
  25. [4] = {
  26. id = 4,
  27. str = "飞艇护送",
  28. icon_name = "icon_48_fths",
  29. exp = 0,
  30. show_recommend = false,
  31. },
  32. [5] = {
  33. id = 5,
  34. str = "前往挂机",
  35. icon_name = "icon_57_ywgj",
  36. exp = 0,
  37. show_recommend = false,
  38. },
  39. [6] = {
  40. id = 6,
  41. str = "装备副本",
  42. icon_name = "icon_55_zbfb",
  43. exp = 0,
  44. show_recommend = false,
  45. },
  46. }
  47. function TaskDailyView:__init()
  48. self.base_file = "task"
  49. self.layout_file = "TaskDailyView"
  50. self.layer_name = "Main"
  51. self.destroy_imm = true
  52. self.use_background = true
  53. self.open_wnd_anim = 0
  54. self.hide_maincancas = false
  55. self.change_scene_close = true
  56. self.click_bg_toClose = true
  57. self.background_alpha = 0
  58. self.is_set_order_sorting = false
  59. self.item_list = {}
  60. self.model = TaskModel:getInstance()
  61. self.is_moving = false
  62. self.load_callback = function()
  63. self:LoadSuccess()
  64. self:InitEvent()
  65. end
  66. self.open_callback = function()
  67. self:InitView()
  68. end
  69. self.close_callback = function( )
  70. end
  71. self.destroy_callback = function()
  72. self:Remove()
  73. end
  74. end
  75. function TaskDailyView:InitView()
  76. self:UpdateView()
  77. self:TweenShowPanelPosition(true)
  78. end
  79. function TaskDailyView:Open()
  80. BaseView.Open(self)
  81. end
  82. function TaskDailyView:Remove()
  83. for k,v in pairs(self.item_list) do
  84. v:DeleteMe()
  85. end
  86. self.item_list = {}
  87. self:CancelTween()
  88. self:CancelTimer()
  89. end
  90. function TaskDailyView:LoadSuccess()
  91. self.transform.localPosition = Vector3.zero
  92. self.transform.sizeDelta = Vector3.zero
  93. if ClientConfig.iphone_x_model then
  94. self.transform.offsetMin = Vector2(ClientConfig.iphone_x_offset_left,0)
  95. self.transform.offsetMax = Vector2(-ClientConfig.iphone_x_offset_right,0)
  96. end
  97. self.showObject,
  98. self.mask_btn,
  99. self.close_btn = self:GetChildGameObjects({
  100. "Mask/ShowInfo",
  101. "MaskBtn",
  102. "Mask/ShowInfo/CloseBtn",
  103. })
  104. self.maskCon,
  105. self.showCon,
  106. self.mScoll,
  107. self.mContent,
  108. self.item_parent = self:GetChildTransforms({
  109. "Mask",
  110. "Mask/ShowInfo",
  111. "Mask/ShowInfo/ScrollView",
  112. "Mask/ShowInfo/ScrollView/Viewport/Content",
  113. "Mask/ShowInfo/ScrollView/Viewport/Content/ItemParent",
  114. })
  115. self.showCon.anchoredPosition = Vector2(-250,-223)
  116. self.maskCon.anchoredPosition = Vector2(300,-335)
  117. end
  118. function TaskDailyView:InitEvent()
  119. local function onBtnClickHandler(target)
  120. if target == self.mask_btn or target == self.close_btn then
  121. if self.is_moving then
  122. return
  123. end
  124. self.mask_btn:SetActive(false)
  125. self:TweenShowPanelPosition(false)
  126. end
  127. end
  128. AddClickEvent(self.mask_btn,onBtnClickHandler)
  129. AddClickEvent(self.close_btn,onBtnClickHandler)
  130. end
  131. function TaskDailyView:UpdateView( )
  132. local list = self:GetShowList()
  133. local len = #list
  134. for i,v in ipairs(list) do
  135. if self:CheckOperation(v) then
  136. local item = self.item_list[i]
  137. if not item then
  138. item = TaskDailyItem.New(self.item_parent)
  139. self.item_list[i] = item
  140. end
  141. item:SetVisible(true)
  142. item:SetData(i,v)
  143. end
  144. end
  145. self.mContent.sizeDelta = Vector2(360,99 * len)
  146. for i=#list+1, #self.item_list do
  147. self.item_list[i]:SetVisible(false)
  148. end
  149. end
  150. --是否做完
  151. function TaskDailyView:CheckOperation( vo )
  152. local lv = RoleManager.Instance.mainRoleInfo.level
  153. if vo.id==1 then
  154. return BaseDungeonModel:getInstance():CanChallengeDun(BaseDungeonModel.DUN_TYPE.EXP)
  155. elseif vo.id==2 then
  156. return (self.model:CanAcceptCircleTask(TaskType.BOUNTY_LINE) or #self.model:GetTabData(TaskType.BOUNTY_LINE) > 0)
  157. elseif vo.id==3 then
  158. return (self.model:CanAcceptCircleTask(TaskType.GUILD_LINE) or #self.model:GetTabData(TaskType.GUILD_LINE) > 0)
  159. elseif vo.id==5 then
  160. return true
  161. elseif vo.id==6 then
  162. return BaseDungeonModel:getInstance():CanChallengeDun(BaseDungeonModel.DUN_TYPE.EQUIP)
  163. end
  164. return true
  165. end
  166. --是否做完
  167. function TaskDailyView:GetShowList()
  168. local id_list = {}
  169. for index,vo in ipairs(TaskDailyView.Show_List) do
  170. if self:CheckOperation(vo) then
  171. table.insert(id_list,vo)
  172. end
  173. end
  174. if #id_list > 0 then
  175. for index,vo in pairs(id_list) do
  176. vo.exp = self.model:GetDoubleExp(vo.id)
  177. end
  178. local function sort_func(vo1,vo2)
  179. if vo1.exp ~= vo2.exp then
  180. return vo1.exp > vo2.exp
  181. else
  182. return vo1.id < vo2.id
  183. end
  184. end
  185. table.sort(id_list,sort_func)
  186. end
  187. return id_list
  188. end
  189. function TaskDailyView:CancelTimer()
  190. if self.timer_id then
  191. TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_id)
  192. self.timer_id = nil
  193. end
  194. end
  195. function TaskDailyView:CancelTween()
  196. if self.tween_id then
  197. TweenLite.Stop(self.tween_id)
  198. self.tween_id = nil
  199. end
  200. end
  201. function TaskDailyView:TweenShowPanelPosition(is_show)
  202. if self.is_moving then
  203. return
  204. end
  205. self.is_moving = true
  206. self:CancelTween()
  207. self:CancelTimer()
  208. local func = function ()
  209. if self._use_delete_method then
  210. return
  211. end
  212. self:CancelTimer()
  213. local end_x = is_show and 270 or -250
  214. if is_show then
  215. self.showObject:SetActive(true)
  216. end
  217. self.tween_id = TweenLite.to(self, self.showCon, TweenLite.UiAnimationType.ANCHORED_POSX, end_x, 0.2, function ()
  218. if self._use_delete_method then
  219. return
  220. end
  221. if is_show then
  222. self.mask_btn:SetActive(true)
  223. else
  224. self:Close()
  225. end
  226. self.is_moving = false
  227. end)
  228. end
  229. self.timer_id = TimerQuest.AddDelayQuest(GlobalTimerQuest, func,0.04)
  230. end