@urso/core 0.8.3 → 0.8.4-dev

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urso/core",
3
- "version": "0.8.3",
3
+ "version": "0.8.4-dev",
4
4
  "description": "HTML5 game engine",
5
5
  "main": "build/js/index.js",
6
6
  "author": "Megbrimef",
@@ -17,3 +17,9 @@ window.gsap = gsap;
17
17
 
18
18
  import Howler from 'howler';
19
19
  window.Howler = Howler;
20
+
21
+ window.UrsoUtils = {
22
+ Howler: Howler,
23
+ gsap: gsap,
24
+ PIXI: PIXI
25
+ };
@@ -3,7 +3,6 @@ class SoundManagerController {
3
3
  this._systemVolume = 1;
4
4
  this._globalVolume = 0;
5
5
 
6
- this._howler = null;
7
6
  this._codecsToCheck = ['ogg', 'm4a', 'mp3', 'wav'];
8
7
  this._selectedCodec = null;
9
8
  this._sounds = {};
@@ -16,7 +15,7 @@ class SoundManagerController {
16
15
 
17
16
  _setCodec() {
18
17
  for (const codec of this._codecsToCheck) {
19
- if (Howler.Howler.codecs(codec)) {
18
+ if (UrsoUtils.Howler.Howler.codecs(codec)) {
20
19
  this._selectedCodec = codec;
21
20
  return;
22
21
  }
@@ -36,7 +35,8 @@ class SoundManagerController {
36
35
  const soundSptite = this.getInstance('SoundSprite', {
37
36
  sprite: json.sprite,
38
37
  name: soundKey,
39
- audiosprite
38
+ audiosprite,
39
+ codec: this._selectedCodec
40
40
  });
41
41
 
42
42
  this._sounds[soundKey] = soundSptite;
@@ -1,12 +1,13 @@
1
1
  const DUMMY_SOUND_DELAY = 500; // ms
2
2
  class SoundSprite {
3
- constructor({ name, sprite, audiosprite }) {
3
+ constructor({ name, sprite, audiosprite, codec }) {
4
4
  this._player = null;
5
5
  this._totalVolume = 0;
6
6
  this._makePlayer(sprite, audiosprite);
7
7
 
8
8
  this._name = name;
9
9
  this._sprite = sprite;
10
+ this._codec = codec;
10
11
 
11
12
  this._soundsState = this._initSoundsState();
12
13
 
@@ -37,7 +38,7 @@ class SoundSprite {
37
38
  return soundsStateObj;
38
39
  }
39
40
 
40
- _makePlayer(sprite, audiosprite) {
41
+ _makePlayer_Bak(sprite, audiosprite) {
41
42
  var reader = new FileReader();
42
43
  reader.readAsDataURL(audiosprite);
43
44
  reader.onloadend = () => {
@@ -50,12 +51,39 @@ class SoundSprite {
50
51
  }
51
52
  };
52
53
 
53
- _subscribePlayerEvents() {
54
- this._player.on('unlock', () => setTimeout(() => {
55
- this._isAudioUnlocked = true;
54
+ _makePlayer(sprite, audiosprite) {
55
+ if (!this._codec) {
56
+ return;
57
+ }
58
+
59
+ const reader = new FileReader();
60
+ const blob = new Blob([audiosprite], { type: `audio/${this._codec}` });
61
+
62
+ reader.onloadend = () => {
63
+ var { result: src } = reader;
64
+ this._player = new Howl({ src, sprite });
65
+ this._subscribePlayerEvents();
66
+
56
67
  this._onUnlock();
57
- this.emit(Urso.events.MODULES_SOUND_MANAGER_CONTEXT_UNLOCKED);
58
- }, 1000));
68
+ }
69
+
70
+ reader.readAsDataURL(blob);
71
+ };
72
+
73
+ audioUnlockHandler() {
74
+ this._isAudioUnlocked = true;
75
+ this._onUnlock();
76
+ this.emit(Urso.events.MODULES_SOUND_MANAGER_CONTEXT_UNLOCKED);
77
+ }
78
+
79
+ _subscribePlayerEvents() {
80
+ if (UrsoUtils.Howler.Howler._audioUnlocked) {
81
+ this.audioUnlockHandler();
82
+ } else {
83
+ this._player.on('unlock', () => setTimeout(() => {
84
+ this.audioUnlockHandler();
85
+ }, 1000));
86
+ }
59
87
 
60
88
  this._player.on('end', id => {
61
89
  const soundState = this._getSoundStateById(id);