源战役客户端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

221 行
7.8 KiB

  1. -- <*
  2. -- @Author: huangcong
  3. -- @Description: 公会竞速称号变化的弹出提示界面
  4. -- *>
  5. AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView or BaseClass(BaseView)
  6. local AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView
  7. function AchieveGuildSpeedTipsView:__init()
  8. self.base_file = "achievement"
  9. self.layout_file = "AchieveGuildSpeedTipsView"
  10. self.layer_name = "Main"
  11. self.destroy_imm = true
  12. self.use_background = false --全屏界面默认使用这个参数
  13. self.change_scene_close = true
  14. self.is_animating = false -- 是否在动画中
  15. self.hide_time = 100 -- n秒后播放界面隐藏动画
  16. self.awardItem_list = {}
  17. self.receive_flag = nil -- 读取完界面数据后,用于发送领取协议的关键键值
  18. self.model = AchieveModel:getInstance()
  19. self.model.tip_view_show = true
  20. self.load_callback = function ()
  21. self:LoadSuccess()
  22. self:AddEvent()
  23. end
  24. self.open_callback = function ( )
  25. self:OpenSuccess()
  26. end
  27. self.destroy_callback = function ( )
  28. self:DestroySuccess()
  29. end
  30. end
  31. function AchieveGuildSpeedTipsView:Open(data)
  32. self.data = data
  33. BaseView.Open(self)
  34. end
  35. --重用界面,5秒后再销毁
  36. function AchieveGuildSpeedTipsView:ResetViewInfo(data)
  37. self.data = data
  38. self.transform.anchoredPosition = Vector2(-3.5, 61.5)
  39. self.receive_flag = nil
  40. self.gameObject:SetActive(true)
  41. if self.delay_closeview_id then
  42. TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id)
  43. self.delay_closeview_id = nil
  44. end
  45. self:UpdateView() -- 更新数据
  46. self:StartCloseTimer() -- 开始对界面的关闭进行计时
  47. self:OpenAnimation() -- 播放打开界面的动画
  48. end
  49. function AchieveGuildSpeedTipsView:LoadSuccess()
  50. local nodes = {
  51. "bg:img",
  52. -- 成就完成弹窗相关
  53. "achieve_tip:obj",
  54. "achieve_tip/achi_receive_btn:obj", -- 成就领取按钮
  55. "achieve_tip/achi_desc:tmp", "achieve_tip/achi_name:tmp", -- 成就信息
  56. -- 章节完成弹窗相关
  57. -- 其他
  58. "close_timer:tmp", "designImg:img",--称号容器
  59. "closeBtn:obj", "designationText:tmp",
  60. }
  61. self:GetChildren(nodes)
  62. lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetViewBigBg("guildSpeedAct_tip_bg"), true)
  63. self.canvasGroup = self.gameObject:GetComponent("CanvasGroup")
  64. self.transform.anchoredPosition = Vector2(0, 360)
  65. self.achi_name_tmp.text = "获得称号"
  66. self.achieve_tip_obj:SetActive(true)
  67. end
  68. function AchieveGuildSpeedTipsView:AddEvent()
  69. local function click_event(target)
  70. self:ClearHideTimer()
  71. self:AutoCloseFunc()
  72. end
  73. AddClickEvent(self.achi_receive_btn_obj, click_event)
  74. AddClickEvent(self.closeBtn_obj, click_event)
  75. end
  76. function AchieveGuildSpeedTipsView:OpenSuccess()
  77. self:UpdateView()
  78. self:StartCloseTimer()
  79. self:OpenAnimation() -- 播放打开界面的动画
  80. end
  81. function AchieveGuildSpeedTipsView:UpdateView()
  82. if self.data.rank and self.data.goods_id then
  83. local goods_name = GoodsModel:getInstance():getGoodsName(self.data.goods_id, true)
  84. self.achi_desc_tmp.text = string.format("获得社团竞榜排名第%s名\n激活称号 %s",self.data.rank,goods_name)
  85. self:UpdateDesignShow(self.data.goods_id,self.designImg,self.designImg_img,self.designationText_tmp)
  86. end
  87. end
  88. function AchieveGuildSpeedTipsView:UpdateDesignShow( goods_id,designation_image,designation_image_img,designation_text_tmp )
  89. if not goods_id then return end
  90. local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(goods_id)
  91. local dsgt_cfg = Config.Dsgt
  92. local power = DesignationModel:GetInstance():GetDesignationPowerById(designation_id)
  93. if self.dynamic_image_obj then
  94. self.dynamic_image_obj:SetActive(false)
  95. end
  96. if dsgt_cfg[designation_id] then
  97. designation_image.gameObject:SetActive(true)
  98. if dsgt_cfg[designation_id].type == 1 then--文字称号(文字称号也用图片了)
  99. designation_image.gameObject:SetActive(true)
  100. lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true)
  101. designation_text_tmp.text = ""
  102. elseif dsgt_cfg[designation_id].type == 2 then--图片称号
  103. designation_image.gameObject:SetActive(true)
  104. lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true)
  105. designation_text_tmp.text = ""
  106. elseif dsgt_cfg[designation_id].type == 3 then--特效称号
  107. if not self.dynamic_image_obj then
  108. self.dynamic_image_obj = UiFactory.createChild(designation_image, UIType.Image, "dynamic_image")
  109. self.dynamic_image_img = self.dynamic_image_obj:GetComponent("Image")
  110. self.dynamic_image = self.dynamic_image_obj.transform
  111. SetAnchoredPosition(self.dynamic_image,0,0)
  112. else
  113. self.dynamic_image_obj:SetActive(true)
  114. end
  115. designation_image.gameObject:SetActive(true)
  116. local data = DesignationModel:GetInstance():GetDynamicDesignationCFG(designation_id)
  117. designation_text_tmp.text = ""
  118. local res = Split(data[1].res,"_")--分割出来配置 然后取文字
  119. local font_res = res[1] or ""
  120. lua_resM:setImageSprite(self, self.dynamic_image_img, data[1].ab, font_res.."_font", false)
  121. local action = cc.Animation.New(data,0.15)
  122. cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),designation_image)
  123. end
  124. end
  125. cc.ActionManager:getInstance():removeAllActionsFromTarget(designation_image)
  126. end
  127. -- 开始界面关闭的倒计时
  128. function AchieveGuildSpeedTipsView:StartCloseTimer()
  129. self:ClearHideTimer()
  130. local end_time = self.hide_time + TimeUtil:getServerTime()
  131. local function hide_timer()
  132. local left_time = end_time - TimeUtil:getServerTime()
  133. self.close_timer_tmp.text = left_time >= 0 and string.format("(%s秒后自动确认)", math.ceil(left_time+1)) or ""
  134. if left_time < 0 then
  135. self:ClearHideTimer()
  136. self:AutoCloseFunc()
  137. end
  138. end
  139. hide_timer()
  140. self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, 0.1, -1)
  141. -- 设置动画标志量
  142. self.is_animating = true
  143. end
  144. function AchieveGuildSpeedTipsView:ClearHideTimer( )
  145. if self.hide_timer_id then
  146. GlobalTimerQuest:CancelQuest(self.hide_timer_id)
  147. self.hide_timer_id = nil
  148. end
  149. end
  150. function AchieveGuildSpeedTipsView:AutoCloseFunc( )
  151. local function callback()
  152. self:ClearHideTimer()
  153. self.gameObject:SetActive(false)
  154. local function delay_closeview( )
  155. BaseView.Close(self)
  156. end
  157. self.delay_closeview_id = setTimeout(delay_closeview, 5)
  158. -- 设置动画标志量
  159. self.is_animating = false
  160. end
  161. self:CloseAnimation(callback)
  162. end
  163. -- 播放打开界面的动画
  164. function AchieveGuildSpeedTipsView:OpenAnimation()
  165. self.canvasGroup.alpha = 0
  166. if self.alpha_anim_id then
  167. TweenLite.Stop(self.alpha_anim_id)
  168. self.alpha_anim_id = nil
  169. end
  170. self.alpha_anim_id = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 1, 0.2)
  171. end
  172. -- 关闭(隐藏)界面的动画
  173. function AchieveGuildSpeedTipsView:CloseAnimation(callback)
  174. self.canvasGroup.alpha = 1
  175. if self.alpha_anim_id then
  176. TweenLite.Stop(self.alpha_anim_id)
  177. self.alpha_anim_id = nil
  178. end
  179. self.alpha_anim_id = TweenLite.to(self, self.canvasGroup,TweenLite.UiAnimationType.ALPHA, 0, 0.5)
  180. local pos_y = self.transform.anchoredPosition.y + 100
  181. if self.pos_id then
  182. TweenLite.Stop(self.pos_id)
  183. self.pos_id = nil
  184. end
  185. self.pos_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSY, pos_y, 0.5, callback)
  186. end
  187. function AchieveGuildSpeedTipsView:DestroySuccess( )
  188. self.model.tip_view_show = false
  189. self:ClearHideTimer()
  190. if self.delay_closeview_id then
  191. TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id)
  192. self.delay_closeview_id = nil
  193. end
  194. if self.alpha_anim_id then
  195. TweenLite.Stop(self.alpha_anim_id)
  196. self.alpha_anim_id = nil
  197. end
  198. if self.pos_id then
  199. TweenLite.Stop(self.pos_id)
  200. self.pos_id = nil
  201. end
  202. for i,item in pairs(self.awardItem_list) do
  203. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
  204. end
  205. self.awardItem_list = {}
  206. end