-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvars.js
121 lines (114 loc) · 3.18 KB
/
vars.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
(function(Scratch) {
'use strict';
var vars = {};
vars['variables'] = {};
class variableservice {
getInfo () {
return {
id: 'variableservice',
name: 'Variables',
blocks: [
{
opcode: 'setVariableTo',
blockType: Scratch.BlockType.COMMAND,
text: 'set variable [INPUTA] to [INPUTB]',
arguments: {
INPUTA: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'my variable'
},
INPUTB: {
type: Scratch.ArgumentType.STRING,
defaultValue: '0'
}
}
},
{
opcode: 'changeVariableBy',
blockType: Scratch.BlockType.COMMAND,
text: 'change variable [INPUTA] by [INPUTB]',
arguments: {
INPUTA: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'my variable'
},
INPUTB: {
type: Scratch.ArgumentType.STRING,
defaultValue: '1'
}
}
},
{
opcode: 'getVariable',
blockType: Scratch.BlockType.REPORTER,
text: 'variable [INPUT]',
disableMonitor: true,
arguments: {
INPUT: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'my variable'
}
}
},
{
opcode: 'deleteVariable',
blockType: Scratch.BlockType.COMMAND,
text: 'delete variable [INPUT]',
arguments: {
INPUT: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'my variable'
}
}
},
{
opcode: 'deleteAllVariables',
blockType: Scratch.BlockType.COMMAND,
text: 'delete all variables',
},
{
opcode: 'listVariables',
blockType: Scratch.BlockType.REPORTER,
text: 'list active variables',
disableMonitor: true,
},
]
};
}
getVariable (args) {
if (args.INPUT in vars['variables']) {
return (vars['variables'][args.INPUT]);
} else {
return '';
}
}
setVariableTo (args) {
vars['variables'][args.INPUTA] = args.INPUTB;
}
changeVariableBy (args) {
if (args.INPUTA in vars['variables']) {
var prev = vars['variables'][args.INPUTA];
var next = args.INPUTB;
vars['variables'][args.INPUTA] = (prev + next);
} else {
vars['variables'][args.INPUTA] = args.INPUTB;
}
}
listVariables (args, util) {
if (Object.keys(vars['variables']).length) {
var output = Object.keys(vars['variables']);
return output;
} else {
return;
}
}
deleteVariable (args) {
Reflect.deleteProperty(vars['variables'], args.INPUT);
}
deleteAllVariables () {
Reflect.deleteProperty(vars, 'variables');
vars['variables'] = {};
}
}
Scratch.extensions.register(new variableservice());
}(Scratch));