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

95 lines
2.6 KiB

  1. ChatDressCosumeItem = ChatDressCosumeItem or BaseClass(BaseItem)
  2. function ChatDressCosumeItem:__init(parent)
  3. self.base_file = "chatDress"
  4. self.layout_file = "ChatDressCosumeItem"
  5. -- self.use_local_view = true
  6. self.type_id = 0
  7. self.have_num = 0
  8. self.use_num = 0
  9. self.model = ChatDressModel:getInstance()
  10. self:Load()
  11. end
  12. function ChatDressCosumeItem:Load_callback()
  13. self.icon = self:GetChild("icon")
  14. self.select
  15. = GetChildGameObjects(self.transform, {
  16. "select"
  17. })
  18. self.item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon)
  19. self.item.ClickCallFun = function ()
  20. self:SelectAll(not self.select.activeSelf)
  21. end
  22. if self.need_refreshData then
  23. self:SetData(self.vo,self.select_all)
  24. end
  25. if self.select_cache then
  26. self.select_cache = false
  27. self:SelectAll(self.select_state)
  28. end
  29. self:InitEvent()
  30. end
  31. function ChatDressCosumeItem:InitEvent()
  32. local function onBagChange()
  33. self.have_num = GoodsModel:getInstance():GetTypeGoodsNum(self.type_id)
  34. if self.have_num <= 0 then
  35. self:SetVisible(false)
  36. end
  37. if self.select.activeSelf then
  38. self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.have_num)
  39. end
  40. end
  41. self.change_bag_event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, onBagChange)
  42. end
  43. function ChatDressCosumeItem:SetData(vo,select_all)
  44. self.vo = vo
  45. self.select_all = select_all
  46. self.have_num = vo.goods_num
  47. self.use_num = 0
  48. self.type_id = vo.type_id
  49. if self.is_loaded then
  50. self.item:SetData(self.type_id, self.have_num)
  51. if self.select.activeSelf then
  52. self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.use_num)
  53. end
  54. if select_all then
  55. self:SelectAll(true)
  56. end
  57. else
  58. self.need_refreshData = true
  59. end
  60. end
  61. function ChatDressCosumeItem:SelectAll(bool)
  62. self.select_state = bool
  63. if self.is_loaded then
  64. if bool then
  65. self.use_num = self.have_num
  66. else
  67. self.use_num = 0
  68. end
  69. self.select:SetActive(bool)
  70. self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.use_num)
  71. else
  72. self.select_cache = true
  73. end
  74. end
  75. function ChatDressCosumeItem:__delete()
  76. if self.item then
  77. self.item:ReleaseObj()
  78. self.item = nil
  79. end
  80. if self.change_bag_event_id then
  81. GoodsModel:getInstance():UnBind(self.change_bag_event_id)
  82. self.change_bag_event_id = nil
  83. end
  84. end