-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathtestExtension.js
127 lines (117 loc) · 3.96 KB
/
testExtension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// https://cdn.jsdelivr.net/gh/griffpatch/griffpatch.github.io/testExtension.js
const ArgumentType = require('../../extension-support/argument-type');
const BlockType = require('../../extension-support/block-type');
const Clone = require('../../util/clone');
const Cast = require('../../util/cast');
const formatMessage = require('format-message');
const MathUtil = require('../../util/math-util');
const Timer = require('../../util/timer');
/**
* The instrument and drum sounds, loaded as static assets.
* @type {object}
*/
/*let assetData = {};
try {
assetData = require('./manifest');
} catch (e) {
// Non-webpack environment, don't worry about assets.
}*/
/**
* Class for the music-related blocks in Scratch 3.0
* @param {Runtime} runtime - the runtime instantiating this block package.
* @constructor
*/
class Scratch3TestExtension {
constructor (runtime) {
/**
* The runtime instantiating this block package.
* @type {Runtime}
*/
this.runtime = runtime;
debugger;
// this._onTargetCreated = this._onTargetCreated.bind(this);
// this.runtime.on('targetWasCreated', this._onTargetCreated);
/*
this._playNoteForPicker = this._playNoteForPicker.bind(this);
this.runtime.on('PLAY_NOTE', this._playNoteForPicker);
*/
}
/**
* The key to load & store a target's music-related state.
* @type {string}
*/
static get STATE_KEY () {
return 'Scratch.Griffpatch';
}
/**
* @returns {object} metadata for this extension and its blocks.
*/
getInfo () {
return {
id: 'griffpatch',
name: formatMessage({
id: 'griffpatch.categoryName',
default: 'Griffpatch',
description: 'Label for the Griffpatch extension category'
}),
menuIconURI: menuIconURI,
blockIconURI: blockIconURI,
blocks: [
{
opcode: 'doTest',
blockType: BlockType.COMMAND,
text: formatMessage({
id: 'griffpatch.test',
default: 'test [x], [y]',
description: 'test this block'
}),
arguments: {
x: {
type: ArgumentType.NUMBER,
defaultValue: 10
},
y: {
type: ArgumentType.NUMBER,
defaultValue: 10
}
}
},
{
opcode: 'getTest',
text: formatMessage({
id: 'griffpatch.getTest',
default: 'test',
description: 'get the test value'
}),
blockType: BlockType.REPORTER
}
]
};
}
/**
* Play a drum sound for some number of beats.
* @param {object} args - the block arguments.
* @param {object} util - utility object provided by the runtime.
* @property {int} DRUM - the number of the drum to play.
* @property {number} BEATS - the duration in beats of the drum sound.
*/
doTest (x, y) {
// this._playDrumForBeats(args.DRUM, args.BEATS, util);
// if (util.runtime.audioEngine === null) return;
// if (util.target.sprite.soundBank === null) return;
debugger;
}
/**
* Get the current tempo.
* @return {number} - the current tempo, in beats per minute.
*/
getTest () {
const stage = this.runtime.getTargetForStage();
debugger;
/* if (stage) {
return stage.tempo;
}*/
return 9000;
}
}
module.exports = Scratch3TestExtension;