Add sprites to drop-down menus (#81)

This commit is contained in:
TheBrokenRail authored and Ray Schamp committed 2017-02-13 19:02:25 -05:00
1 parent f9df8c7cfa
commit ff0ed97e27
1 file changed
+78 -5
+78 -5
View File
@@ -2,14 +2,14 @@ const ScratchBlocks = require('scratch-blocks');
module.exports = function (vm) {
const jsonForMenuBlock = function (name, menuOptionsFn, colors) {
const jsonForMenuBlock = function (name, menuOptionsFn, colors, start) {
return {
message0: '%1',
args0: [
{
type: 'field_dropdown',
name: name,
options: menuOptionsFn
options: start.concat(menuOptionsFn())
}
],
inputsInline: true,
@@ -32,23 +32,96 @@ module.exports = function (vm) {
const backdropsMenu = function () {
return vm.runtime.targets[0].sprite.costumes.map(costume => [costume.name, costume.name]);
};
const spriteMenu = function () {
var sprites = [];
for (var targetId in vm.runtime.targets) {
if (!vm.runtime.targets.hasOwnProperty(targetId)) continue;
if (vm.runtime.targets[targetId].isOriginal) {
if (!vm.runtime.targets[targetId].isStage) {
if (vm.runtime.targets[targetId].sprite.id === vm.editingTarget.sprite.id) {
continue;
}
sprites.push([vm.runtime.targets[targetId].sprite.name, vm.runtime.targets[targetId].sprite.name]);
}
}
}
return sprites;
};
const soundColors = ScratchBlocks.Colours.sounds;
const looksColors = ScratchBlocks.Colours.looks;
const motionColors = ScratchBlocks.Colours.motion;
const sensingColors = ScratchBlocks.Colours.sensing;
const controlColors = ScratchBlocks.Colours.control;
ScratchBlocks.Blocks.sound_sounds_menu.init = function () {
const json = jsonForMenuBlock('SOUND_MENU', soundsMenu, soundColors);
const json = jsonForMenuBlock('SOUND_MENU', soundsMenu, soundColors, []);
this.jsonInit(json);
};
ScratchBlocks.Blocks.looks_costume.init = function () {
const json = jsonForMenuBlock('COSTUME', costumesMenu, looksColors);
const json = jsonForMenuBlock('COSTUME', costumesMenu, looksColors, []);
this.jsonInit(json);
};
ScratchBlocks.Blocks.looks_backdrops.init = function () {
const json = jsonForMenuBlock('BACKDROP', backdropsMenu, looksColors);
const json = jsonForMenuBlock('BACKDROP', backdropsMenu, looksColors, []);
this.jsonInit(json);
};
ScratchBlocks.Blocks.motion_pointtowards_menu.init = function () {
const json = jsonForMenuBlock('TOWARDS', spriteMenu, motionColors, [
['mouse-pointer', '_mouse_']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.motion_goto_menu.init = function () {
const json = jsonForMenuBlock('TO', spriteMenu, motionColors, [
['mouse-pointer', '_mouse_'],
['random position', '_random_']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.sensing_of_object_menu.init = function () {
const json = jsonForMenuBlock('OBJECT', spriteMenu, sensingColors, [
['Stage', '_stage_']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.sensing_videoonmenutwo.init = function () {
const json = jsonForMenuBlock('VIDEOONMENU2', spriteMenu, sensingColors, [
['stage', 'STAGE']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.sensing_distancetomenu.init = function () {
const json = jsonForMenuBlock('DISTANCETOMENU', spriteMenu, sensingColors, [
['mouse-pointer', '_mouse_']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.sensing_touchingobjectmenu.init = function () {
const json = jsonForMenuBlock('TOUCHINGOBJECTMENU', spriteMenu, sensingColors, [
['mouse-pointer', '_mouse_'],
['edge', '_edge_']
]);
this.jsonInit(json);
};
ScratchBlocks.Blocks.control_create_clone_of_menu.init = function () {
const json = jsonForMenuBlock('CLONE_OPTION', spriteMenu, controlColors, [
['myself', '_myself_']
]);
this.jsonInit(json);
};