databus.js 807 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import Pool from './base/pool'
  2. let instance
  3. /**
  4. * 全局状态管理器
  5. */
  6. export default class DataBus {
  7. constructor() {
  8. if (instance) return instance
  9. instance = this
  10. this.pool = new Pool()
  11. this.reset()
  12. }
  13. reset() {
  14. this.frame = 0
  15. this.score = 0
  16. this.bullets = []
  17. this.enemys = []
  18. this.animations = []
  19. this.gameOver = false
  20. }
  21. /**
  22. * 回收敌人,进入对象池
  23. * 此后不进入帧循环
  24. */
  25. removeEnemey(enemy) {
  26. const temp = this.enemys.shift()
  27. temp.visible = false
  28. this.pool.recover('enemy', enemy)
  29. }
  30. /**
  31. * 回收子弹,进入对象池
  32. * 此后不进入帧循环
  33. */
  34. removeBullets(bullet) {
  35. const temp = this.bullets.shift()
  36. temp.visible = false
  37. this.pool.recover('bullet', bullet)
  38. }
  39. }