@clockworkdog/cogs-client 1.0.0-rc.6 → 1.0.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,10 +17,12 @@ export default class AudioPlayer {
17
17
  fade?: number;
18
18
  loop: boolean;
19
19
  }): void;
20
- pauseAudioClip(path: string, fade?: number): void;
20
+ pauseAudioClip(path: string, { fade }: {
21
+ fade?: number;
22
+ }, onlySoundId?: number, allowIfPauseRequested?: boolean): void;
21
23
  stopAudioClip(path: string, { fade }: {
22
24
  fade?: number;
23
- }): void;
25
+ }, onlySoundId?: number, allowIfStopRequested?: boolean): void;
24
26
  stopAllAudioClips(options: {
25
27
  fade?: number;
26
28
  }): void;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const howler_1 = require("howler");
4
4
  const urls_1 = require("./helpers/urls");
5
- const AudioState_1 = require("./types/AudioState");
5
+ const DEBUG = true;
6
6
  class AudioPlayer {
7
7
  constructor(cogsConnection) {
8
8
  this.eventTarget = new EventTarget();
@@ -17,7 +17,9 @@ class AudioPlayer {
17
17
  const message = event.detail;
18
18
  switch (message.type) {
19
19
  case 'media_config_update':
20
- this.setGlobalVolume(message.globalVolume);
20
+ if (this.globalVolume !== message.globalVolume) {
21
+ this.setGlobalVolume(message.globalVolume);
22
+ }
21
23
  this.updateConfig(message.files);
22
24
  break;
23
25
  case 'audio_play':
@@ -29,7 +31,7 @@ class AudioPlayer {
29
31
  });
30
32
  break;
31
33
  case 'audio_pause':
32
- this.pauseAudioClip(message.file, message.fade);
34
+ this.pauseAudioClip(message.file, { fade: message.fade });
33
35
  break;
34
36
  case 'audio_stop':
35
37
  if (message.file) {
@@ -49,9 +51,14 @@ class AudioPlayer {
49
51
  const sendInitialClipStates = () => {
50
52
  const files = Object.entries(this.audioClipPlayers).map(([file, player]) => {
51
53
  const activeClips = Object.values(player.activeClips);
52
- const status = activeClips.some(({ state }) => state === AudioState_1.ActiveAudioClipState.Playing)
54
+ const status = activeClips.some(({ state }) => state.type === 'playing' ||
55
+ state.type === 'pausing' ||
56
+ state.type === 'stopping' ||
57
+ state.type === 'play_requested' ||
58
+ state.type === 'pause_requested' ||
59
+ state.type === 'stop_requested')
53
60
  ? 'playing'
54
- : activeClips.some(({ state }) => state === AudioState_1.ActiveAudioClipState.Paused || state === AudioState_1.ActiveAudioClipState.Pausing)
61
+ : activeClips.some(({ state }) => state.type === 'paused')
55
62
  ? 'paused'
56
63
  : 'stopped';
57
64
  return [file, status];
@@ -67,20 +74,29 @@ class AudioPlayer {
67
74
  this.notifyStateListeners();
68
75
  }
69
76
  playAudioClip(path, { playId, volume, fade, loop }) {
77
+ log('Playing clip', { path });
70
78
  if (!(path in this.audioClipPlayers)) {
79
+ log('Creating ephemeral clip', { path });
71
80
  this.audioClipPlayers[path] = this.createClip(path, { preload: false, ephemeral: true });
72
81
  }
73
82
  this.updateAudioClipPlayer(path, (clipPlayer) => {
83
+ // Paused clips need to be played again
74
84
  const pausedSoundIds = Object.entries(clipPlayer.activeClips)
75
- .filter(([, { state }]) => state === AudioState_1.ActiveAudioClipState.Paused || state === AudioState_1.ActiveAudioClipState.Pausing)
85
+ .filter(([, { state }]) => state.type === 'paused' || state.type === 'pausing')
76
86
  .map(([id]) => parseInt(id));
77
- // Paused clips need to be played again
78
87
  pausedSoundIds.forEach((soundId) => {
88
+ log('Resuming paused clip', { soundId });
79
89
  clipPlayer.player.play(soundId);
80
90
  });
81
- // If no currently paused/pausing clips, play a new clip
82
- const newSoundIds = pausedSoundIds.length > 0 ? [] : [clipPlayer.player.play()];
83
- [...pausedSoundIds, ...newSoundIds].forEach((soundId) => {
91
+ // Clips with pause requested no longer need to pause, they can continue playing now
92
+ const pauseRequestedSoundIds = Object.entries(clipPlayer.activeClips)
93
+ .filter(([, { state }]) => state.type === 'pause_requested')
94
+ .map(([id]) => parseInt(id));
95
+ // If no currently paused/pausing/pause_requested clips, play a new clip
96
+ const newSoundIds = pausedSoundIds.length > 0 || pauseRequestedSoundIds.length > 0 ? [] : [clipPlayer.player.play()];
97
+ // paused and pause_requested clips treated the same, they should have their properties
98
+ // updated with the latest play action's properties
99
+ [...pausedSoundIds, ...pauseRequestedSoundIds, ...newSoundIds].forEach((soundId) => {
84
100
  clipPlayer.player.loop(loop, soundId);
85
101
  // Cleanup any old callbacks first
86
102
  clipPlayer.player.off('play', undefined, soundId);
@@ -88,26 +104,39 @@ class AudioPlayer {
88
104
  clipPlayer.player.off('fade', undefined, soundId);
89
105
  clipPlayer.player.off('end', undefined, soundId);
90
106
  clipPlayer.player.off('stop', undefined, soundId);
91
- clipPlayer.player.once('stop', () => {
92
- this.handleStoppedClip(path, soundId);
93
- this.notifyClipStateListeners(playId, path, 'stopped');
94
- }, soundId);
107
+ clipPlayer.player.once('stop', () => this.handleStoppedClip(path, playId, soundId), soundId);
95
108
  // Looping clips fire the 'end' callback on every loop
96
109
  clipPlayer.player.on('end', () => {
97
110
  var _a;
98
111
  if (!((_a = clipPlayer.activeClips[soundId]) === null || _a === void 0 ? void 0 : _a.loop)) {
99
- this.handleStoppedClip(path, soundId);
100
- this.notifyClipStateListeners(playId, path, 'stopped');
112
+ this.handleStoppedClip(path, playId, soundId);
101
113
  }
102
114
  }, soundId);
103
115
  const activeClip = {
104
116
  playId,
105
- state: AudioState_1.ActiveAudioClipState.Playing,
117
+ state: { type: 'play_requested' },
106
118
  loop,
107
119
  volume,
108
120
  };
109
- // Start fade when clip starts
121
+ // Once clip starts, check if it should actually be paused or stopped
122
+ // If not, then update state to 'playing'
123
+ clipPlayer.player.once('play', () => {
124
+ const clipState = clipPlayer.activeClips[soundId].state;
125
+ if (clipState.type === 'pause_requested') {
126
+ log('Clip started playing but should be paused', { path, soundId });
127
+ this.pauseAudioClip(path, { fade: clipState.fade }, soundId, true);
128
+ }
129
+ else if (clipState.type === 'stop_requested') {
130
+ log('Clip started playing but should be stopped', { path, soundId });
131
+ this.stopAudioClip(path, { fade: clipState.fade }, soundId, true);
132
+ }
133
+ else {
134
+ this.updateActiveAudioClip(path, soundId, (clip) => ({ ...clip, state: { type: 'playing' } }));
135
+ }
136
+ }, soundId);
137
+ // To fade or to no fade?
110
138
  if (isFadeValid(fade)) {
139
+ // Start fade when clip starts
111
140
  clipPlayer.player.volume(0, soundId);
112
141
  clipPlayer.player.once('play', () => {
113
142
  clipPlayer.player.fade(0, volume, fade * 1000, soundId);
@@ -116,106 +145,135 @@ class AudioPlayer {
116
145
  else {
117
146
  clipPlayer.player.volume(volume, soundId);
118
147
  }
119
- // Track new active clip
148
+ // Track new/updated active clip
120
149
  clipPlayer.activeClips = { ...clipPlayer.activeClips, [soundId]: activeClip };
121
150
  });
122
151
  return clipPlayer;
123
152
  });
124
153
  this.notifyClipStateListeners(playId, path, 'playing');
125
154
  }
126
- pauseAudioClip(path, fade) {
155
+ pauseAudioClip(path, { fade }, onlySoundId, allowIfPauseRequested) {
156
+ var _a, _b;
157
+ // No active clips to pause
158
+ if (Object.keys((_b = (_a = this.audioClipPlayers[path]) === null || _a === void 0 ? void 0 : _a.activeClips) !== null && _b !== void 0 ? _b : {}).length === 0) {
159
+ return;
160
+ }
127
161
  this.updateAudioClipPlayer(path, (clipPlayer) => {
128
- return {
129
- ...clipPlayer,
130
- activeClips: Object.fromEntries(Object.entries(clipPlayer.activeClips)
131
- .filter(([, clip]) => clip.state === AudioState_1.ActiveAudioClipState.Playing)
132
- .map(([soundIdStr, clip]) => {
133
- const soundId = parseInt(soundIdStr);
134
- if (isFadeValid(fade)) {
135
- // Fade then pause
136
- clipPlayer.player.once('fade', (soundId) => {
162
+ clipPlayer.activeClips = Object.fromEntries(Object.entries(clipPlayer.activeClips).map(([soundIdStr, clip]) => {
163
+ const soundId = parseInt(soundIdStr);
164
+ // If onlySoundId specified, only update that clip
165
+ if (onlySoundId === undefined || onlySoundId === soundId) {
166
+ if ((allowIfPauseRequested && clip.state.type === 'pause_requested') || clip.state.type === 'playing' || clip.state.type === 'pausing') {
167
+ if (isFadeValid(fade)) {
168
+ // Fade then pause
169
+ clipPlayer.player.once('fade', (soundId) => {
170
+ clipPlayer.player.pause(soundId);
171
+ this.updateActiveAudioClip(path, soundId, (clip) => ({ ...clip, state: { type: 'paused' } }));
172
+ this.notifyClipStateListeners(clip.playId, path, 'paused');
173
+ }, soundId);
174
+ clipPlayer.player.fade(clipPlayer.player.volume(soundId), 0, fade * 1000, soundId);
175
+ clip.state = { type: 'pausing' };
176
+ }
177
+ else {
178
+ // Pause now
137
179
  clipPlayer.player.pause(soundId);
138
- this.updateActiveAudioClip(path, soundId, (clip) => ({ ...clip, state: AudioState_1.ActiveAudioClipState.Paused }));
139
- }, soundId);
140
- clipPlayer.player.fade(clipPlayer.player.volume(soundId), 0, fade * 1000, soundId);
141
- return [soundIdStr, { ...clip, state: AudioState_1.ActiveAudioClipState.Pausing }];
180
+ clip.state = { type: 'paused' };
181
+ this.notifyClipStateListeners(clip.playId, path, 'paused');
182
+ }
142
183
  }
143
- else {
144
- // Pause now
145
- clipPlayer.player.pause(soundId);
146
- return [soundId, { ...clip, state: AudioState_1.ActiveAudioClipState.Paused }];
184
+ // Clip hasn't started playing yet, or has already had pause_requested (but fade may have changed so update here)
185
+ else if (clip.state.type === 'play_requested' || clip.state.type === 'pause_requested') {
186
+ clip.state = { type: 'pause_requested', fade };
147
187
  }
148
- })),
149
- };
188
+ }
189
+ return [soundIdStr, clip];
190
+ }));
191
+ return clipPlayer;
150
192
  });
151
193
  }
152
- stopAudioClip(path, { fade }) {
153
- const clipPlayer = this.audioClipPlayers[path];
154
- if (!clipPlayer) {
194
+ stopAudioClip(path, { fade }, onlySoundId, allowIfStopRequested) {
195
+ var _a, _b;
196
+ // No active clips to stop
197
+ if (Object.keys((_b = (_a = this.audioClipPlayers[path]) === null || _a === void 0 ? void 0 : _a.activeClips) !== null && _b !== void 0 ? _b : {}).length === 0) {
155
198
  return;
156
199
  }
157
- const { player, activeClips } = clipPlayer;
158
- // Cleanup any old fade callbacks first
159
- player.off('fade');
160
- if (isFadeValid(fade)) {
161
- // Start fade out for each non-paused active clip
162
- Object.entries(activeClips).forEach(([soundIdStr, clip]) => {
200
+ this.updateAudioClipPlayer(path, (clipPlayer) => {
201
+ clipPlayer.activeClips = Object.fromEntries(Object.entries(clipPlayer.activeClips).map(([soundIdStr, clip]) => {
163
202
  const soundId = parseInt(soundIdStr);
164
- if (clip.state === AudioState_1.ActiveAudioClipState.Playing || clip.state === AudioState_1.ActiveAudioClipState.Pausing) {
165
- player.fade(player.volume(soundId), 0, fade * 1000, soundId);
166
- // Set callback after starting new fade, otherwise it will fire straight away as the previous fade is cancelled
167
- player.once('fade', (soundId) => player.stop(soundId), soundId);
168
- this.updateActiveAudioClip(path, soundId, (clip) => ({ ...clip, state: AudioState_1.ActiveAudioClipState.Stopping }));
169
- }
170
- else {
171
- player.stop(soundId);
203
+ // If onlySoundId specified, only update that clip
204
+ if (onlySoundId === undefined || onlySoundId === soundId) {
205
+ if ((allowIfStopRequested && clip.state.type === 'stop_requested') ||
206
+ clip.state.type === 'playing' ||
207
+ clip.state.type === 'pausing' ||
208
+ clip.state.type === 'paused' ||
209
+ clip.state.type === 'stopping') {
210
+ if (isFadeValid(fade) && clip.state.type !== 'paused') {
211
+ // Cleanup any old fade callbacks first
212
+ // TODO: Remove cast once https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59411 is merged
213
+ clipPlayer.player.off('fade', soundId);
214
+ clipPlayer.player.fade(clipPlayer.player.volume(soundId), 0, fade * 1000, soundId);
215
+ // Set callback after starting new fade, otherwise it will fire straight away as the previous fade is cancelled
216
+ clipPlayer.player.once('fade', (soundId) => clipPlayer.player.stop(soundId), soundId);
217
+ clip.state = { type: 'stopping' };
218
+ }
219
+ else {
220
+ clipPlayer.player.stop(soundId);
221
+ }
222
+ }
223
+ // Clip hasn't started playing yet, or has already had stop_requested (but fade may have changed so update here)
224
+ // or has pause_requested, but stop takes precedence
225
+ else if (clip.state.type === 'play_requested' || clip.state.type === 'pause_requested' || clip.state.type === 'stop_requested') {
226
+ log("Trying to stop clip which hasn't started playing yet", { path, soundId });
227
+ clip.state = { type: 'stop_requested', fade };
228
+ }
172
229
  }
173
- });
174
- }
175
- else {
176
- Object.keys(activeClips).forEach((soundIdStr) => {
177
- const soundId = parseInt(soundIdStr);
178
- player.stop(soundId);
179
- });
180
- }
230
+ return [soundIdStr, clip];
231
+ }));
232
+ return clipPlayer;
233
+ });
181
234
  }
182
235
  stopAllAudioClips(options) {
236
+ log('Stopping all clips');
183
237
  Object.keys(this.audioClipPlayers).forEach((path) => {
184
238
  this.stopAudioClip(path, options);
185
239
  });
186
240
  }
187
241
  setAudioClipVolume(path, { volume, fade }) {
242
+ var _a, _b;
188
243
  if (!(volume >= 0 && volume <= 1)) {
189
244
  console.warn('Invalid volume', volume);
190
245
  return;
191
246
  }
247
+ // No active clips to set volume for
248
+ if (Object.keys((_b = (_a = this.audioClipPlayers[path]) === null || _a === void 0 ? void 0 : _a.activeClips) !== null && _b !== void 0 ? _b : {}).length === 0) {
249
+ return;
250
+ }
192
251
  this.updateAudioClipPlayer(path, (clipPlayer) => {
193
- return {
194
- ...clipPlayer,
195
- activeClips: Object.fromEntries(Object.entries(clipPlayer.activeClips).map(([soundIdStr, clip]) => {
196
- // Ignored for pausing/stopping instances
197
- if (clip.state === AudioState_1.ActiveAudioClipState.Playing || clip.state === AudioState_1.ActiveAudioClipState.Paused) {
198
- const soundId = parseInt(soundIdStr);
199
- if (isFadeValid(fade)) {
200
- clipPlayer.player.fade(clipPlayer.player.volume(soundId), volume, fade * 1000);
201
- }
202
- else {
203
- clipPlayer.player.volume(volume);
204
- }
205
- return [soundIdStr, { ...clip, volume }];
252
+ clipPlayer.activeClips = Object.fromEntries(Object.entries(clipPlayer.activeClips).map(([soundIdStr, clip]) => {
253
+ // Ignored for pausing/stopping instances
254
+ if (clip.state.type !== 'pausing' && clip.state.type !== 'stopping') {
255
+ const soundId = parseInt(soundIdStr);
256
+ if (isFadeValid(fade)) {
257
+ clipPlayer.player.fade(clipPlayer.player.volume(soundId), volume, fade * 1000);
206
258
  }
207
259
  else {
208
- return [soundIdStr, clip];
260
+ clipPlayer.player.volume(volume);
209
261
  }
210
- })),
211
- };
262
+ return [soundIdStr, { ...clip, volume }];
263
+ }
264
+ else {
265
+ return [soundIdStr, clip];
266
+ }
267
+ }));
268
+ return clipPlayer;
212
269
  });
213
270
  }
214
- handleStoppedClip(path, soundId) {
271
+ handleStoppedClip(path, playId, soundId) {
215
272
  this.updateAudioClipPlayer(path, (clipPlayer) => {
216
273
  delete clipPlayer.activeClips[soundId];
217
274
  return clipPlayer;
218
275
  });
276
+ this.notifyClipStateListeners(playId, path, 'stopped');
219
277
  }
220
278
  updateActiveAudioClip(path, soundId, update) {
221
279
  this.updateAudioClipPlayer(path, (clipPlayer) => soundId in clipPlayer.activeClips
@@ -270,7 +328,7 @@ class AudioPlayer {
270
328
  };
271
329
  return clips;
272
330
  }, {});
273
- const isPlaying = Object.values(this.audioClipPlayers).some(({ activeClips }) => Object.values(activeClips).some((clip) => clip.state === AudioState_1.ActiveAudioClipState.Playing));
331
+ const isPlaying = Object.values(this.audioClipPlayers).some(({ activeClips }) => Object.values(activeClips).some((clip) => clip.state.type === 'playing' || clip.state.type === 'pausing' || clip.state.type === 'stopping'));
274
332
  const audioState = {
275
333
  globalVolume: this.globalVolume,
276
334
  isPlaying,
@@ -298,7 +356,6 @@ class AudioPlayer {
298
356
  loop: false,
299
357
  volume: 1,
300
358
  html5: !config.preload,
301
- preload: config.preload,
302
359
  });
303
360
  return player;
304
361
  }
@@ -319,6 +376,11 @@ class AudioPlayer {
319
376
  }
320
377
  }
321
378
  exports.default = AudioPlayer;
379
+ function log(...data) {
380
+ if (DEBUG) {
381
+ console.log(...data);
382
+ }
383
+ }
322
384
  function isFadeValid(fade) {
323
385
  return typeof fade === 'number' && !isNaN(fade) && fade > 0;
324
386
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../src/AudioPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../src/AudioPlayer.ts"],"names":[],"mappings":"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"}