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

163 lines
4.1 KiB

  1. EmpowerDoubleItem = EmpowerDoubleItem or BaseClass(BaseItem)
  2. local EmpowerDoubleItem = EmpowerDoubleItem
  3. local co_MoveXYTable = co.MoveXYTable
  4. function EmpowerDoubleItem:__init()
  5. self.base_file = "empower"
  6. self.layout_file = "EmpowerDoubleItem"
  7. self.model = EmpowerModel:GetInstance()
  8. self:Load()
  9. end
  10. function EmpowerDoubleItem:Load_callback()
  11. self.nodes = {
  12. "double_font:obj",
  13. }
  14. self:GetChildren(self.nodes)
  15. self.item_canvas = self.double_font:GetComponent("CanvasGroup")
  16. self:AddEvents()
  17. self:UpdateBaseView( )
  18. if self.need_refreshData then
  19. self:UpdateView()
  20. end
  21. end
  22. function EmpowerDoubleItem:AddEvents( )
  23. end
  24. function EmpowerDoubleItem:UpdateBaseView( )
  25. end
  26. function EmpowerDoubleItem:UpdateView( )
  27. self:StartAnim( )
  28. end
  29. -- item是否可以复用
  30. function EmpowerDoubleItem:CanUse( )
  31. return not self.is_in_anim
  32. end
  33. function EmpowerDoubleItem:SetData( data )
  34. self.is_in_anim = true
  35. self.data = data
  36. if self.is_loaded then
  37. self.need_refreshData = false
  38. self:UpdateView()
  39. else
  40. self.need_refreshData = true
  41. end
  42. end
  43. function EmpowerDoubleItem:StartUpdateBeat( )
  44. Runner.Instance:AddRunObj(self, 1)
  45. end
  46. function EmpowerDoubleItem:RemoveUpdateBeat( )
  47. Runner.Instance:RemoveRunObj(self)
  48. end
  49. -- 动画入口
  50. function EmpowerDoubleItem:StartAnim( )
  51. self.last_update_time = Status.NowTime
  52. local temp_cfg = EmpowerConst.UpAnimCfg
  53. self.anim_info = {
  54. -- cache_type = temp_cfg.cache_type,
  55. -- font_id = font_id,
  56. start_time = Time.time,
  57. -- id = self.damage_info_id,
  58. alpha = 1,
  59. stage = 1,
  60. -- anim_type = temp_cfg.anim_type,
  61. start_scale = temp_cfg.start_scale, --开始比例
  62. speed1 = temp_cfg.speed1, --起始速度
  63. time1 = temp_cfg.time1, --向上弹起阶段的时间
  64. time2 = temp_cfg.time2, --中间停留时间
  65. time3 = temp_cfg.time3, --向下落并渐隐的时间
  66. speed3 = temp_cfg.speed3, --消失阶段的速度
  67. speed = temp_cfg.speed1,
  68. -- direction = co_TableXY(0, 1),
  69. }
  70. -- 初始化各项参数
  71. self.item_canvas.alpha = 1
  72. SetLocalPosition(self.double_font,0, temp_cfg.start_pos_y, 0)
  73. SetLocalScale(self.double_font, temp_cfg.start_scale, temp_cfg.start_scale, temp_cfg.start_scale)
  74. self.double_font_obj:SetActive(true)
  75. self:StartUpdateBeat( )
  76. end
  77. -- 2为向上弹起的动画:1弹起来从大变小移动 2停留 3向上渐隐
  78. function EmpowerDoubleItem:Update(now_time, elapsed_time)
  79. if now_time - self.last_update_time < 0.03 then
  80. return
  81. end
  82. self.last_update_time = now_time
  83. local info = self.anim_info
  84. if info.start_time <= now_time then
  85. --第一阶段,弹起来
  86. local t = now_time - info.start_time
  87. if info.stage == 1 then
  88. local p = 1
  89. local font_scale = 1
  90. if t >= info.time1 then
  91. info.stage = 2
  92. info.speed = 0
  93. info.start_time = now_time
  94. else
  95. p = t / info.time1
  96. if p > 1 then
  97. p = 1
  98. end
  99. info.speed = info.speed1 * p
  100. font_scale = info.start_scale - (info.start_scale-1) * p
  101. if font_scale < 1 then
  102. font_scale = 1
  103. end
  104. end
  105. SetLocalScale(self.double_font, font_scale, font_scale, font_scale)
  106. -- self.worldFontMgr:SetArtFontScale(info.font_id, font_scale)
  107. local dist = elapsed_time * info.speed
  108. SetLocalPositionY(self.double_font, GetLocalPositionY( self.double_font ) + dist)
  109. -- co_MoveXYTable(info.pos, info.direction, dist)
  110. --第二阶段,停留
  111. elseif info.stage == 2 then
  112. if t > info.time2 then
  113. info.stage = 3
  114. info.start_time = now_time
  115. end
  116. --向上升并渐隐
  117. elseif info.stage == 3 then
  118. if t >= info.time3 then
  119. info.dead = true
  120. else
  121. local p = t / info.time3
  122. if p >= 1 then
  123. p = 1
  124. end
  125. info.speed = info.speed3
  126. info.alpha = 1 - (p * p * 1)
  127. self.item_canvas.alpha = info.alpha
  128. local dist = elapsed_time * info.speed
  129. SetLocalPositionY(self.double_font, GetLocalPositionY( self.double_font ) + dist)
  130. -- co_MoveXYTable(info.pos, info.direction, dist)
  131. end
  132. end
  133. -- 动画结束
  134. if info.dead then
  135. self:RemoveUpdateBeat()
  136. self.double_font_obj:SetActive(false)
  137. self.is_in_anim = false
  138. end
  139. end
  140. end
  141. function EmpowerDoubleItem:__delete( )
  142. self:RemoveUpdateBeat()
  143. end