BattleEnemyPart.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. local BattleEnemyPart = class("BattleEnemyPart")
  2. function BattleEnemyPart:ctor()
  3. end
  4. function BattleEnemyPart:InitGo(host,uiGo)
  5. self.host = host
  6. self.viewLua = CommonUtil.BindGridViewItem2Lua(self.host, "BattleEnemy", uiGo)
  7. end
  8. function BattleEnemyPart:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_Refresh_Enemy_Fighter_Life,self,self.RefreshFighterLife);
  10. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_Refresh_Enemy_Fighter_Sp,self,self.RefreshFighterSp);
  11. end
  12. function BattleEnemyPart:RemoveEventListener()
  13. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_Refresh_Enemy_Fighter_Life,self,self.RefreshFighterLife);
  14. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_Refresh_Enemy_Fighter_Sp,self,self.RefreshFighterSp);
  15. end
  16. function BattleEnemyPart:AddUIEventListener()
  17. end
  18. function BattleEnemyPart:Show(enemyName,members, isLeftTime, totalTime)
  19. self.enemyName = enemyName
  20. self.enemyMembers = members
  21. self:HidePlayerNodes()
  22. self:AddEventListener()
  23. self.actorHeadMapping = {}
  24. for i =1, #self.enemyMembers do
  25. local actor = self.enemyMembers[i]
  26. local go = self:GetHeadGo(i)
  27. self.actorHeadMapping[tostring(actor.ID)] = go
  28. self:SetPlayerData(actor.ID,go.headBoxItemNew,self.enemyMembers[i])
  29. end
  30. if isLeftTime then
  31. self.viewLua.leftTime:SetActive(true)
  32. self.viewLua.infinite:SetActive(false)
  33. self:InitLeftTimer()
  34. if totalTime then
  35. self.remainLeftTime = totalTime
  36. self.totalTime = totalTime
  37. else
  38. self.remainLeftTime = 0
  39. self.totalTime = 0
  40. end
  41. else
  42. self.viewLua.leftTime:SetActive(false)
  43. self.viewLua.infinite:SetActive(true)
  44. self:DisposeLeftTimer()
  45. end
  46. self.viewLua.enemyNameTxt.text.text = self.enemyName
  47. self.viewLua:SetActive(true)
  48. end
  49. function BattleEnemyPart:HidePlayerNodes()
  50. for i =1, 4 do
  51. local go = self:GetHeadGo(i)
  52. go.headBoxItemNew:SetActive(false)
  53. go.headBoxItemNew.headItem.head.button.interactable = false
  54. end
  55. end
  56. function BattleEnemyPart:Hide()
  57. self:RemoveEventListener()
  58. self.viewLua:SetActive(false)
  59. self:HidePlayerNodes()
  60. self:Clear()
  61. end
  62. function BattleEnemyPart:SetPlayerData(uid,playerNode,actorData)
  63. CommonUtil.SetPlayerHeadAndFrame(self.host,playerNode.headItem,actorData,true,actorData.HeadFrameId)
  64. self:RefreshFighterLife(uid,actorData.Life,actorData.Life)
  65. self:RefreshFighterSp(uid,actorData.Sp,actorData.Sp)
  66. playerNode.deadNode:SetActive(false)
  67. playerNode:SetActive(true)
  68. end
  69. function BattleEnemyPart:RefreshFighterLife(actorId,life,maxLife)
  70. local headGo = self:GetActorHeadGo(actorId)
  71. CommonUtil.SetFighterLife(headGo,life,maxLife)
  72. end
  73. function BattleEnemyPart:RefreshFighterSp(actorId,sp,maxSp)
  74. local headGo = self:GetActorHeadGo(actorId)
  75. CommonUtil.SetFighterSp(headGo,sp,maxSp)
  76. end
  77. function BattleEnemyPart:GetHeadGo(idx)
  78. if idx == 1 then
  79. return self.viewLua.playerNode1
  80. end
  81. if idx == 2 then
  82. return self.viewLua.playerNode2
  83. end
  84. if idx == 3 then
  85. return self.viewLua.playerNode3
  86. end
  87. if idx == 4 then
  88. return self.viewLua.playerNode4
  89. end
  90. return nil
  91. end
  92. function BattleEnemyPart:GetActorHeadGo(actorId)
  93. if self.actorHeadMapping == nil then
  94. return nil
  95. end
  96. if actorId == nil then
  97. return nil
  98. end
  99. return self.actorHeadMapping[tostring(actorId)].headBoxItemNew
  100. end
  101. function BattleEnemyPart:InitLeftTimer()
  102. if not self.leftTimer then
  103. self.leftTimer = Timer.New(slot(self.RefreshLeftTimer, self), 0.3, -1)
  104. end
  105. if not self.leftTimer.running then
  106. self.leftTimer:Start()
  107. end
  108. end
  109. function BattleEnemyPart:DisposeLeftTimer()
  110. if self.leftTimer then
  111. self.leftTimer:Stop()
  112. self.leftTimer = nil
  113. end
  114. end
  115. function BattleEnemyPart:RefreshLeftTimer()
  116. self.remainLeftTime = self.totalTime - LuaBattleBridge.GetFightingTime()
  117. self:ShowLeftTime(self.remainLeftTime)
  118. if self.remainLeftTime <= 0 then
  119. self.remainLeftTime = 0
  120. self:DisposeLeftTimer()
  121. end
  122. end
  123. function BattleEnemyPart:ShowLeftTime(time)
  124. if self.viewLua == nil then
  125. return
  126. end
  127. if time > 0 then
  128. self.viewLua.leftTime.text.text = FormatTimeMS(time)
  129. else
  130. self.viewLua.leftTime.text.text = "00:00"
  131. end
  132. end
  133. function BattleEnemyPart:Clear()
  134. self.enemyMembers = nil
  135. self.actorHeadMapping = nil
  136. self:DisposeLeftTimer()
  137. end
  138. function BattleEnemyPart:Dispose()
  139. self:Clear()
  140. self.host = nil
  141. self.viewLua = nil
  142. end
  143. return BattleEnemyPart