源战役客户端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

196 satır
5.7 KiB

  1. MarketFocusView = MarketFocusView or BaseClass(BaseItem)
  2. local MarketFocusView = MarketFocusView
  3. function MarketFocusView:__init()
  4. self.base_file = "market"
  5. self.layout_file = "MarketFocusView"
  6. self.model = MarketModel:GetInstance()
  7. self.sort_id = 1
  8. self.sort_order = 0--0:表示顺序(从大到小) 1:表示倒序(从小到大)
  9. self.sort_data = {
  10. 1,1,1
  11. }
  12. self.tab_item_list = {}
  13. self.cur_hor_tab_index = 1 --水平tab选择
  14. self:Load()
  15. end
  16. function MarketFocusView:Load_callback()
  17. self.nodes = {
  18. "title/time_con/time_arrow","title/auction_con:obj","right_scroll","title/auction_con/auction_arrow",
  19. "right_scroll/Viewport/right_con","title/price_con:obj","title/price_con/price_arrow","tab_con","title/time_con:obj",
  20. "empty:obj","empty/empty_text:tmp","empty/girl:raw","empty/empty_talk_image:raw",
  21. }
  22. self:GetChildren(self.nodes)
  23. lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("team_empty_bg_267_589"), false)
  24. lua_resM:setOutsideRawImage(self, self.empty_talk_image_raw, GameResPath.GetViewBigBg("com_empty_bg1"), false)
  25. self:AddEvents()
  26. self:SetHorTabCon()
  27. if self.need_refreshData then
  28. self:UpdateView()
  29. end
  30. end
  31. function MarketFocusView:AddEvents( )
  32. function on_click_sort( target )
  33. if target == self.auction_con_obj then--拍卖排序
  34. self:SelectSort(2)
  35. elseif target == self.price_con_obj then--一口价排序
  36. self:SelectSort(3)
  37. elseif target == self.time_con_obj then--时间排序
  38. self:SelectSort(1)
  39. end
  40. end
  41. AddClickEvent(self.auction_con_obj, on_click_sort)
  42. AddClickEvent(self.price_con_obj, on_click_sort)
  43. AddClickEvent(self.time_con_obj, on_click_sort)
  44. local function on_update_goods( )
  45. self:UpdateView()
  46. end
  47. self.on_update_goods_id = self.model:BindOne("market_focus_list", on_update_goods)
  48. end
  49. function MarketFocusView:SelectSort( index )
  50. self.sort_id = index
  51. self.sort_order = self.sort_data[index] == 1 and 1 or 0
  52. self.sort_data[index] = self.sort_data[index] == 1 and 0 or 1
  53. if index == 1 then
  54. self.time_arrow.localRotation = self.sort_data[index] == 1 and Quaternion.Euler(0,0,0) or Quaternion.Euler(0,0,180)
  55. elseif index == 2 then
  56. self.auction_arrow.localRotation = self.sort_data[index] == 1 and Quaternion.Euler(0,0,0) or Quaternion.Euler(0,0,180)
  57. elseif index == 3 then
  58. self.price_arrow.localRotation = self.sort_data[index] == 1 and Quaternion.Euler(0,0,0) or Quaternion.Euler(0,0,180)
  59. end
  60. self:UpdateView()
  61. end
  62. function MarketFocusView:UpdateView( )
  63. local data = DeepCopy(self.model:GetMarketFocusList(self.cur_hor_tab_index))
  64. if self.sort_id == 1 then--时间排序
  65. if self.sort_data[self.sort_id] == 1 then--从小到大
  66. local sort_func = function ( a, b )
  67. return a.end_time < b.end_time
  68. end
  69. table.sort(data, sort_func)
  70. else
  71. local sort_func = function ( a, b )
  72. return a.end_time > b.end_time
  73. end
  74. table.sort(data, sort_func)
  75. end
  76. elseif self.sort_id == 2 then--一口价排序
  77. if self.sort_data[self.sort_id] == 1 then--从小到大
  78. local sort_func = function ( a, b )
  79. return a.price < b.price
  80. end
  81. table.sort(data, sort_func)
  82. else
  83. local sort_func = function ( a, b )
  84. return a.price > b.price
  85. end
  86. table.sort(data, sort_func)
  87. end
  88. elseif self.sort_id == 3 then--竞拍价排序
  89. if self.sort_data[self.sort_id] == 1 then--从小到大
  90. local sort_func = function ( a, b )
  91. return a.get_price < b.get_price
  92. end
  93. table.sort(data, sort_func)
  94. else
  95. local sort_func = function ( a, b )
  96. return a.get_price > b.get_price
  97. end
  98. table.sort(data, sort_func)
  99. end
  100. end
  101. if TableSize(data) == 0 then
  102. self.empty_obj:SetActive(true)
  103. if self.cur_hor_tab_index == 1 then--全部
  104. self.empty_text_tmp.text = "您还没有竞拍或关注哦~"
  105. elseif self.cur_hor_tab_index == 2 then--竞拍
  106. self.empty_text_tmp.text = "您还没有竞拍哦~"
  107. elseif self.cur_hor_tab_index == 3 then--关注
  108. self.empty_text_tmp.text = "您还没有关注的商品哦~"
  109. end
  110. else
  111. self.empty_obj:SetActive(false)
  112. end
  113. if not self.item_list_com then
  114. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  115. end
  116. if self.item_list_com then
  117. self.item_list_com:Reset()
  118. end
  119. local info = {
  120. data_list = data,
  121. item_con = self.right_con,
  122. item_class = MarketFocusItem,
  123. start_y = 0, start_x = 22,
  124. item_width = 1060,
  125. item_height = 100,
  126. space_y = 0,
  127. scroll_view = self.right_scroll.transform,
  128. create_frequency = 0.01,
  129. create_num_per_time = 3,
  130. is_scroll_back_on_update = false,
  131. on_update_item = function(item, i, v)
  132. item:SetData(i, v)
  133. end,
  134. }
  135. self.item_list_com:UpdateItems(info)
  136. end
  137. function MarketFocusView:SetData( data )
  138. self.data = data
  139. if self.is_loaded then
  140. self.need_refreshData = false
  141. self:UpdateView()
  142. else
  143. self.need_refreshData = true
  144. end
  145. end
  146. function MarketFocusView:SetHorTabCon( )
  147. for i,v in ipairs(self.tab_item_list) do
  148. v:SetVisible(false)
  149. end
  150. local data = {"全部", "正在竞价", "已关注"}
  151. local function click_func( index )
  152. self:SwitchHorTab(index)
  153. end
  154. local count = 0
  155. for i,v in ipairs(data) do
  156. local item = self.tab_item_list[count+1]
  157. if not item then
  158. item = MarketHorTabItem.New(self.tab_con)
  159. item:SetPosition(count * 124, 0)
  160. self.tab_item_list[count+1] = item
  161. end
  162. item:SetClickFunc(click_func)
  163. count = count + 1
  164. item:SetData(count, v)
  165. item:SetVisible(true)
  166. end
  167. self:SwitchHorTab(self.cur_hor_tab_index)
  168. end
  169. function MarketFocusView:SwitchHorTab( index )
  170. for i,v in pairs(self.tab_item_list) do
  171. v:SetSelect(i==index)
  172. end
  173. self.cur_hor_tab_index = index--当前选的tab
  174. self:UpdateView()
  175. end
  176. function MarketFocusView:__delete( )
  177. if self.on_update_goods_id then
  178. self.model:UnBind(self.on_update_goods_id)
  179. self.on_update_goods_id = nil
  180. end
  181. for _, v in pairs(self.tab_item_list) do
  182. v:DeleteMe()
  183. v = nil
  184. end
  185. self.tab_item_list = {}
  186. end