@@ -11,89 +11,6 @@ const GreaterThanMenu = [
11
11
*/
12
12
const EventConverter = {
13
13
register : function ( converter ) {
14
- converter . registerCallMethodWithBlock ( 'self' , 'when' , 1 , 0 , params => {
15
- const { receiverName, args, rubyBlock} = params ;
16
-
17
- if ( args [ 0 ] . type !== 'sym' ) return null ;
18
-
19
- if ( args [ 0 ] . value === 'flag_clicked' ) {
20
- const block = converter . createBlock ( 'event_whenflagclicked' , 'hat' ) ;
21
- converter . setParent ( rubyBlock , block ) ;
22
- return block ;
23
- }
24
-
25
- if ( args [ 0 ] . value === 'clicked' ) {
26
- let opcode = 'event_whenthisspriteclicked' ;
27
- if ( receiverName === 'stage' ) opcode = 'event_whenstageclicked' ;
28
- const block = converter . createBlock ( opcode , 'hat' ) ;
29
- converter . setParent ( rubyBlock , block ) ;
30
- return block ;
31
- }
32
-
33
- return null ;
34
- } ) ;
35
-
36
- converter . registerCallMethodWithBlock ( 'self' , 'when' , 2 , 0 , params => {
37
- const { args, rubyBlock} = params ;
38
-
39
- if ( args [ 0 ] . type !== 'sym' ) return null ;
40
-
41
- if ( args [ 0 ] . value === 'key_pressed' ) {
42
- if ( ! converter . isString ( args [ 1 ] ) ) return null ;
43
- if ( KeyOptions . indexOf ( args [ 1 ] . toString ( ) ) < 0 ) return null ;
44
-
45
- const block = converter . createBlock ( 'event_whenkeypressed' , 'hat' ) ;
46
- converter . addField ( block , 'KEY_OPTION' , args [ 1 ] ) ;
47
- converter . setParent ( rubyBlock , block ) ;
48
- return block ;
49
- }
50
-
51
- if ( args [ 0 ] . value === 'backdrop_switches' ) {
52
- if ( ! converter . isString ( args [ 1 ] ) ) return null ;
53
-
54
- const block = converter . createBlock ( 'event_whenbackdropswitchesto' , 'hat' ) ;
55
- converter . addField ( block , 'BACKDROP' , args [ 1 ] ) ;
56
- converter . setParent ( rubyBlock , block ) ;
57
- return block ;
58
- }
59
-
60
- if ( args [ 0 ] . value === 'receive' ) {
61
- if ( ! converter . isString ( args [ 1 ] ) ) return null ;
62
-
63
- const broadcastMsg = converter . lookupOrCreateBroadcastMsg ( args [ 1 ] ) ;
64
- const block = converter . createBlock ( 'event_whenbroadcastreceived' , 'hat' ) ;
65
- converter . addField ( block , 'BROADCAST_OPTION' , broadcastMsg . name , {
66
- id : broadcastMsg . id ,
67
- variableType : Variable . BROADCAST_MESSAGE_TYPE
68
- } ) ;
69
- converter . setParent ( rubyBlock , block ) ;
70
- return block ;
71
- }
72
-
73
- return null ;
74
- } ) ;
75
-
76
- converter . registerCallMethodWithBlock ( 'self' , 'when' , 3 , 0 , params => {
77
- const { args, rubyBlock} = params ;
78
-
79
- if ( args [ 0 ] . type !== 'sym' ) return null ;
80
-
81
- if ( args [ 0 ] . value === 'greater_than' ) {
82
- if ( ! converter . isString ( args [ 1 ] ) ) return null ;
83
- const args1 = args [ 1 ] . toString ( ) . toUpperCase ( ) ;
84
- if ( GreaterThanMenu . indexOf ( args1 ) < 0 ) return null ;
85
- if ( ! converter . isNumberOrBlock ( args [ 2 ] ) ) return null ;
86
-
87
- const block = converter . createBlock ( 'event_whengreaterthan' , 'hat' ) ;
88
- converter . addField ( block , 'WHENGREATERTHANMENU' , args1 ) ;
89
- converter . addNumberInput ( block , 'VALUE' , 'math_number' , args [ 2 ] , 10 ) ;
90
- converter . setParent ( rubyBlock , block ) ;
91
- return block ;
92
- }
93
-
94
- return null ;
95
- } ) ;
96
-
97
14
converter . registerCallMethodWithBlock ( 'self' , 'when_flag_clicked' , 0 , 0 , params => {
98
15
const { rubyBlock} = params ;
99
16
@@ -194,10 +111,72 @@ const EventConverter = {
194
111
converter . addInput ( block , 'BROADCAST_INPUT' , inputBlock , shadowBlock ) ;
195
112
return block ;
196
113
} ;
197
- converter . registerCallMethod ( 'self' , 'broadcast' , 1 ,
114
+ converter . registerCallMethod (
115
+ 'self' , 'broadcast' , 1 ,
198
116
params => createBroadcastBlockFunc ( params , 'event_broadcast' ) ) ;
199
- converter . registerCallMethod ( 'self' , 'broadcast_and_wait' , 1 ,
117
+ converter . registerCallMethod (
118
+ 'self' , 'broadcast_and_wait' , 1 ,
200
119
params => createBroadcastBlockFunc ( params , 'event_broadcastandwait' ) ) ;
120
+
121
+ // backward compatibility
122
+ converter . registerCallMethodWithBlock ( 'self' , 'when' , 1 , 0 , params => {
123
+ const { args} = params ;
124
+
125
+ if ( args [ 0 ] . type !== 'sym' ) return null ;
126
+
127
+ switch ( args [ 0 ] . value ) {
128
+ case 'flag_clicked' :
129
+ return converter . callMethod (
130
+ params . receiver , 'when_flag_clicked' , params . args . slice ( 1 ) ,
131
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
132
+ case 'clicked' :
133
+ return converter . callMethod (
134
+ params . receiver , 'when_clicked' , params . args . slice ( 1 ) ,
135
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
136
+ }
137
+
138
+ return null ;
139
+ } ) ;
140
+
141
+ // backward compatibility
142
+ converter . registerCallMethodWithBlock ( 'self' , 'when' , 2 , 0 , params => {
143
+ const { args} = params ;
144
+
145
+ if ( args [ 0 ] . type !== 'sym' ) return null ;
146
+
147
+ switch ( args [ 0 ] . value ) {
148
+ case 'key_pressed' :
149
+ return converter . callMethod (
150
+ params . receiver , 'when_key_pressed' , params . args . slice ( 1 ) ,
151
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
152
+ case 'backdrop_switches' :
153
+ return converter . callMethod (
154
+ params . receiver , 'when_backdrop_switches' , params . args . slice ( 1 ) ,
155
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
156
+ case 'receive' :
157
+ return converter . callMethod (
158
+ params . receiver , 'when_receive' , params . args . slice ( 1 ) ,
159
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
160
+ }
161
+
162
+ return null ;
163
+ } ) ;
164
+
165
+ // backward compatibility
166
+ converter . registerCallMethodWithBlock ( 'self' , 'when' , 3 , 0 , params => {
167
+ const { args} = params ;
168
+
169
+ if ( args [ 0 ] . type !== 'sym' ) return null ;
170
+
171
+ switch ( args [ 0 ] . value ) {
172
+ case 'greater_than' :
173
+ return converter . callMethod (
174
+ params . receiver , 'when_greater_than' , params . args . slice ( 1 ) ,
175
+ params . rubyBlockArgs , params . rubyBlock , params . node ) ;
176
+ }
177
+
178
+ return null ;
179
+ } ) ;
201
180
}
202
181
} ;
203
182
0 commit comments