源战役客户端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

140 linhas
4.2 KiB

4 semanas atrás
  1. FuliAIItem = FuliAIItem or BaseClass(BaseItem)
  2. local FuliAIItem = FuliAIItem
  3. function FuliAIItem:__init()
  4. self.base_file = "fuli"
  5. self.layout_file = "FuliAIItem"
  6. self.model = FuliModel:GetInstance()
  7. self.awardItem_list = {}
  8. self:Load()
  9. end
  10. function FuliAIItem:Load_callback()
  11. self.nodes = {
  12. "click_con:obj","bg_image:obj","time_text:tmp","item_con",
  13. "icon_can_get:obj",
  14. }
  15. self:GetChildren(self.nodes)
  16. -- self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
  17. -- self.awardItem:SetEnableClick(false)
  18. -- self.awardItem:SetItemSize(84, 84)
  19. -- self.awardItem:SetVisible(false)
  20. self:AddEvents()
  21. if self.need_refreshData then
  22. self:UpdateView()
  23. end
  24. end
  25. function FuliAIItem:AddEvents( )
  26. local function on_click( ... )
  27. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16004, self.index)
  28. if self.is_get then
  29. self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.IS_GET)
  30. else
  31. if not self.can_get then
  32. self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.CAN_NOT_GET)
  33. end
  34. end
  35. end
  36. AddClickEvent(self.click_con_obj, on_click)
  37. end
  38. function FuliAIItem:UpdateView( )
  39. local award_list = stringtotable(self.data.award)
  40. for i,v in ipairs(award_list) do
  41. self.awardItem_list[i] = self.awardItem_list[i] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
  42. local item = self.awardItem_list[i]
  43. item:SetData(v[2], v[3],nil)
  44. item:SetVisible(true)
  45. item:SetEnableClick(false)
  46. item:SetItemSize(62, 62)
  47. item:SetAnchoredPosition((i - 1) * (62 + 10), 0)
  48. end
  49. -- self.awardItem:SetData(award_list[1][2], award_list[1][3],nil)
  50. -- self.awardItem:SetVisible(true)
  51. self.bg_image_obj:SetActive(true)
  52. self.can_get = false
  53. if TableSize(self.server_data) > 0 then
  54. local rest_time = self.data.duration - self.server_data.duration_time--时间还没到
  55. local rest_time_index = self.model:GetFuliAICountTimeIndex()
  56. if rest_time > 0 and rest_time_index == self.index then
  57. self:SetTimer(rest_time)
  58. else
  59. local min = math.floor(self.data.duration/60)
  60. self.time_text_tmp.text = "在线"..min.."分钟"
  61. -- self.bg_image_obj:SetActive(false)
  62. end
  63. if rest_time <= 0 and self.server_data.my_receive[self.index] ~= 1 then
  64. self.can_get = true
  65. -- self.red_dot_obj:SetActive(true)
  66. self.time_text_tmp.text = HtmlColorTxt("点击领取", ColorUtil.GREEN_TIPS)
  67. -- self.awardItem:SetGray(false)
  68. self:SetAwardItemGray( false )
  69. self.icon_can_get_obj:SetActive(true)
  70. else
  71. self.is_get = self.server_data.my_receive[self.index] == 1
  72. -- self.get_image_obj:SetActive(self.is_get)
  73. if self.is_get then
  74. self.time_text_tmp.text = HtmlColorTxt("已领取", ColorUtil.WHITE)
  75. -- self.awardItem:SetGray(true)
  76. self:SetAwardItemGray( true )
  77. end
  78. self.icon_can_get_obj:SetActive(false)
  79. end
  80. else
  81. self.time_text_tmp.text = ""
  82. end
  83. end
  84. function FuliAIItem:SetAwardItemGray( bool )
  85. for k,v in pairs(self.awardItem_list) do
  86. v:SetGray(bool)
  87. end
  88. end
  89. function FuliAIItem:SetTimer( time )
  90. local function time_down()
  91. time = self.data.duration - self.server_data.duration_time
  92. if time > 0 then
  93. self.time_text_tmp.text = HtmlColorTxt(TimeUtil:timeConvert13(time), ColorUtil.GREEN_TIPS)
  94. else
  95. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16003)
  96. self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index)
  97. end
  98. end
  99. self.model:SetFuncCallBack(time_down, "FuliAIItem:SetTimer"..self.index)
  100. -- self.timer_id = GlobalTimerQuest:AddPeriodQuest(time_down, 1, -1)
  101. end
  102. function FuliAIItem:StopTimer( )
  103. -- if self.timer_id then
  104. -- GlobalTimerQuest:CancelQuest(self.timer_id)
  105. -- self.timer_id = nil
  106. -- end
  107. end
  108. function FuliAIItem:SetData(index, data,server_data )
  109. self.index = index
  110. self.data = data
  111. self.server_data = server_data
  112. if self.is_loaded then
  113. self.need_refreshData = false
  114. self:UpdateView()
  115. else
  116. self.need_refreshData = true
  117. end
  118. end
  119. function FuliAIItem:__delete( )
  120. self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index)
  121. -- if self.awardItem then
  122. -- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
  123. -- self.awardItem = nil
  124. -- end
  125. self:StopTimer()
  126. for i,item in pairs(self.awardItem_list) do
  127. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
  128. end
  129. self.awardItem_list = {}
  130. end