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

232 lines
7.1 KiB

  1. CapsuleEggRewardView = CapsuleEggRewardView or BaseClass(BaseView)
  2. local CapsuleEggRewardView = CapsuleEggRewardView
  3. function CapsuleEggRewardView:__init()
  4. self.base_file = "capsuleEgg"
  5. self.layout_file = "CapsuleEggRewardView"
  6. self.layer_name = "Activity"
  7. self.mainVo = RoleManager.Instance.mainRoleInfo
  8. self.model = CapsuleEggModel:getInstance()
  9. self.destroy_imm = true
  10. self.use_background = true
  11. self.hide_clear_role_model = false
  12. self.change_scene_close = true
  13. self.append_to_ctl_queue = false
  14. self.close_fog = true
  15. self.is_set_zdepth = true
  16. self.show_item_list = {}
  17. self.record_list = {}
  18. self.play_record_idx = 0
  19. self.play_record_item = false
  20. self.last_play_record_item = false
  21. self.record_item = false
  22. self.is_ani = false
  23. self.blur_activity_bg = true
  24. self.use_show_anim = true
  25. self.use_hide_anim = true
  26. self.load_callback = function ()
  27. self:LoadSuccess()
  28. self:InitEvent()
  29. end
  30. self.open_callback = function ()
  31. self:UpdateView()
  32. end
  33. self.close_callback = function ()
  34. self:Remove()
  35. end
  36. end
  37. function CapsuleEggRewardView:Open(pool_type)
  38. self.pool_type = pool_type or 1
  39. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17011,1, self.pool_type, 0)
  40. BaseView.Open(self)
  41. end
  42. function CapsuleEggRewardView:Remove()
  43. for i,v in ipairs(self.show_item_list) do
  44. v:DeleteMe()
  45. end
  46. if self.delay_timer then
  47. GlobalTimerQuest:CancelQuest(self.delay_timer)
  48. self.delay_timer = false
  49. end
  50. if self.record_item then
  51. for i,v in ipairs(self.record_item) do
  52. v:DeleteMe()
  53. end
  54. end
  55. end
  56. function CapsuleEggRewardView:LoadSuccess()
  57. local nodes = {
  58. "contain/helpBtn:obj",
  59. "contain/title_img_3:img",
  60. "contain/title_img_2:img",
  61. "contain/title_img_1:img",
  62. "contain/close:obj",
  63. "contain/bg:raw",
  64. "contain/reward_scroll",
  65. "contain/reward_scroll/Viewport/reward_con",
  66. "contain/target_scroll",
  67. "contain/target_scroll/Viewport/target_con",
  68. "contain/record_scroll/Viewport/record_con",
  69. "contain/record_scroll",
  70. "contain/reward_icon/role_con:raw",
  71. }
  72. self:GetChildren(nodes)
  73. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("capsule_egg_bg_2_1238_609"))
  74. --lua_resM:setOutsideRawImage(self, self.reward_icon_raw, GameResPath.GetCapsuleEggRes("capsule_egg_icon_2"), true)
  75. lua_resM:setOutsideImageSprite(self, self.title_img_1_img, GameResPath.GetCapsuleEggRes("capsule_egg_draw_type_title_2"), false)
  76. lua_resM:setOutsideImageSprite(self, self.title_img_2_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_3"), false)
  77. lua_resM:setOutsideImageSprite(self, self.title_img_3_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_2"), false)
  78. local model_pos = CapsuleEggShowAwardItem.HorseRewardShowPos.pos
  79. SetLocalPosition(self.role_con, model_pos.x, model_pos.y, model_pos.z)
  80. self:UpdateHourseModelCon(self.role_con, CapsuleEggShowAwardItem.HorseRewardShowPos.model_id)
  81. self:UpdateScord()
  82. end
  83. function CapsuleEggRewardView:InitEvent()
  84. local function onBtnClickHandler(target)
  85. if target == self.close_obj then
  86. self:Close()
  87. elseif target == self.helpBtn_obj then
  88. EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 17001)
  89. end
  90. end
  91. AddClickEvent(self.close_obj,onBtnClickHandler)
  92. AddClickEvent(self.helpBtn_obj,onBtnClickHandler)
  93. --刷新结果
  94. local function on_update_times(pool_type)
  95. if pool_type == self.pool_type then
  96. self:UpdateView()
  97. end
  98. end
  99. self:BindEvent(self.model,CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_UPDATE,on_update_times)
  100. end
  101. function CapsuleEggRewardView:UpdateView()
  102. local reward_cfg = self.model:GetTimeRewardCfg(self.pool_type)
  103. local reward_data_list = {}
  104. for i,v in ipairs(reward_cfg) do
  105. local t = DeepCopy(v)
  106. local status = self.model:GetTimesRewardStatusByTimes(self.pool_type, t.draw_times)
  107. if status then
  108. t.status = 1
  109. else
  110. t.status = 0
  111. end
  112. table.insert(reward_data_list, t)
  113. end
  114. table.sort( reward_data_list, function (a, b)
  115. if a.status ~= b.status then
  116. return a.status < b.status
  117. else
  118. return a.draw_times < b.draw_times
  119. end
  120. end)
  121. self.award_item_creator = self.award_item_creator or self:AddUIComponent(UI.ItemListCreator)
  122. local info = {
  123. data_list = reward_data_list,
  124. item_con = self.reward_con,
  125. scroll_view = self.reward_scroll,
  126. item_class = CapsuleEggRewardItem,
  127. item_width = 731,
  128. item_height = 101,
  129. space_y = 5,
  130. create_frequency = 0.01,
  131. alignment = UnityEngine.TextAnchor.UpperLeft,
  132. on_update_item = function(item, i, v)
  133. item:SetData(v, i, self.pool_type)
  134. end,
  135. }
  136. self.award_item_creator:UpdateItems(info)
  137. local show_reward_cfg = self.model:GetShowTimeRewardCfg()
  138. for i,v in ipairs(self.show_item_list) do
  139. v:SetVisible(false)
  140. end
  141. for i,v in ipairs(show_reward_cfg) do
  142. local item = self.show_item_list[i]
  143. if not item then
  144. item = CapsuleEggTargetItem.New(self.target_con, nil, self.layer_name)
  145. self.show_item_list[i] = item
  146. item:SetAnchoredPosition((78 + 40) * (i - 1) + 18, -3)
  147. end
  148. item:SetVisible(true)
  149. item:SetData(v, i, self.pool_type)
  150. end
  151. SetSizeDelta(self.target_con, (70 + 45) * (#show_reward_cfg) + 18, 120)
  152. end
  153. function CapsuleEggRewardView:UpdateScord()
  154. self.record_list = self.model:GetAllRecordList(self.pool_type)
  155. if #self.record_list > 0 then
  156. self:PlayScrodAction()
  157. end
  158. end
  159. function CapsuleEggRewardView:PlayScrodAction()
  160. if not self.record_item then
  161. self.record_item = {}
  162. self.record_item[1] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name)
  163. self.record_item[2] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name)
  164. self.record_item[1]:SetAnchoredPosition(0, -100)
  165. self.record_item[2]:SetAnchoredPosition(0, -100)
  166. end
  167. if self.is_ani then
  168. return
  169. end
  170. self.is_ani = true
  171. if self.play_record_item ~= self.record_item[1] then
  172. self.play_record_item = self.record_item[1]
  173. else
  174. self.play_record_item = self.record_item[2]
  175. end
  176. self.play_record_idx = self.play_record_idx + 1
  177. if self.play_record_idx > #self.record_list then
  178. self.play_record_idx = 1
  179. end
  180. self.play_record_item:SetData(self.record_list[self.play_record_idx])
  181. self.play_record_item:MoveIn()
  182. if self.last_play_record_item then
  183. self.last_play_record_item:MoveOut()
  184. end
  185. self.last_play_record_item = self.play_record_item
  186. if self.delay_timer then
  187. GlobalTimerQuest:CancelQuest(self.delay_timer)
  188. self.delay_timer = false
  189. end
  190. local function delay_func( )
  191. self.is_ani = false
  192. self:PlayScrodAction()
  193. end
  194. self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_func,4)
  195. end
  196. function CapsuleEggRewardView:UpdateHourseModelCon(transform,figure_id )
  197. local res_data = {
  198. father_node = self,
  199. transform = transform,
  200. fashion_type = FuncOpenModel.TypeId.FHorse,
  201. raycast_size = Vector2(0,0),
  202. scale = CapsuleEggShowAwardItem.HorseRewardShowPos.scale,
  203. model_rotation = CapsuleEggShowAwardItem.HorseRewardShowPos.model_rotation,
  204. figure_id = figure_id,
  205. action_name_list = {"show"},
  206. position = Vector3(0,0,0),
  207. layer_name = self.layer_name,
  208. }
  209. FuncOpenModel:getInstance():SetModelRes(res_data)
  210. end