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

362 行
9.6 KiB

  1. GuideMasktView = GuideMasktView or BaseClass(BaseView)
  2. GuideMasktView.FORCE_MASK_HELP_STEP = 7 --=强制黑色遮罩提示,所有的强制遮罩都做一起
  3. function GuideMasktView:__init()
  4. self.base_file = "guide"
  5. self.layout_file = "GuideMasktView"
  6. self.layer_name = "Activity"
  7. self.destroy_imm = true
  8. self.hide_maincancas = false
  9. self.model = GuideModel:getInstance()
  10. self.arrow_component = nil --箭头组件
  11. self.change_scene_close = true
  12. self.append_to_ctl_queue = true
  13. self.time_diff = 10
  14. self.load_callback = function ()
  15. self:LoadSuccess()
  16. self:InitEvent()
  17. end
  18. self.open_callback = function ()
  19. GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
  20. self:ShowPrompt()
  21. end
  22. self.close_callback = function ()
  23. GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK)
  24. end
  25. self.destroy_callback = function ()
  26. self:Clear()
  27. end
  28. self.x = 0
  29. self.y = 0
  30. self.w = 0
  31. self.h = 0
  32. --黑幕的alpha值
  33. self.alpha_value = 0.5
  34. self.ref_tar = nil
  35. self.prompt_type = nil
  36. end
  37. function GuideMasktView:Open(ref_tar,prompt_type)
  38. self.ref_tar = ref_tar
  39. self.prompt_type = prompt_type
  40. BaseView.Open(self)
  41. end
  42. function GuideMasktView:ShowPrompt()
  43. local prompt_type = self.prompt_type
  44. if prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
  45. self:ForceMaskHelpPrompt_1()
  46. end
  47. self:SetSkipBtnEvent()
  48. end
  49. function GuideMasktView:SetSkipBtnEvent()
  50. local function onBtnClickHandler(target)
  51. if target == self.skip_btn then
  52. local prompt_type = self.prompt_type
  53. if prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
  54. local helpVo = GuideModel:getInstance():GetCurHelpVo()
  55. if helpVo then
  56. GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
  57. end
  58. ItemUseModel:getInstance():ShowItemUseView()
  59. GuideModel:getInstance():ShowUILayUI()
  60. end
  61. self:Close()
  62. end
  63. end
  64. AddClickEvent(self.skip_btn,onBtnClickHandler)
  65. end
  66. function GuideMasktView:Clear()
  67. if self.delay_timer then
  68. GlobalTimerQuest:CancelQuest(self.delay_timer)
  69. self.delay_timer = nil
  70. end
  71. if self.trigger_skill_id then
  72. GlobalEventSystem:UnBind(self.trigger_skill_id)
  73. self.trigger_skill_id = nil
  74. end
  75. if self.arrow_component then
  76. self.arrow_component:DeleteMe()
  77. self.arrow_component = nil
  78. end
  79. ItemUseModel:getInstance():ShowItemUseView()
  80. GuideModel:getInstance():ShowUILayUI()
  81. self:CancelTimer()
  82. end
  83. function GuideMasktView:Close()
  84. BaseView.Close(self)
  85. end
  86. function GuideMasktView:LoadSuccess()
  87. --左上
  88. self.C2 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C2")
  89. self.C2.transform.pivot = Vector2(0,1)
  90. self.C2.transform:SetAsFirstSibling()
  91. self.C2_Image = self.C2:GetComponent("ImageExtend")
  92. self.C2_Image.color = Color(0,0,0,self.alpha_value)
  93. --左下
  94. self.C4 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C4")
  95. self.C4.transform.pivot = Vector2(0,0)
  96. self.C4.transform:SetAsFirstSibling()
  97. self.C4_Image = self.C4:GetComponent("ImageExtend")
  98. self.C4_Image.color = Color(0,0,0,self.alpha_value)
  99. --右上
  100. self.C6 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C6")
  101. self.C6.transform.pivot = Vector2(1,1)
  102. self.C6.transform:SetAsFirstSibling()
  103. self.C6_Image = self.C6:GetComponent("ImageExtend")
  104. self.C6_Image.color = Color(0,0,0,self.alpha_value)
  105. --右下
  106. self.C8 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C8")
  107. self.C8.transform.pivot = Vector2(1,0)
  108. self.C8.transform:SetAsFirstSibling()
  109. self.C8_Image = self.C8:GetComponent("ImageExtend")
  110. self.C8_Image.color = Color(0,0,0,self.alpha_value)
  111. self.mask_btn = self:GetChild("MaskBtn").gameObject
  112. self.mask_image = self:GetChild("MaskBtn")
  113. self.mask_image.sizeDelta = Vector3(ScreenWidth,ScreenHeight,0)
  114. self.focus_point = self:GetChild("FocusPoint")
  115. self.skip_btn = self:GetChild("SkipBtn").gameObject
  116. self.skip_btn_txt = self:GetChild("SkipBtn/Text"):GetComponent("Text")
  117. self.skip_btn.transform.localPosition = Vector3(ScreenWidth/2 - 90 ,ScreenHeight/2 - 50,0)
  118. self.image_btn = self:GetChild("Image").gameObject
  119. self.image_btn_dot = self:GetChild("Image/Dot").gameObject
  120. end
  121. function GuideMasktView:InitEvent()
  122. local function onTriggerSkillForceHelp()
  123. if self.prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
  124. ItemUseModel:getInstance():ShowItemUseView()
  125. GuideModel:getInstance():ShowUILayUI()
  126. self:Close()
  127. end
  128. end
  129. self.trigger_skill_id = GlobalEventSystem:Bind(EventName.FINISH_FORCE_MASK_HELPER,onTriggerSkillForceHelp)
  130. end
  131. -- 是否显示黑屏
  132. function GuideMasktView:ScreenVisible(b)
  133. self.C2:SetActive(b)
  134. self.C4:SetActive(b)
  135. self.C6:SetActive(b)
  136. self.C8:SetActive(b)
  137. end
  138. -- 黑屏透明度
  139. function GuideMasktView:ScreenAlpha(b)
  140. local alpha_value = b or self.alpha_value
  141. self.C2_Image.alpha = alpha_value
  142. self.C4_Image.alpha = alpha_value
  143. self.C6_Image.alpha = alpha_value
  144. self.C8_Image.alpha = alpha_value
  145. end
  146. --设置矩形遮罩的位置
  147. function GuideMasktView:UpdateRectMask(x,y,w,h)
  148. local width,height = nil
  149. self.C2.transform.localPosition = Vector3(-ScreenWidth/2,ScreenHeight/2,0)
  150. width = ScreenWidth/2 + x - w / 2
  151. height = ScreenHeight / 2 - y + h / 2
  152. self.C2.transform.sizeDelta = Vector2(width,height)
  153. self.C4.transform.localPosition = Vector3(-ScreenWidth/2,-ScreenHeight/2,0)
  154. width = ScreenWidth/2 + x + w / 2
  155. height = ScreenHeight / 2 + y - h/2
  156. self.C4.transform.sizeDelta = Vector2(width,height)
  157. self.C6.transform.localPosition = Vector3(ScreenWidth/2,ScreenHeight/2,0)
  158. width = ScreenWidth/2 - x + w / 2
  159. height = ScreenHeight / 2 - y - h/2
  160. self.C6.transform.sizeDelta = Vector2(width,height)
  161. self.C8.transform.localPosition = Vector3(ScreenWidth/2,-ScreenHeight/2,0)
  162. width = ScreenWidth/2 - x - w / 2
  163. height = ScreenHeight / 2 + y + h/2
  164. self.C8.transform.sizeDelta = Vector2(width,height)
  165. end
  166. --获取聚焦点的信息
  167. function GuideMasktView:SetFocusPointMsg(mount_point,w,h,x_offset,y_offset)
  168. self.focus_point:SetParent(mount_point)
  169. self.focus_point.localPosition = Vector3(0,0,0)
  170. self.focus_point:SetParent(self.transform)
  171. self.x = self.focus_point.localPosition.x + (x_offset or 0)
  172. self.y = self.focus_point.localPosition.y + (y_offset or 0)
  173. local sizeDelta = mount_point.sizeDelta
  174. self.w = w or sizeDelta.x
  175. self.h = h or sizeDelta.y
  176. end
  177. function GuideMasktView:SetDefaultFocusPoint()
  178. self.x = 0
  179. self.y = 0
  180. self.w = 0
  181. self.h = 0
  182. end
  183. function GuideMasktView:ForceMaskHelpPrompt_1()
  184. self:ScreenAlpha(0)
  185. self:ScreenVisible(true)
  186. self.skip_btn:SetActive(false)
  187. self.mask_btn:SetActive(true)
  188. local function callback( )
  189. self:ScreenAlpha()
  190. self.mask_btn:SetActive(false)
  191. self.skip_btn:SetActive(true)
  192. local helpVo = GuideModel:getInstance():GetCurHelpVo()
  193. if helpVo then
  194. local param = tonumber(helpVo.param)
  195. self.model.force_mask_index = param
  196. local btn
  197. if param == 1 then
  198. if self.ref_tar and self.ref_tar.icon_list and self.ref_tar.icon_list[157] then
  199. btn = self.ref_tar.icon_list[157]
  200. end
  201. elseif param == 2 then
  202. if self.ref_tar and self.ref_tar.icon_list and self.ref_tar.icon_list[416] then
  203. btn = self.ref_tar.icon_list[416]
  204. self:SetImagefor_416()
  205. end
  206. end
  207. if btn then
  208. if self.model:IsBottomForceMask() then
  209. self:SetFocusPointMsg(btn.transform)
  210. elseif self.model:IsTopForceMask() then
  211. self:SetFocusPointMsg(btn.transform,80,80,0,9)
  212. end
  213. --mask 是为了 changehide的时候不让玩家点击
  214. self.mask_btn:SetActive(false)
  215. else
  216. self:SetDefaultFocusPoint()
  217. self.mask_btn:SetActive(true)
  218. end
  219. end
  220. if not self.arrow_component then
  221. self.arrow_component = ArrowComponent.New(self.transform)
  222. end
  223. self.arrow_component:ShowArrow(1,co.TableXY(self.x - 90 ,self.y),310)
  224. self:UpdateRectMask(self.x,self.y,self.w,self.h)
  225. local function click_func()
  226. self:Close()
  227. end
  228. AddClickEvent(self.mask_btn,click_func)
  229. if helpVo then
  230. GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
  231. end
  232. self:CancelTimer()
  233. self:StartTimer()
  234. end
  235. --如果是隐藏则执行动画 在执行引导,如果不是则马上执行引导
  236. if self.model:IsBottomForceMask() then
  237. if self.ref_tar and self.ref_tar.ShowShortCutList then
  238. if self.ref_tar.show_skill_icon and not self.model:IsBagForceMask() then
  239. self.ref_tar:ShowShortCutList(false)
  240. else
  241. callback()
  242. return
  243. end
  244. end
  245. elseif self.model:IsTopForceMask() then
  246. if self.ref_tar and self.ref_tar.ChangeHide then
  247. if self.ref_tar.is_hide then
  248. self.ref_tar:ChangeHide(false)
  249. else
  250. callback()
  251. return
  252. end
  253. end
  254. end
  255. if self.delay_timer == nil then
  256. local function delay_callback( )
  257. callback()
  258. end
  259. self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_callback,0.6)
  260. end
  261. end
  262. function GuideMasktView:StartTimer()
  263. local function onTimer()
  264. if self.time_diff > 0 then
  265. self.skip_btn_txt.text = "跳过(<color=#73ac44>" ..self.time_diff .."秒</color>)"
  266. self.time_diff = self.time_diff - 1
  267. else
  268. self:CancelTimer()
  269. self:Close()
  270. end
  271. end
  272. self.timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
  273. onTimer()
  274. end
  275. function GuideMasktView:CancelTimer()
  276. if self.timer_id then
  277. GlobalTimerQuest:CancelQuest(self.timer_id)
  278. self.timer_id = nil
  279. end
  280. end
  281. function GuideMasktView:SetImagefor_416()
  282. self.image_btn_dot:SetActive(true)
  283. lua_resM:setImageSprite(self,self.image_btn:GetComponent("Image"),"mainUI_asset",416,true)
  284. if self.ref_tar then
  285. local pos = self.ref_tar:GetFuncIconPos(416)
  286. self.image_btn.transform.localPosition = pos
  287. end
  288. local function onBtnClickHandler(target)
  289. if target == self.image_btn then
  290. GlobalEventSystem:Fire(EventName.FINISH_FORCE_MASK_HELPER)
  291. GlobalEventSystem:Fire(EventName.OPEN_SEVEN_DAYS_VIEW)
  292. end
  293. end
  294. AddClickEvent(self.image_btn, onBtnClickHandler,LuaSoundManager.SOUND_UI.SWITCH)
  295. end