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

125 lines
3.5 KiB

  1. PetDiamondComposeItem = PetDiamondComposeItem or BaseClass(BaseItem)
  2. local PetDiamondComposeItem = PetDiamondComposeItem
  3. function PetDiamondComposeItem:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetDiamondComposeItem"
  6. self.model = PetModel:getInstance()
  7. self:Load()
  8. end
  9. function PetDiamondComposeItem:Load_callback()
  10. self.nodes = {
  11. "bg:obj", "select:obj",
  12. "awardCon",
  13. "name:tmp", "haveNum:tmp", "canComposeNum:tmp", "redDot:obj",
  14. }
  15. self:GetChildren(self.nodes)
  16. self.award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon)
  17. self.award_item:SetItemSize(78,78)
  18. self.award_item:SetAnchoredPosition(0,0)
  19. self:AddEvents()
  20. if self.need_refreshData then
  21. self:UpdateView()
  22. end
  23. if self.need_reselect then
  24. self:SetSelect(self.select_id, self.need_do_click_fun)
  25. end
  26. end
  27. function PetDiamondComposeItem:AddEvents( )
  28. local on_click = function ( click_obj )
  29. if self.bg_obj == click_obj then
  30. self.select_call_back(self.index,self.data)
  31. end
  32. end
  33. AddClickEvent(self.bg_obj, on_click)
  34. --刷新宝石数量时
  35. local update_feed_goods_num = function(goods_sub_type)
  36. if not self.is_loaded then return end
  37. if goods_sub_type == 3 then
  38. self:UpdateNum()
  39. end
  40. end
  41. self:BindEvent(self.model, PetConst.UPDATE_PET_GOODS_NUM, update_feed_goods_num)
  42. local function onRefreshRed(red_type)
  43. if not self.is_loaded then return end
  44. if red_type == PetConst.RED_DOT_TYPE.DiamondCompose then
  45. self:UpdateRed()
  46. end
  47. end
  48. self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, onRefreshRed)
  49. end
  50. function PetDiamondComposeItem:UpdateView( )
  51. self.award_item:SetData(self.data.stone_id)
  52. self:UpdateNum()
  53. self:UpdateRed()
  54. end
  55. function PetDiamondComposeItem:UpdateRed( )
  56. local red_list = self.model:GetPetDiamnondComposeRedList()
  57. if red_list[self.data.stone_id] then
  58. self.redDot_obj:SetActive(true)
  59. else
  60. self.redDot_obj:SetActive(false)
  61. end
  62. end
  63. function PetDiamondComposeItem:UpdateNum( )
  64. local diamond_num = GoodsModel:getInstance():GetPetDiamondNumByTypeID(self.data.stone_id)
  65. self.haveNum_tmp.text = "拥有 "..diamond_num
  66. local goods_name = GoodsModel:getInstance():getGoodsName(self.data.stone_id,true)
  67. self.name_tmp.text = goods_name
  68. local material_stone_id = stringtotable(self.data.compound_list)[1][1]
  69. local material_nums = GoodsModel:getInstance():GetPetDiamondNumByTypeID(material_stone_id)
  70. local can_compose_num = math.floor(material_nums/3)
  71. local num_color = can_compose_num > 0 and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK
  72. self.canComposeNum_tmp.text = string.format("可合成数量:<%s>%s</color>",num_color,can_compose_num)
  73. end
  74. function PetDiamondComposeItem:SetData( data ,index,select_call_back)
  75. self.data = data
  76. self.index = index
  77. self.select_call_back = select_call_back
  78. if self.is_loaded then
  79. self.need_refreshData = false
  80. self:UpdateView()
  81. else
  82. self.need_refreshData = true
  83. end
  84. end
  85. function PetDiamondComposeItem:SetSelect(index, need_do_click_fun)
  86. self.select_id = index or 1
  87. self.need_do_click_fun = need_do_click_fun
  88. if self.is_loaded then
  89. self.need_reselect = false
  90. self.select_obj:SetActive(self.select_id == self.index)
  91. if self.select_id == self.index and need_do_click_fun then
  92. self.select_call_back(self.index,self.data)
  93. self.need_do_click_fun = nil
  94. end
  95. else
  96. self.need_reselect = true
  97. end
  98. end
  99. function PetDiamondComposeItem:__delete( )
  100. if self.award_item then
  101. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.award_item)
  102. self.award_item = nil
  103. end
  104. end