mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-07-25 13:39:03 -04:00
Merge pull request #1750 from rschamp/feature/sb3-json-assets
Add method for collecting all targets' assets
This commit is contained in:
commit
f2550d582c
2 changed files with 35 additions and 0 deletions
|
@ -336,6 +336,17 @@ class VirtualMachine extends EventEmitter {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @type {Array<object>} Array of all costumes and sounds currently in the runtime
|
||||||
|
*/
|
||||||
|
get assets () {
|
||||||
|
return this.runtime.targets.reduce((acc, target) => (
|
||||||
|
acc
|
||||||
|
.concat(target.sprite.sounds.map(sound => sound.asset))
|
||||||
|
.concat(target.sprite.costumes.map(costume => costume.asset))
|
||||||
|
), []);
|
||||||
|
}
|
||||||
|
|
||||||
_addFileDescsToZip (fileDescs, zip) {
|
_addFileDescsToZip (fileDescs, zip) {
|
||||||
for (let i = 0; i < fileDescs.length; i++) {
|
for (let i = 0; i < fileDescs.length; i++) {
|
||||||
const currFileDesc = fileDescs[i];
|
const currFileDesc = fileDescs[i];
|
||||||
|
|
24
test/unit/vm_collectAssets.js
Normal file
24
test/unit/vm_collectAssets.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
const test = require('tap').test;
|
||||||
|
|
||||||
|
const RenderedTarget = require('../../src/sprites/rendered-target');
|
||||||
|
const Sprite = require('../../src/sprites/sprite');
|
||||||
|
const VirtualMachine = require('../../src/virtual-machine');
|
||||||
|
|
||||||
|
test('collectAssets', t => {
|
||||||
|
const vm = new VirtualMachine();
|
||||||
|
const sprite = new Sprite(null, vm.runtime);
|
||||||
|
const target = new RenderedTarget(sprite, vm.runtime);
|
||||||
|
vm.runtime.targets = [target];
|
||||||
|
const [
|
||||||
|
soundAsset1,
|
||||||
|
soundAsset2,
|
||||||
|
costumeAsset1
|
||||||
|
] = [{assetId: 1}, {assetId: 2}, {assetId: 3}];
|
||||||
|
sprite.sounds = [{id: 1, asset: soundAsset1}, {id: 2, asset: soundAsset2}];
|
||||||
|
sprite.costumes = [{id: 1, asset: costumeAsset1}];
|
||||||
|
const assets = vm.assets;
|
||||||
|
t.type(assets.length, 'number');
|
||||||
|
t.equal(assets.length, 3);
|
||||||
|
t.deepEqual(assets, [soundAsset1, soundAsset2, costumeAsset1]);
|
||||||
|
t.end();
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue