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

170 lines
5.9 KiB

преди 1 месец
  1. GuildSceneCollectView = GuildSceneCollectView or BaseClass(BaseItem)
  2. local GuildSceneCollectView = GuildSceneCollectView
  3. function GuildSceneCollectView:__init(parent_wnd,prefab_asset,layer_name)
  4. self.base_file = "mainui"
  5. self.layout_file = "CollectBarView"
  6. self.parent_wnd = parent_wnd
  7. self.layer_name = layer_name
  8. self.curr_progress = 0 --采集当前进度
  9. self.total_step = 40
  10. self.is_collecting = false
  11. self.collect_time = 3 --采集装备时间
  12. self.main_role = Scene:getInstance():GetMainRole()
  13. self.model = GuildModel:getInstance()
  14. self:Load()
  15. end
  16. function GuildSceneCollectView:Load_callback()
  17. self.transform.anchoredPosition = Vector2(0, 155)
  18. self.collectText = self:GetChild("Image/collectText"):GetComponent("Text")
  19. self.effect = self:GetChild("effect")
  20. self.effect2 = self:GetChild("effect2")
  21. self.fg_img
  22. = GetChildImages(self.transform, {
  23. "barCon/progressImg/fgImg"
  24. })
  25. self.fg_img.enabled = false
  26. self:SetProgress(0, 100)
  27. -- 修改节点名称
  28. self.transform.name = "GuildSceneCollectView"
  29. self:AddEvents()
  30. end
  31. function GuildSceneCollectView:AddEvents( )
  32. --开始采集
  33. local function startCollect(vo)
  34. self:StartCollectAction(vo)
  35. end
  36. self:BindEvent(self.model, GuildModel.START_TO_COLLECT_ITEM, startCollect)
  37. --取消采集
  38. local function cancelCollect()
  39. if self.is_collecting then
  40. local role = Scene.Instance.main_role
  41. if role and not role:IsInState(PoseState.COLLECT) then
  42. self:CancelCollectAction()
  43. end
  44. end
  45. end
  46. self:BindEvent(self.model, GuildModel.STOP_COLLECT_ITEM, cancelCollect)
  47. self.attack_id = GlobalEventSystem:Bind(FightEvent.RELEASE_MAIN_SKILL, cancelCollect)
  48. self.game_start_id = GlobalEventSystem:Bind(SceneEventType.SCENE_CHANGED,cancelCollect)
  49. self.mainrole_move_id = GlobalEventSystem:Bind(ObjectEventType.MAINROLE_MOVE_EVENT_IMME,cancelCollect)
  50. end
  51. function GuildSceneCollectView:StartCollectAction(vo)
  52. self.vo = vo
  53. self:SetVisible(true)
  54. self.curr_progress = 0
  55. self.is_collecting = true
  56. self.main_role:SetIsCollecting(true)
  57. SceneManager:getInstance():SetCollectFlag(true)
  58. self:SwitchCollectState(true)
  59. self:SetProgress(0, 100)
  60. local function call_back( )
  61. cs_particleM:SetSpeed(self.effect.gameObject, 1 / self.collect_time) --特效播放1.5秒
  62. end
  63. self.effect.gameObject:SetActive(true)
  64. self:AddUIEffect("ui_caijinew_01", self.effect, self.layer_name, nil, 1, false, self.collect_time + 2, nil, nil, call_back)
  65. if self.collecting_time_id == nil then
  66. local function collectingFunc( ... )
  67. self:Collecting()
  68. end
  69. self.collecting_time_id = GlobalTimerQuest:AddPeriodQuest(collectingFunc, self.collect_time / self.total_step, 100)
  70. end
  71. end
  72. function GuildSceneCollectView:CancelCollectAction(auto_end)
  73. self:SetVisible(false)
  74. self.curr_progress = 0
  75. self.is_collecting = false
  76. SceneManager:getInstance():SetCollectFlag(false)
  77. self:SwitchCollectState(false)
  78. self.main_role:SetIsCollecting(false)
  79. if auto_end then
  80. self.model:Fire(GuildModel.PICK_UP_BOSS_DROP_ITEM, GuildModel.GBossPickOpty.Succeed, self.vo.drop_id)
  81. else
  82. -- GlobalEventSystem:Fire(SceneEventType.GBOSS_PICK_CANCEL, self.model:GetCurGuildBossCollectDropId())
  83. self.model:Fire(GuildModel.PICK_UP_BOSS_DROP_ITEM, GuildModel.GBossPickOpty.Cancel, self.vo.drop_id)
  84. end
  85. end
  86. --采集进行器
  87. function GuildSceneCollectView:Collecting( )
  88. if self.is_collecting == false then
  89. if self.collecting_time_id ~= nil then
  90. GlobalTimerQuest:CancelQuest(self.collecting_time_id)
  91. self.collecting_time_id = nil
  92. end
  93. return
  94. end
  95. self.curr_progress = self.curr_progress + 1
  96. self:SetProgress(self.curr_progress, self.total_step)
  97. if self.curr_progress >= self.total_step then --少许延时关闭
  98. if self.collecting_time_id ~= nil then
  99. GlobalTimerQuest:CancelQuest(self.collecting_time_id)
  100. self.collecting_time_id = nil
  101. end
  102. local function DelayClose()
  103. self:CancelCollectAction(true)
  104. end
  105. if self.delay_close_id then
  106. GlobalTimerQuest:CancelQuest(self.delay_close_id)
  107. self.delay_close_id = false
  108. end
  109. self:AddUIEffect("ui_caijinew_02", self.effect2, self.layer_name, nil, 1, false, false, nil, nil, nil)
  110. self.delay_close_id = GlobalTimerQuest:AddDelayQuest(DelayClose, 0.7)
  111. end
  112. end
  113. function GuildSceneCollectView:SwitchCollectState( flag )
  114. local main_role = Scene.Instance.main_role
  115. if not main_role then
  116. return
  117. end
  118. if flag then
  119. main_role:DoCollect()
  120. else
  121. if main_role:IsInState(PoseState.COLLECT) then
  122. main_role:DoStand(nil, 0.1)
  123. end
  124. end
  125. end
  126. -- 采集进度
  127. function GuildSceneCollectView:SetProgress(curr_value, max_value)
  128. local progress_value = math.floor(curr_value / max_value * 100)
  129. progress_value = progress_value >= 100 and 100 or progress_value
  130. self.collectText.text = progress_value .. "%"
  131. end
  132. function GuildSceneCollectView:__delete( )
  133. if self.attack_id then
  134. GlobalEventSystem:UnBind(self.attack_id)
  135. self.attack_id = nil
  136. end
  137. if self.game_start_id then
  138. GlobalEventSystem:UnBind(self.game_start_id)
  139. self.game_start_id = nil
  140. end
  141. if self.mainrole_move_id then
  142. GlobalEventSystem:UnBind(self.mainrole_move_id)
  143. self.mainrole_move_id = nil
  144. end
  145. if self.collecting_time_id ~= nil then
  146. GlobalTimerQuest:CancelQuest(self.collecting_time_id)
  147. self.collecting_time_id = nil
  148. end
  149. if self.delay_close_id then
  150. GlobalTimerQuest:CancelQuest(self.delay_close_id)
  151. self.delay_close_id = false
  152. end
  153. self:ClearUIEffect(self.effect)
  154. self:ClearUIEffect(self.effect2)
  155. end