FightUnitManager.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. FightUnitManager = {}
  2. local this = FightUnitManager
  3. local removeObjList = BattleList.New()
  4. local unitArray = {[FightUnitType.UnitSupport] = {}, [FightUnitType.UnitAircraftCarrier] = {}}
  5. local unitPool = BattleObjectPool.New(function ()
  6. return FightUnitLogic.New()
  7. end)
  8. function this.Init()
  9. this.Clear()
  10. end
  11. function FightUnitManager.AddUnit(unitData)
  12. local unit = unitPool:Get()
  13. unit:Init(unitData)
  14. unitArray[unitData.type][unitData.camp] = unit
  15. BattleLogic.Event:DispatchEvent(BattleEventName.AddUnit, unit)
  16. end
  17. function FightUnitManager.GetUnit(type, camp)
  18. return unitArray[type][camp]
  19. end
  20. function this.Clear()
  21. for _, unitsByType in pairs(unitArray) do
  22. for _, unit in pairs(unitsByType) do
  23. unit:Dispose()
  24. removeObjList:Add(unit)
  25. end
  26. end
  27. unitArray = {[FightUnitType.UnitSupport] = {}, [FightUnitType.UnitAircraftCarrier] = {}}
  28. while removeObjList.size > 0 do
  29. unitPool:Put(removeObjList.buffer[removeObjList.size])
  30. removeObjList:Remove(removeObjList.size)
  31. end
  32. end
  33. return this