All functions now call 'queueOp'.

Removed sound unlocking on load complete.
This commit is contained in:
Richard Davey 2024-08-25 22:35:39 +01:00
parent 53c491fb84
commit 378838a011
No known key found for this signature in database

View file

@ -310,7 +310,7 @@ var SceneManager = new Class({
{ {
entry = this._queue[i]; entry = this._queue[i];
this[entry.op](entry.keyA, entry.keyB); this[entry.op](entry.keyA, entry.keyB, entry.data);
} }
this._queue.length = 0; this._queue.length = 0;
@ -427,33 +427,31 @@ var SceneManager = new Class({
{ {
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'remove', keyA: key, keyB: null }); return this.queueOp('remove', key);
} }
else
var sceneToRemove = this.getScene(key);
if (!sceneToRemove || sceneToRemove.sys.isTransitioning())
{ {
var sceneToRemove = this.getScene(key); return this;
}
if (!sceneToRemove || sceneToRemove.sys.isTransitioning()) var index = this.scenes.indexOf(sceneToRemove);
var sceneKey = sceneToRemove.sys.settings.key;
if (index > -1)
{
delete this.keys[sceneKey];
this.scenes.splice(index, 1);
if (this._start.indexOf(sceneKey) > -1)
{ {
return this; index = this._start.indexOf(sceneKey);
this._start.splice(index, 1);
} }
var index = this.scenes.indexOf(sceneToRemove); sceneToRemove.sys.destroy();
var sceneKey = sceneToRemove.sys.settings.key;
if (index > -1)
{
delete this.keys[sceneKey];
this.scenes.splice(index, 1);
if (this._start.indexOf(sceneKey) > -1)
{
index = this._start.indexOf(sceneKey);
this._start.splice(index, 1);
}
sceneToRemove.sys.destroy();
}
} }
return this; return this;
@ -528,13 +526,6 @@ var SceneManager = new Class({
*/ */
loadComplete: function (loader) loadComplete: function (loader)
{ {
// TODO - Remove. This should *not* be handled here
// Try to unlock HTML5 sounds every time any loader completes
if (this.game.sound && this.game.sound.onBlurPausedSounds)
{
this.game.sound.unlock();
}
this.create(loader.scene); this.create(loader.scene);
}, },
@ -679,7 +670,7 @@ var SceneManager = new Class({
if (this.keys.hasOwnProperty(key)) if (this.keys.hasOwnProperty(key))
{ {
throw new Error('Cannot add a Scene with duplicate key: ' + key); throw new Error('Cannot add Scene with duplicate key: ' + key);
} }
return this.createSceneFromInstance(key, newScene); return this.createSceneFromInstance(key, newScene);
@ -838,7 +829,7 @@ var SceneManager = new Class({
if (this.keys.hasOwnProperty(key)) if (this.keys.hasOwnProperty(key))
{ {
throw new Error('Cannot add a Scene with duplicate key: ' + key); throw new Error('Cannot add Scene with duplicate key: ' + key);
} }
else else
{ {
@ -1214,7 +1205,7 @@ var SceneManager = new Class({
if (!scene) if (!scene)
{ {
console.warn('Scene not found for key: ' + key); console.warn('Scene key not found: ' + key);
return this; return this;
} }
@ -1337,7 +1328,7 @@ var SceneManager = new Class({
if (this.isSleeping(to)) if (this.isSleeping(to))
{ {
this.wake(to); this.wake(to, data);
} }
else else
{ {
@ -1405,19 +1396,18 @@ var SceneManager = new Class({
{ {
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'bringToTop', keyA: key, keyB: null }); return this.queueOp('bringToTop', key);
} }
else
var index = this.getIndex(key);
var scenes = this.scenes;
if (index !== -1 && index < scenes.length)
{ {
var index = this.getIndex(key); var scene = this.getScene(key);
if (index !== -1 && index < this.scenes.length) scenes.splice(index, 1);
{ scenes.push(scene);
var scene = this.getScene(key);
this.scenes.splice(index, 1);
this.scenes.push(scene);
}
} }
return this; return this;
@ -1442,19 +1432,17 @@ var SceneManager = new Class({
{ {
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'sendToBack', keyA: key, keyB: null }); return this.queueOp('sendToBack', key);
} }
else
var index = this.getIndex(key);
if (index !== -1 && index > 0)
{ {
var index = this.getIndex(key); var scene = this.getScene(key);
if (index !== -1 && index > 0) this.scenes.splice(index, 1);
{ this.scenes.unshift(scene);
var scene = this.getScene(key);
this.scenes.splice(index, 1);
this.scenes.unshift(scene);
}
} }
return this; return this;
@ -1477,21 +1465,19 @@ var SceneManager = new Class({
{ {
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'moveDown', keyA: key, keyB: null }); return this.queueOp('moveDown', key);
} }
else
var indexA = this.getIndex(key);
if (indexA > 0)
{ {
var indexA = this.getIndex(key); var indexB = indexA - 1;
var sceneA = this.getScene(key);
var sceneB = this.getAt(indexB);
if (indexA > 0) this.scenes[indexA] = sceneB;
{ this.scenes[indexB] = sceneA;
var indexB = indexA - 1;
var sceneA = this.getScene(key);
var sceneB = this.getAt(indexB);
this.scenes[indexA] = sceneB;
this.scenes[indexB] = sceneA;
}
} }
return this; return this;
@ -1514,21 +1500,19 @@ var SceneManager = new Class({
{ {
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'moveUp', keyA: key, keyB: null }); return this.queueOp('moveUp', key);
} }
else
var indexA = this.getIndex(key);
if (indexA < this.scenes.length - 1)
{ {
var indexA = this.getIndex(key); var indexB = indexA + 1;
var sceneA = this.getScene(key);
var sceneB = this.getAt(indexB);
if (indexA < this.scenes.length - 1) this.scenes[indexA] = sceneB;
{ this.scenes[indexB] = sceneA;
var indexB = indexA + 1;
var sceneA = this.getScene(key);
var sceneB = this.getAt(indexB);
this.scenes[indexA] = sceneB;
this.scenes[indexB] = sceneA;
}
} }
return this; return this;
@ -1560,23 +1544,21 @@ var SceneManager = new Class({
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'moveAbove', keyA: keyA, keyB: keyB }); return this.queueOp('moveAbove', keyA, keyB);
} }
else
var indexA = this.getIndex(keyA);
var indexB = this.getIndex(keyB);
if (indexA !== -1 && indexB !== -1 && indexB < indexA)
{ {
var indexA = this.getIndex(keyA); var tempScene = this.getAt(indexB);
var indexB = this.getIndex(keyB);
if (indexA !== -1 && indexB !== -1 && indexB < indexA) // Remove
{ this.scenes.splice(indexB, 1);
var tempScene = this.getAt(indexB);
// Remove // Add in new location
this.scenes.splice(indexB, 1); this.scenes.splice(indexA + (indexB > indexA), 0, tempScene);
// Add in new location
this.scenes.splice(indexA + (indexB > indexA), 0, tempScene);
}
} }
return this; return this;
@ -1608,29 +1590,27 @@ var SceneManager = new Class({
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'moveBelow', keyA: keyA, keyB: keyB }); return this.queueOp('moveBelow', keyA, keyB);
} }
else
var indexA = this.getIndex(keyA);
var indexB = this.getIndex(keyB);
if (indexA !== -1 && indexB !== -1 && indexB > indexA)
{ {
var indexA = this.getIndex(keyA); var tempScene = this.getAt(indexB);
var indexB = this.getIndex(keyB);
if (indexA !== -1 && indexB !== -1 && indexB > indexA) // Remove
this.scenes.splice(indexB, 1);
if (indexA === 0)
{ {
var tempScene = this.getAt(indexB); this.scenes.unshift(tempScene);
}
// Remove else
this.scenes.splice(indexB, 1); {
// Add in new location
if (indexA === 0) this.scenes.splice(indexA - (indexB < indexA), 0, tempScene);
{
this.scenes.unshift(tempScene);
}
else
{
// Add in new location
this.scenes.splice(indexA - (indexB < indexA), 0, tempScene);
}
} }
} }
@ -1647,12 +1627,13 @@ var SceneManager = new Class({
* @param {string} op - The operation to perform. * @param {string} op - The operation to perform.
* @param {(string|Phaser.Scene)} keyA - Scene A. * @param {(string|Phaser.Scene)} keyA - Scene A.
* @param {(any|string|Phaser.Scene)} [keyB] - Scene B, or a data object. * @param {(any|string|Phaser.Scene)} [keyB] - Scene B, or a data object.
* @param {any} [data] - Optional data object to pass.
* *
* @return {this} This Scene Manager instance. * @return {this} This Scene Manager instance.
*/ */
queueOp: function (op, keyA, keyB) queueOp: function (op, keyA, keyB, data)
{ {
this._queue.push({ op: op, keyA: keyA, keyB: keyB }); this._queue.push({ op: op, keyA: keyA, keyB: keyB, data: data });
return this; return this;
}, },
@ -1680,20 +1661,18 @@ var SceneManager = new Class({
if (this.isProcessing) if (this.isProcessing)
{ {
this._queue.push({ op: 'swapPosition', keyA: keyA, keyB: keyB }); return this.queueOp('swapPosition', keyA, keyB);
} }
else
var indexA = this.getIndex(keyA);
var indexB = this.getIndex(keyB);
if (indexA !== indexB && indexA !== -1 && indexB !== -1)
{ {
var indexA = this.getIndex(keyA); var tempScene = this.getAt(indexA);
var indexB = this.getIndex(keyB);
if (indexA !== indexB && indexA !== -1 && indexB !== -1) this.scenes[indexA] = this.scenes[indexB];
{ this.scenes[indexB] = tempScene;
var tempScene = this.getAt(indexA);
this.scenes[indexA] = this.scenes[indexB];
this.scenes[indexB] = tempScene;
}
} }
return this; return this;