mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-07-03 17:50:28 -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) {
|
||||
for (let i = 0; i < fileDescs.length; 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