XverseEffectManager.js 1.1 KB

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