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

169 lines
4.3 KiB

  1. BagOneKeySellView = BagOneKeySellView or BaseClass(BaseView)
  2. function BagOneKeySellView:__init()
  3. self.base_file = "bag"
  4. self.layout_file = "BagOneKeySellView"
  5. self.layer_name = "UI"
  6. self.destroy_imm = true
  7. self:AddPreLoadList("bag",{"BagItem"})
  8. self.append_to_ctl_queue = false
  9. self.item_list = {}
  10. self.data_list = {}
  11. self.column_num = 5 --一行多少个图标
  12. --self.use_local_view = true
  13. self.load_callback = function ()
  14. self:LoadSuccess()
  15. self:InitEvent()
  16. end
  17. self.open_callback = function ()
  18. self:InitItems()
  19. self:GetDataList()
  20. self:UpdateItems()
  21. end
  22. self.close_callback = function ()
  23. GlobalEventSystem:Fire(EventName.CLOSE_GUIDE_PROMPT_VIEW)
  24. end
  25. self.destroy_callback = function ()
  26. self:Clear()
  27. end
  28. end
  29. function BagOneKeySellView:Open()
  30. BaseView.Open(self)
  31. end
  32. function BagOneKeySellView:Clear()
  33. for i,item in pairs(self.item_list) do
  34. item:DeleteMe()
  35. end
  36. self.item_list = {}
  37. if self.event_id then
  38. GoodsModel:getInstance():UnBind(self.event_id)
  39. self.event_id = nil
  40. end
  41. end
  42. function BagOneKeySellView:Close()
  43. BaseView.Close(self)
  44. end
  45. function BagOneKeySellView:LoadSuccess()
  46. self.scroll_content = self:GetChild("ScrollView/Viewport/Content")
  47. self.num = self:GetChild("num"):GetComponent("Text")
  48. self.outeSelete_toggle = self:GetChild("Toggle"):GetComponent("Toggle")
  49. self.close_btn,self.sellBtn,self.outeSelete_btn,
  50. self.tip_image,self.scrollView,self.tip
  51. = GetChildGameObjects (self.transform,
  52. {
  53. "Window/windowCloseBtn","Button","Toggle",
  54. "TipImage","ScrollView","Tip"
  55. })
  56. end
  57. function BagOneKeySellView:InitEvent()
  58. local function onBtnClickHandler(target)
  59. if target == self.close_btn then
  60. self:Close()
  61. elseif target == self.sellBtn then
  62. self:SellCall()
  63. elseif target == self.outeSelete_btn then
  64. if self.outeSelete_toggle.isOn then
  65. self.scrollView.gameObject:SetActive(true)
  66. self.tip.gameObject:SetActive(false)
  67. self:GetDataList(true)
  68. else
  69. self.scrollView.gameObject:SetActive(false)
  70. self.tip.gameObject:SetActive(true)
  71. self.data_list = {}
  72. end
  73. end
  74. end
  75. AddClickEvent(self.close_btn,onBtnClickHandler)
  76. AddClickEvent(self.sellBtn,onBtnClickHandler)
  77. AddClickEvent(self.outeSelete_btn,onBtnClickHandler)
  78. local function onChangeBagListHandler()
  79. if self._use_delete_method then return end
  80. self:GetDataList(false)
  81. self:UpdateItems()
  82. end
  83. self.event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
  84. end
  85. function BagOneKeySellView:GetDataList(flagOf0)
  86. self.data_list = {}
  87. local list = GoodsModel:getInstance().bag_goods_list
  88. for k,vo in pairs(list) do
  89. if vo.color == 0 and vo.type == GoodsModel.TYPE.EQUIP then
  90. if flagOf0 then
  91. if vo.goods_num > 0 then
  92. table.insert(self.data_list,vo)
  93. end
  94. else
  95. table.insert(self.data_list,vo)
  96. end
  97. end
  98. end
  99. end
  100. function BagOneKeySellView:InitItems( )
  101. local info = GoodsModel:getInstance().slot_info_pos_2
  102. local slot_num = info.slot_num or 0
  103. for k = 1,slot_num do
  104. item = self.item_list[k]
  105. if item == nil then
  106. item = BagItem.New(self.scroll_content,nil)
  107. self.item_list[k] = item
  108. end
  109. item:SetVoid()
  110. item:SetVisible(true)
  111. item:SetPosition((k - 1) % self.column_num * 94 ,math.floor((k - 1) / self.column_num) * -92 )
  112. end
  113. self.scroll_content.sizeDelta = Vector2(424,math.ceil((slot_num) / self.column_num) * 92)
  114. end
  115. --设置捐献信息
  116. function BagOneKeySellView:UpdateItems()
  117. for k,item in pairs(self.item_list) do
  118. item:SetVoid()
  119. end
  120. local item = nil
  121. local total_coin = 0
  122. for k,v in ipairs(self.data_list) do
  123. item = self.item_list[k]
  124. if item == nil then
  125. item = BagItem.New(self.scroll_content,nil)
  126. self.item_list[k] = item
  127. end
  128. item:SetSellState(true)
  129. item:SetData(v)
  130. item:SetVisible(true)
  131. item:SetPosition((k - 1) % self.column_num * 94,math.floor((k - 1) / self.column_num) * -92)
  132. if v.goods_num > 0 then
  133. total_coin = total_coin + GoodsModel:getInstance():GetSellPriceByTypeId(v.type_id)
  134. end
  135. end
  136. self.num.text = total_coin
  137. end
  138. function BagOneKeySellView:SellCall( )
  139. self:GetDataList(true)
  140. if #self.data_list <= 0 or not self.outeSelete_toggle.isOn then
  141. Message.show("无可出售物品")
  142. else
  143. UserMsgAdapter.WriteBegin(15021)
  144. UserMsgAdapter.WriteFMT("h",#self.data_list)
  145. for k,v in pairs(self.data_list) do
  146. UserMsgAdapter.WriteFMT("l",v.goods_id)
  147. UserMsgAdapter.WriteFMT("i",v.goods_num)
  148. end
  149. UserMsgAdapter.SendToGame()
  150. end
  151. end