源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

172 Zeilen
4.6 KiB

  1. EquipCollectSubView = EquipCollectSubView or BaseClass(BaseItem)
  2. local EquipCollectSubView = EquipCollectSubView
  3. function EquipCollectSubView:__init()
  4. self.base_file = "equipCollect"
  5. self.layout_file = "EquipCollectSubView"
  6. self.model = EquipCollectModel:GetInstance()
  7. self.is_first = true
  8. self.id, self.sub_id = self.model:GetEquipCollectJumpId()
  9. self:Load()
  10. end
  11. function EquipCollectSubView:Load_callback()
  12. self.nodes = {
  13. "right_scroll", "left_scroll:obj", "left_scroll/Viewport/left_con", "right_scroll/Viewport/right_con", "tips_text:tmp:obj",
  14. "bg:raw", "arrow:obj"
  15. }
  16. self:GetChildren(self.nodes)
  17. self.left_scroll_rect = self.left_scroll:GetComponent("ScrollRect")
  18. self:AddEvents()
  19. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("euqip_collect_sub_bg"),false)
  20. if self.need_refreshData then
  21. self:UpdateView()
  22. end
  23. end
  24. function EquipCollectSubView:AddEvents( )
  25. local function on_update( ... )
  26. self:UpdateView()
  27. end
  28. self:BindEvent(self.model,EquipCollectConst.ANS_EQUIP_COLLECT_INFO,on_update)
  29. end
  30. function EquipCollectSubView:UpdateView( )
  31. self:UpdateLeftItem()
  32. self:UpdateRightItem()
  33. end
  34. function EquipCollectSubView:UpdateLeftItem( )
  35. self.tab_cfg = self.model:GetEquipCollectCFG()
  36. self.tab_creator = self.tab_creator or self:AddUIComponent(UI.ItemListCreator)
  37. self.tab_data = self.tab_cfg
  38. self.cur_select_data = self.tab_cfg[self.id]
  39. local call_back = function(data, id, sub_id)
  40. self.show_first_effect = nil--切页签关掉特效
  41. self.id = id
  42. self:UpdateLeftItem()
  43. self:UpdateSelectVer()
  44. end
  45. local function final_callback( )
  46. if self.is_first then
  47. self.cur_select_data = self.model:GetEquipCollectCFG(self.id)
  48. if self.id > 3 then
  49. self:UpdateSelectVer(true)
  50. else
  51. self:UpdateSelectVer()
  52. end
  53. self.is_first = false
  54. end
  55. end
  56. local function on_scroll( ... )
  57. if self.left_scroll_rect.verticalNormalizedPosition <= 0 then
  58. self.arrow_obj:SetActive(false)
  59. else
  60. self.arrow_obj:SetActive(true)
  61. end
  62. end
  63. local tag_all_info = {
  64. data_list = self.tab_data,
  65. item_con = self.left_con,
  66. item_class = EquipCollectLeftItem,
  67. item_height = 127,
  68. start_x = 2,
  69. start_y = 0,
  70. space_y = 0,
  71. scroll_view = self.left_scroll,
  72. on_scroll = on_scroll,
  73. create_frequency = 0.01,
  74. final_callback = final_callback,
  75. on_update_item = function(item, i, v)
  76. item:SetData(v, self.id, self.model:GetFirstSubId(i))
  77. item:SetCallBackFunc(call_back)
  78. end,
  79. }
  80. self.tab_creator:UpdateItems(tag_all_info)
  81. end
  82. --设置垂直tab选择
  83. function EquipCollectSubView:UpdateSelectVer( need_refresh )
  84. self.tab_creator:IterateItems(function(item, i, v)
  85. item:SetSelect(self.id, self.sub_id)
  86. end)
  87. if need_refresh then
  88. self:ScrollToSelectItem()
  89. end
  90. self:UpdateRightItem()
  91. end
  92. function EquipCollectSubView:UpdateRightItem( )
  93. self.right_creator = self.right_creator or self:AddUIComponent(UI.ItemListCreator)
  94. local data = {}
  95. local sort_index = 0
  96. for k,v in pairsByKeys(self.cur_select_data) do
  97. table.insert(data,v)
  98. sort_index = sort_index + 1
  99. v.sort_index = sort_index
  100. end
  101. local sort_func = function ( a, b )
  102. local is_all_collect_a = self.model:CheckIsAllEquipCollected(a[1].id, a[1].sub_id)
  103. local is_all_collect_b = self.model:CheckIsAllEquipCollected(b[1].id, b[1].sub_id)
  104. if is_all_collect_a and not is_all_collect_b then
  105. return false
  106. elseif is_all_collect_b and not is_all_collect_a then
  107. return true
  108. else
  109. return a.sort_index < b.sort_index
  110. end
  111. end
  112. table.sort(data, sort_func)
  113. local tag_all_info = {
  114. data_list = data,
  115. item_con = self.right_con,
  116. item_class = EquipCollectRightItem,
  117. item_height = 138,
  118. start_x = 2,
  119. start_y = -2,
  120. space_y = 10,
  121. scroll_view = self.left_scroll,
  122. -- create_frequency = 0.01,
  123. on_update_item = function(item, i, v)
  124. item:SetData(v, self.id, self.model:GetFirstSubId(i), i, self.show_first_effect)
  125. end,
  126. }
  127. self.right_creator:UpdateItems(tag_all_info)
  128. if self.sub_id == 4 then
  129. self.right_creator:ScrollToItem(2)
  130. end
  131. end
  132. function EquipCollectSubView:ScrollToSelectItem( )
  133. for i,v in ipairs(self.tab_data) do
  134. if i == self.id then
  135. self.tab_creator:ScrollToItem(i)
  136. end
  137. end
  138. end
  139. function EquipCollectSubView:SetData( id, sub_id, show_first_effect)
  140. self.id = id or self.id
  141. self.sub_id = sub_id or self.sub_id
  142. self.show_first_effect = show_first_effect
  143. if id == 1 and sub_id == 1 then
  144. self.need_do_task = true
  145. end
  146. if self.is_loaded then
  147. self.need_refreshData = false
  148. self:UpdateView()
  149. else
  150. self.need_refreshData = true
  151. end
  152. end
  153. function EquipCollectSubView:__delete( )
  154. if self.need_do_task then
  155. GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK, true, true)
  156. end
  157. end