Merge pull request from rschamp/feature/sb3-json-assets

Add method for collecting all targets' assets
This commit is contained in:
Ray Schamp 2018-11-15 10:31:58 +00:00 committed by GitHub
commit f2550d582c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 0 deletions

View file

@ -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];

View 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();
});