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

215 lines
6.3 KiB

  1. SceneSpecialTipView = SceneSpecialTipView or BaseClass(BaseView)
  2. local SceneSpecialTipView = SceneSpecialTipView
  3. function SceneSpecialTipView:__init()
  4. self.base_file = "common"
  5. self.layout_file = "SceneSpecialTipView"
  6. self.layer_name = "Main"
  7. self.close_mode = CloseMode.CloseVisible
  8. self.destroy_imm = false
  9. self.use_background = false
  10. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  11. self.need_show_money = false --是否要显示顶部的金钱栏
  12. self.particle_mgr = ParticleManager:getInstance()
  13. self.taskShowList = {} --队列
  14. self.task_effect_loaded_flag = {}
  15. self.isShowTask = false
  16. self.wait_show_list = {} --所有等待显示队列
  17. self.load_callback = function ()
  18. self:LoadSuccess()
  19. self:AddEvent()
  20. end
  21. self.open_callback = function ( )
  22. self:OpenSuccess()
  23. end
  24. self.destroy_callback = function ( )
  25. self:DestroySuccess()
  26. end
  27. end
  28. function SceneSpecialTipView:Open(data)
  29. self.data = data
  30. BaseView.Open(self)
  31. end
  32. function SceneSpecialTipView:LoadSuccess()
  33. self.nodes = {
  34. --"task_icon:img:obj", "up_grade_icon:img:obj",
  35. "up_grade_effect:obj", "accept_effect_cont:obj", "complete_effect_cont:obj", "ball_buff:obj:img",
  36. }
  37. self:GetChildren(self.nodes)
  38. --设置sceneView的自适应
  39. --self.transform.sizeDelta = Vector2(ScreenWidth, ScreenHeight)
  40. SetAnchoredPosition(self.transform, 0, 0)
  41. --SetAnchoredPosition(self.task_icon, 0, ScreenHeight / 3 - 165)
  42. end
  43. function SceneSpecialTipView:AddEvent()
  44. end
  45. function SceneSpecialTipView:OpenSuccess()
  46. self:UpdateTips(self.data)
  47. end
  48. function SceneSpecialTipView:UpdateTips(data)
  49. self.data = data
  50. --[[
  51. type :
  52. isAccept:
  53. ]]
  54. if self.is_playing_level_up_effect or self.isShowTask then
  55. table.insert(self.wait_show_list, data)
  56. return
  57. end
  58. if self.data.type == SceneSpecialTipType.upgrade then
  59. -- self:AddUIEffect("ui_effcet_rolelvup",self.up_grade_effect, self.layer_name, nil, 1, false)
  60. -- local data = {
  61. -- resname = "ui_effcet_rolelvup",
  62. -- uiTranform = self.up_grade_effect,
  63. -- layer_name = self.layer_name,
  64. -- scale = 1,
  65. -- is_loop = false,
  66. -- }
  67. -- self:AddUIEffectByTime(data,0.1,"SceneSpecialTipView_ui_effcet_rolelvup")
  68. if self.is_playing_level_up_effect then
  69. return
  70. end
  71. self.is_playing_level_up_effect = true
  72. if not self.has_load_level_up_effect then
  73. self.has_load_level_up_effect = true
  74. self:AddUIEffect("ui_effcet_rolelvup", self.up_grade_effect, self.layer_name, nil, 1, false, -1)
  75. else
  76. self.up_grade_effect_obj:SetActive(true)
  77. end
  78. if self.scene_upgrade_effect_id then
  79. self.particle_mgr:DelEffect(self.scene_upgrade_effect_id)
  80. self.scene_upgrade_effect_id = false
  81. end
  82. local main_role = Scene.Instance.main_role
  83. if main_role then
  84. self.scene_upgrade_effect_id = self.particle_mgr:AddTargetEffect("effect_rolelvup", main_role.compress_id, true, nil, nil, 7)
  85. end
  86. local function on_reset( )
  87. self.is_playing_level_up_effect = false
  88. self.up_grade_effect_obj:SetActive(false)
  89. self:CheckNextShow()
  90. end
  91. if self.delay_id2 then
  92. GlobalTimerQuest:CancelQuest(self.delay_id2)
  93. self.delay_id2 = nil
  94. end
  95. self.delay_id2 = setTimeout(on_reset, 1)
  96. lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.LEVELUP)
  97. elseif self.data.type == SceneSpecialTipType.task then
  98. --接受任务不显示
  99. if not self.data.isAccept then
  100. self:SetTaskShow(self.data.isAccept)
  101. end
  102. -- elseif self.data.type == SceneSpecialTipType.ballBuff then
  103. -- self.ball_buff_obj:SetActive(true)
  104. -- lua_resM:setImageSprite(self, self.ball_buff_img, "dungeonPet_asset","dun_pet_buff_"..self.data.buff_id,true)
  105. -- local function delay_close( )
  106. -- self:Close()
  107. -- end
  108. -- -- self.delay_close_view_timer = GlobalTimerQuest:AddDelayQuest(delay_close,0.6)
  109. -- -- local scaleAction = cc.ScaleTo.New(0.2, 1, 1, 1)
  110. -- local moveAction = cc.MoveTo.createAnchoredType(0.6, 0, 85)
  111. -- local callfun1 = cc.CallFunc.New(delay_close)
  112. -- local action = cc.Sequence.New(moveAction,cc.DelayTime.New(1), callfun1)
  113. -- cc.ActionManager:getInstance():addAction(action, self.transform)
  114. end
  115. end
  116. function SceneSpecialTipView:SetTaskShow( whichNext )
  117. if self.taskShowList and #self.taskShowList >= 2 then
  118. return
  119. end
  120. table.insert(self.taskShowList,whichNext)
  121. if self.isShowTask == false then
  122. self:TakShowAnimation()
  123. end
  124. end
  125. function SceneSpecialTipView:TakShowAnimation()
  126. if #self.taskShowList <= 0 then
  127. self.isShowTask = false
  128. return
  129. end
  130. self.isShowTask = true
  131. local effect_name = "ui_effcet_complete"
  132. local effect_cont = self.accept_effect_cont
  133. if self.taskShowList[1] then
  134. effect_name = "ui_effcet_accepttask"
  135. effect_cont = self.complete_effect_cont
  136. end
  137. if not self.task_effect_loaded_flag[effect_name] then
  138. self.task_effect_loaded_flag[effect_name] = true
  139. self:AddUIEffect(effect_name, effect_cont, self.layer_name, nil, 1, false, -1)
  140. else
  141. effect_cont.gameObject:SetActive(true)
  142. end
  143. if effect_name == "ui_effcet_complete" then
  144. lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.UPGRADE)
  145. end
  146. local function delay( )
  147. table.remove(self.taskShowList,1)
  148. if not IsNull(effect_cont) then
  149. effect_cont.gameObject:SetActive(false)
  150. end
  151. self.isShowTask = false
  152. self:CheckNextShow()
  153. end
  154. if self.delay_id then
  155. GlobalTimerQuest:CancelQuest(self.delay_id)
  156. self.delay_id = nil
  157. end
  158. self.delay_id = setTimeout(delay, 1)
  159. end
  160. function SceneSpecialTipView:DestroySuccess( )
  161. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
  162. if self.delay_id then
  163. GlobalTimerQuest:CancelQuest(self.delay_id)
  164. self.delay_id = nil
  165. end
  166. self:ClearUIEffect(self.accept_effect_cont)
  167. self:ClearUIEffect(self.complete_effect_cont)
  168. self:ClearUIEffect(self.up_grade_effect)
  169. if self.scene_upgrade_effect_id then
  170. self.particle_mgr:DelEffect(self.scene_upgrade_effect_id)
  171. self.scene_upgrade_effect_id = false
  172. end
  173. GlobalTimerQuest:CancelQuest(self.delay_timer_id)
  174. self.delay_timer_id = nil
  175. if self.delay_close_view_timer then
  176. GlobalTimerQuest:CancelQuest(self.delay_close_view_timer)
  177. self.delay_close_view_timer = nil
  178. end
  179. if self.delay_id2 then
  180. GlobalTimerQuest:CancelQuest(self.delay_id2)
  181. self.delay_id2 = nil
  182. end
  183. self.wait_show_list = {}
  184. end
  185. function SceneSpecialTipView:CheckNextShow()
  186. if #self.wait_show_list > 0 then
  187. local d = table.remove(self.wait_show_list, 1)
  188. self:UpdateTips(d)
  189. end
  190. end