@urso/core 0.8.2 → 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.
@@ -149,10 +149,10 @@ object-assign
149
149
  */
150
150
 
151
151
  /*!
152
- * GSAP 3.12.5
152
+ * GSAP 3.12.7
153
153
  * https://gsap.com
154
154
  *
155
- * @license Copyright 2008-2024, GreenSock. All rights reserved.
155
+ * @license Copyright 2008-2025, GreenSock. All rights reserved.
156
156
  * Subject to the terms at https://gsap.com/standard-license or for
157
157
  * Club GSAP members, the agreement issued with that membership.
158
158
  * @author: Jack Doyle, jack@greensock.com
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urso/core",
3
- "version": "0.8.2",
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
+ };
@@ -1,9 +1,11 @@
1
1
  const ModulesObjectsBaseModel = require('./../baseModel');
2
2
 
3
3
  class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
4
+
4
5
  constructor(params) {
5
6
  super(params);
6
7
  this._isDisabled = false;
8
+ this._isDown = false;
7
9
 
8
10
  this.type = Urso.types.objects.HITAREA;
9
11
 
@@ -26,6 +28,16 @@ class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
26
28
  this.onOutCallback = Urso.helper.recursiveGet('onOutCallback', params, false);
27
29
  this.onTouchMoveCallback = Urso.helper.recursiveGet('onTouchMoveCallback', params, false);
28
30
  this.handlePointerupoutside = Urso.helper.recursiveGet('handlePointerupoutside', params, true);
31
+ /**
32
+ * customInteractionArea object ex:
33
+ * Circle: { "type": "circle", "params": [0, 0, 100] }
34
+ * Rectangle: { "type": "rectangle", "params": [0, 0, 100, 100] }
35
+ * Polygon: {
36
+ * "type": "polygon",
37
+ * "params": [ 0, 0, 100, 0, 100, 100, 50, 150, 0, 100 ];
38
+ * }
39
+ * */
40
+ this.customInteractionArea = Urso.helper.recursiveGet('customInteractionArea', params, null);
29
41
  }
30
42
 
31
43
  enable() {
@@ -58,14 +70,14 @@ class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
58
70
  this._baseObject
59
71
  .on('pointerdown', this._onPressDown.bind(this))
60
72
  .on('pointerup', this._onPressUp.bind(this))
73
+ .on('pointerupoutside', this._onPressUpOutside.bind(this))
61
74
  .on('pointerover', this._onOver.bind(this))
62
75
  .on('pointerout', this._onOut.bind(this))
63
76
  .on('touchmove', this._onTouchmove.bind(this));
64
77
 
65
- if (this.handlePointerupoutside) {
66
- this._baseObject.on('pointerupoutside', this._onPressUp.bind(this))
67
- }
68
- };
78
+ if (this.customInteractionArea)
79
+ this._baseObject.hitArea = this._getHitAreaObject(this.customInteractionArea);
80
+ }
69
81
 
70
82
  _onTouchmove(event) {
71
83
  const position = this._getEventLocalPosition(event);
@@ -81,6 +93,11 @@ class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
81
93
  if (this.disableRightClick && event.data.button !== 0)
82
94
  return;
83
95
 
96
+ if (this._isDown)
97
+ return false;
98
+
99
+ this._isDown = true;
100
+
84
101
  if (this.keyDownAction) {
85
102
  const position = this._getEventLocalPosition(event);
86
103
  this.keyDownAction(position);
@@ -94,12 +111,29 @@ class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
94
111
  if (this.disableRightClick && event.data.button !== 0)
95
112
  return;
96
113
 
114
+ if (!this._isDown)
115
+ return false;
116
+
117
+ this._isDown = false;
118
+
97
119
  if (this.action) {
98
120
  const position = this._getEventLocalPosition(event);
99
121
  this.action(position);
100
122
  }
101
123
  }
102
124
 
125
+ _onPressUpOutside() {
126
+ if (this.handlePointerupoutside) {
127
+ this._onPressUp();
128
+ return;
129
+ }
130
+
131
+ if (this._isDisabled)
132
+ return false;
133
+
134
+ this._isDown = false;
135
+ }
136
+
103
137
  _onOver() {
104
138
  if (this._isDisabled)
105
139
  return false;
@@ -125,6 +159,24 @@ class ModulesObjectsModelsHitArea extends ModulesObjectsBaseModel {
125
159
 
126
160
  return { x, y };
127
161
  }
162
+
163
+ _getHitAreaObject({ type, params }) {
164
+ if (!type) {
165
+ return null;
166
+ }
167
+
168
+ const objects = {
169
+ 'rectangle': PIXI.Rectangle,
170
+ 'circle': PIXI.Circle,
171
+ 'polygon': PIXI.Polygon
172
+ }
173
+
174
+ if (!objects[type]) {
175
+ return null;
176
+ }
177
+
178
+ return new objects[type](...params);
179
+ }
128
180
  }
129
181
 
130
182
  module.exports = ModulesObjectsModelsHitArea;
@@ -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);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_urso_core=self.webpackChunk_urso_core||[]).push([[162],{88058:(d,a,r)=>{var O=r(8507),X=r(36697),e=r(46719);O.XO.add(X.U),O.XO.add(e.y)},42162:(d,a,r)=>{r.r(a),r(88058),r(26197),r(17801),r(25361),r(28849),r(28299),r(15311),r(4241),r(11981),r(51437),r(95902)},95902:(d,a,r)=>{var O=r(8507),X=r(69430),e=r(90825);O.XO.add(e.u),O.XO.add(X.L)},25361:(d,a,r)=>{var O=r(8507),X=r(40378),e=r(49260);O.XO.add(e.S),O.XO.add(X.GH)},28849:(d,a,r)=>{var O=r(8507),X=r(41892);O.XO.add(X.G)},51437:(d,a,r)=>{var O=r(8507),X=r(56880);O.XO.add(X.e)},11981:(d,a,r)=>{var O=r(8507),X=r(75773);O.XO.add(X.x)},15311:(d,a,r)=>{var O=r(8507),X=r(70661);O.XO.add(X.n)},4241:(d,a,r)=>{var O=r(8507),X=r(76829),e=r(47602);O.XO.add(e.Q),O.XO.add(X.n)},28299:(d,a,r)=>{var O=r(8507),X=r(45369),e=r(87278);O.XO.add(e.p),O.XO.add(X.e)}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_urso_core=self.webpackChunk_urso_core||[]).push([[24],{88058:(d,a,r)=>{var O=r(8507),X=r(36697),v=r(46719);O.XO.add(X.U),O.XO.add(v.y)},22024:(d,a,r)=>{r.r(a);var O=r(8507),X=r(44980),v=r(83946),e=r(74302);O.XO.add(v.a),X.mc.mixin(e.K),r(88058);var c=r(60809),s=r(90317);O.XO.add(c.C),X.mc.mixin(s.e),r(26197),r(17801),r(25361),r(28849),r(28299),r(15311),r(4241),r(11981),r(51437),r(95902)},95902:(d,a,r)=>{var O=r(8507),X=r(69430),v=r(90825);O.XO.add(v.u),O.XO.add(X.L)},25361:(d,a,r)=>{var O=r(8507),X=r(40378),v=r(49260);O.XO.add(v.S),O.XO.add(X.GH)},28849:(d,a,r)=>{var O=r(8507),X=r(41892);O.XO.add(X.G)},51437:(d,a,r)=>{var O=r(8507),X=r(56880);O.XO.add(X.e)},11981:(d,a,r)=>{var O=r(8507),X=r(75773);O.XO.add(X.x)},15311:(d,a,r)=>{var O=r(8507),X=r(70661);O.XO.add(X.n)},4241:(d,a,r)=>{var O=r(8507),X=r(76829),v=r(47602);O.XO.add(v.Q),O.XO.add(X.n)},28299:(d,a,r)=>{var O=r(8507),X=r(45369),v=r(87278);O.XO.add(v.p),O.XO.add(X.e)}}]);