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

219 lines
6.3 KiB

  1. --[[@------------------------------------------------------------------
  2. @description:-
  3. @author:hwr
  4. ----------------------------------------------------------------------]]
  5. MarketSalesHallView = MarketSalesHallView or BaseClass(BaseItem)
  6. local MarketSalesHallView = MarketSalesHallView
  7. local EquipModel = EquipModel
  8. function MarketSalesHallView:__init()
  9. self.base_file = "market"
  10. self.layout_file = "MarketSalesHallView"
  11. self.model = MarketModel:getInstance()
  12. self.equip_model = EquipModel:getInstance()
  13. self.mainRoleVo = RoleManager.Instance.mainRoleInfo
  14. self.item_list = {}
  15. self.bag_item_list = {}
  16. self.event_list = {}
  17. self.shelves_bag_list = {}
  18. self.column_num = 5 --一行多少个图标
  19. self.show_count = 40
  20. self:Load()
  21. end
  22. function MarketSalesHallView:__delete()
  23. for _, v in pairs(self.event_list) do
  24. self.model:UnBind(v)
  25. v = nil
  26. end
  27. self.event_list = {}
  28. if self.event_bag_change_id then
  29. GoodsModel:getInstance():UnBind(self.event_bag_change_id)
  30. self.event_bag_change_id = nil
  31. end
  32. for _, v in pairs(self.item_list) do
  33. v:DeleteMe()
  34. v = nil
  35. end
  36. self.item_list = {}
  37. for _, v in pairs(self.bag_item_list) do
  38. v:DeleteMe()
  39. v = nil
  40. end
  41. self.bag_item_list = {}
  42. self.mainRoleVo = nil
  43. end
  44. function MarketSalesHallView:Load_callback()
  45. self.nodes = {
  46. "bag_scroll","bag_scroll/Viewport/bag_con","sales_scroll","empty/empty_talk_image:raw",
  47. "sales_scroll/Viewport/sales_con","bg:img","empty/empty_text:tmp","empty/girl:raw","empty:obj",
  48. "all_up_btn:obj",
  49. }
  50. self:GetChildren(self.nodes)
  51. lua_resM:setOutsideRawImage(self, self.empty_talk_image_raw, GameResPath.GetViewBigBg("com_empty_bg1"), false)
  52. lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("team_empty_bg_267_589"), false)
  53. self:InitEvent()
  54. if self.need_refreshData then
  55. self:UpdateView()
  56. end
  57. end
  58. function MarketSalesHallView:InitEvent()
  59. local onUpdatehandler = function ()
  60. self:CreateShelvesItems()
  61. end
  62. self.event_list[#self.event_list +1] = self.model:BindOne("goods_shelves_list", onUpdatehandler)
  63. self.event_list[#self.event_list +1] = self.model:BindOne("under_shelves_list", onUpdatehandler)
  64. local function onChangeBagListHandler()
  65. self:UpdateBagItems()
  66. end
  67. self.event_bag_change_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
  68. local function on_one_up( ... )
  69. self.model:Fire(MarketModel.REQUEST_CCMD_EVENT, 15519)
  70. end
  71. AddClickEvent(self.all_up_btn_obj, on_one_up)
  72. end
  73. function MarketSalesHallView:SetData(sub_index, param_list )
  74. self.sub_index = sub_index
  75. self.param_list = param_list
  76. if self.is_loaded then
  77. self.need_refreshData = false
  78. self:UpdateView()
  79. else
  80. self.need_refreshData = true
  81. end
  82. end
  83. function MarketSalesHallView:UpdateView( )
  84. self:CreateShelvesItems()
  85. self:UpdateBagItems()
  86. if self.param_list then
  87. if self.param_list.type == GoodsModel.TYPE.EQUIP then
  88. UIToolTipMgr:getInstance():AppendEquipTips(self.param_list.type_id, x, y,self.param_list,nil,nil,nil,"market_bag",self.param_list)
  89. else
  90. local data = {
  91. market_data = self.param_list,
  92. }
  93. UIToolTipMgr:getInstance():AppendGoodsTips(self.param_list.type_id, x, y, nil, nil,data, true)
  94. end
  95. self.param_list = nil
  96. end
  97. end
  98. function MarketSalesHallView:CreateShelvesItems()
  99. for _, v in pairs(self.item_list) do
  100. v:SetVisible(false)
  101. end
  102. local goods_list = self.model:GetOnShelvesList()
  103. local function sortfunction( a,b )
  104. return a.up_time > b.up_time
  105. end
  106. table.sort( goods_list, sortfunction )
  107. if TableSize(goods_list) == 0 then
  108. self.empty_obj:SetActive(true)
  109. self.empty_text_tmp.text = "赶紧试试卖个东西吧~"
  110. else
  111. self.empty_obj:SetActive(false)
  112. end
  113. -- local width = MarketSalesHallItem.WIDTH
  114. -- local height = MarketSalesHallItem.HEIGHT
  115. local width = 605
  116. local height = 100
  117. for i,v in ipairs(goods_list) do
  118. local item = self.item_list[i]
  119. if item == nil then
  120. item = MarketSalesHallItem.New(self.sales_con)
  121. self.item_list[i] = item
  122. end
  123. item:SetVisible(true)
  124. item:SetPosition(0, -height * (i - 1)-2)
  125. item:SetData(v,i)
  126. end
  127. self.sales_con.sizeDelta = Vector2(width, #goods_list*height)
  128. end
  129. function MarketSalesHallView:UpdateBagItems()
  130. if not self.is_loaded then
  131. return
  132. end
  133. local bag_goods_list = GoodsModel:getInstance().bag_goods_list
  134. self.shelves_bag_list = {}
  135. for k, v in pairs(bag_goods_list) do
  136. if self.model:IsGoodsCanUpShelves(v) then
  137. -- 非可提升的本职业装备才可以添加进出售列表
  138. local can_tip, flag = self.equip_model:EquipCanShowGoodsTip(v)
  139. if not flag or flag ~= 1 then
  140. table.insert(self.shelves_bag_list, DeepCopy(v))
  141. end
  142. end
  143. end
  144. local onSort = function (a, b)
  145. if a.is_hot_goods ~= b.is_hot_goods then
  146. return a.is_hot_goods
  147. else
  148. return a.type_id < b.type_id
  149. end
  150. end
  151. table.sort(self.shelves_bag_list, onSort)
  152. --引导数据封装
  153. local is_help_finish = GuideModel:getInstance():IsLifelongHelpFinish(GuideModel.LIFELONG_TYPE.MARKET_SELL)
  154. if not is_help_finish then
  155. local my_career = RoleManager.Instance.mainRoleInfo.career
  156. local equip_cfg
  157. for i,v in ipairs(self.shelves_bag_list) do
  158. v.is_first_other_career_equip = false
  159. equip_cfg = self.equip_model:GetEquipmentCfg(v.type_id)
  160. if equip_cfg then
  161. local is_my_career = false
  162. for i2,v2 in pairs(equip_cfg.career) do
  163. if v2 == my_career then
  164. is_my_career = true
  165. break
  166. end
  167. end
  168. if not is_my_career then
  169. v.is_first_other_career_equip = true
  170. break
  171. end
  172. end
  173. end
  174. end
  175. for i = #self.shelves_bag_list + 1, 100 do
  176. self.shelves_bag_list[i] = {type_id = 0, goods_num = 0,index = i}
  177. end
  178. if not self.item_list_com then
  179. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  180. end
  181. local info = {
  182. data_list = self.shelves_bag_list,
  183. item_con = self.bag_con,
  184. item_class = MarketBagItem,
  185. start_y = -2, start_x = 2,
  186. item_width = 78,
  187. item_height = 78,
  188. show_col = 5,
  189. space_x = 17,
  190. space_y = 12,
  191. scroll_view = self.bag_scroll.transform,
  192. create_frequency = 0.01,
  193. is_scroll_back_on_update = false,
  194. on_update_item = function(item, i, v)
  195. self:OnInitializeItem(item,i,v)
  196. end,
  197. }
  198. self.item_list_com:UpdateItems(info)
  199. end
  200. function MarketSalesHallView:OnInitializeItem(item,realIndex,data)
  201. if item and realIndex > 0 and realIndex <= #self.shelves_bag_list then
  202. item:SetData(self.shelves_bag_list[realIndex])
  203. end
  204. end