databus.js 830 B

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