源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123 строки
3.2 KiB

4 недель назад
  1. BossHomeSceneBossItem = BossHomeSceneBossItem or BaseClass(BaseItem)
  2. local BossHomeSceneBossItem = BossHomeSceneBossItem
  3. BossHomeSceneBossItem.Width = 195
  4. BossHomeSceneBossItem.Height = 41
  5. function BossHomeSceneBossItem:__init(parent_wnd,prefab_asset,layer_name)
  6. self.base_file = "boss"
  7. self.layout_file = "BossHomeSceneBossItem"
  8. self.layer_name = layer_name
  9. self.model = BossHomeModel:getInstance()
  10. self:Load()
  11. end
  12. function BossHomeSceneBossItem:Load_callback()
  13. self.nodes = {
  14. "lb_lv:tmp", "lb_name:tmp", "lb_num:tmp", "lb_time:tmp", "lb_status:tmp", "icon_time:obj",
  15. "click:obj", "light:obj",
  16. }
  17. self:GetChildren(self.nodes)
  18. self:AddEvents()
  19. if self.need_refreshData then
  20. self:UpdateView()
  21. end
  22. local function clockFun()
  23. self:TimeCall()
  24. end
  25. self.close_time_id = GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
  26. end
  27. function BossHomeSceneBossItem:AddEvents( )
  28. local function call_back( target )
  29. if target == self.click_obj then
  30. if (not self.data) or (not self.select_call) then return end
  31. if self.select_call then
  32. self.select_call(self.data)
  33. end
  34. end
  35. end
  36. AddClickEvent(self.click_obj,call_back,false)
  37. end
  38. function BossHomeSceneBossItem:UpdateView( )
  39. if not self.data then return end
  40. self.lb_num_tmp.text = self.data.grade
  41. self.lb_name_tmp.text = Trim(self.data.name)
  42. local boss_cfg = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.boss_id)
  43. self.lb_lv_tmp.text = string.format( "%d级", boss_cfg.lv )
  44. -------------------------
  45. local boss_data = self.model:GetBossHomeInfo( self.data.boss_id )
  46. if boss_data then
  47. self:TimeCall()
  48. else
  49. self:ShowStatusEmpty()
  50. end
  51. self:SetSelect()
  52. end
  53. function BossHomeSceneBossItem:SetSelect( )
  54. if not self.is_loaded then return end
  55. -------------------------
  56. if self.data then
  57. self.light_obj:SetActive(self.model.boss_home_scene_boss == self.data.boss_id)
  58. else
  59. self.light_obj:SetActive( false )
  60. end
  61. end
  62. function BossHomeSceneBossItem:ShowStatusEmpty( )
  63. self.lb_time_tmp.text = ""
  64. self.lb_status_tmp.text = "已刷新"
  65. self.icon_time_obj:SetActive(false)
  66. end
  67. function BossHomeSceneBossItem:TimeCall( )
  68. if not self.is_loaded then return end
  69. if not self.data then return end
  70. -------------------------
  71. local ser_data = false
  72. for k,v in pairs(self.model:GetBossHomeInfo()) do
  73. if v.boss_id == self.data.boss_id then
  74. ser_data = v
  75. end
  76. end
  77. if not ser_data then
  78. self:ShowStatusEmpty()
  79. return
  80. end
  81. local curTime = TimeUtil:getServerTime()
  82. local is_die = ser_data.reborn_time ~= 0 and ser_data.reborn_time > curTime
  83. if not is_die then
  84. self.lb_status_tmp.text = "已刷新"
  85. self.lb_time_tmp.text = ""
  86. self.icon_time_obj:SetActive(false)
  87. else
  88. local temp = ser_data.reborn_time - curTime
  89. self.lb_status_tmp.text = ""
  90. local for_str = temp >= 3600 and "hh:mm" or "mm:ss"
  91. self.lb_time_tmp.text = TimeUtil:timeConvert(temp, for_str)
  92. self.icon_time_obj:SetActive(true)
  93. end
  94. end
  95. function BossHomeSceneBossItem:SetData( data, select_call )
  96. self.data = data
  97. self.select_call = select_call
  98. if self.is_loaded then
  99. self.need_refreshData = false
  100. self:UpdateView()
  101. else
  102. self.need_refreshData = true
  103. end
  104. end
  105. function BossHomeSceneBossItem:__delete( )
  106. if self.close_time_id then
  107. GlobalTimerQuest:CancelQuest(self.close_time_id)
  108. self.close_time_id = nil
  109. end
  110. end