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

104 lines
3.3 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 藏宝图遗宝馈赠item节点(月度次数奖励节点)
  4. -- *>
  5. TreasureMapFeedbackItem = TreasureMapFeedbackItem or BaseClass(BaseItem)
  6. local TreasureMapFeedbackItem = TreasureMapFeedbackItem
  7. function TreasureMapFeedbackItem:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "treasureMap"
  9. self.layout_file = "TreasureMapFeedbackItem"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.model = TreasureMapModel:getInstance()
  13. self:Load()
  14. end
  15. function TreasureMapFeedbackItem:Load_callback()
  16. local nodes = {
  17. "item_con",
  18. "receive_red:obj",
  19. "received:obj",
  20. "pro_icon:img",
  21. "need_time:tmp",
  22. "click_bg:obj",
  23. }
  24. self:GetChildren(nodes)
  25. self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.item_con)
  26. self.awardItem:SetItemSize(78, 78)
  27. self.awardItem:SetAnchoredPosition(0, 0)
  28. self.awardItem:SetVisible(true)
  29. self:AddEvents()
  30. if self.need_refreshData then
  31. self:UpdateView()
  32. end
  33. end
  34. function TreasureMapFeedbackItem:AddEvents( )
  35. local function click_event(target)
  36. if target == self.click_bg_obj then
  37. self:OnClickBgClicked(target)
  38. end
  39. end
  40. AddClickEvent(self.click_bg_obj, click_event)
  41. local function updateMonthRewardReceiveStatus()
  42. self:UpdateReceivedStatus()
  43. end
  44. self:BindEvent(self.model, TreasureMapConst.UPDATE_MONTH_TIMES_DATA, updateMonthRewardReceiveStatus)
  45. end
  46. function TreasureMapFeedbackItem:SetData( data )
  47. self.data = data
  48. if self.is_loaded then
  49. self.need_refreshData = false
  50. self:UpdateView()
  51. else
  52. self.need_refreshData = true
  53. end
  54. end
  55. function TreasureMapFeedbackItem:UpdateView( )
  56. self:UpdateBasicData()
  57. self:UpdateReceivedStatus()
  58. end
  59. function TreasureMapFeedbackItem:UpdateBasicData( )
  60. if self.data then
  61. self.need_time_tmp.text = string.format("%s次", self.data[1])
  62. self.awardItem:SetData(self.data[2], self.data[3])
  63. end
  64. end
  65. function TreasureMapFeedbackItem:UpdateReceivedStatus( )
  66. if self.data then
  67. local month_data = self.model:GetAdvTreasureMapMonthTimesData()
  68. local cur_time = month_data.times
  69. local receive_flag = month_data.receive_list[self.data[1]] or false
  70. -- 缓存可领取标志
  71. self.can_receive = cur_time >= self.data[1] and not receive_flag and true or false
  72. lua_resM:setImageSprite(self, self.pro_icon_img, "treasureMap_asset", self.can_receive and "tm_feedback_pro2" or "tm_feedback_pro1", true)
  73. self.receive_red_obj:SetActive(self.can_receive)
  74. -- ui表现
  75. self.awardItem:SetGray(receive_flag)
  76. SetImageGray(self.pro_icon_img, not receive_flag and not self.can_receive)
  77. self.received_obj:SetActive(receive_flag)
  78. end
  79. end
  80. function TreasureMapFeedbackItem:OnClickBgClicked(target, x, y)
  81. if self.can_receive then -- 领取奖励
  82. self.model:Fire(TreasureMapConst.REQUEST_CCMD_EVENT, 42406, self.data[1])
  83. else -- 打开物品tips
  84. self.awardItem:ClickCallFun(target, x, y)
  85. end
  86. end
  87. function TreasureMapFeedbackItem:__delete( )
  88. if self.awardItem then
  89. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
  90. self.awardItem = nil
  91. end
  92. end