XverseEffectManager.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Logger from "./Logger.js"
  2. const logger = new Logger('4DMVS_EffectManager')
  3. export default class XverseEffectManager extends EventEmitter {
  4. constructor(e) {
  5. super();
  6. E(this, "effects", new Map);
  7. E(this, "room");
  8. this.room = e
  9. }
  10. async addEffect(e) {
  11. var o;
  12. const {jsonPath: t, id: r, type: n=IEffectType.SubSequence} = e;
  13. try {
  14. this.effects.get(r) && ((o = this.effects.get(r)) == null || o.dispose());
  15. const a = new Ae.subEffect({
  16. id: r,
  17. jsonPath: t,
  18. type: n,
  19. room: this.room
  20. });
  21. return this.effects.set(r, a),
  22. await a.init(),
  23. a
  24. } catch (a) {
  25. return this.effects.delete(r),
  26. logger.error(a),
  27. Promise.reject(a)
  28. }
  29. }
  30. clearEffects() {
  31. this.effects.forEach(e=>{
  32. e.dispose(),
  33. this.effects.delete(e.id)
  34. }
  35. )
  36. }
  37. removeEffect(e) {
  38. const t = this.effects.get(e);
  39. t == null || t.dispose(),
  40. t && this.effects.delete(t.id)
  41. }
  42. }
  43. ;