@@ -77,42 +77,6 @@ const EventConverter = {
77
77
}
78
78
break ;
79
79
}
80
- } else if ( this . _isSelf ( receiver ) || receiver === Opal . nil ) {
81
- switch ( name ) {
82
- case 'broadcast' :
83
- case 'broadcast_and_wait' :
84
- if ( args . length === 1 && this . _isStringOrBlock ( args [ 0 ] ) && ! rubyBlock ) {
85
- let opcode ;
86
- if ( name === 'broadcast' ) {
87
- opcode = 'event_broadcast' ;
88
- } else {
89
- opcode = 'event_broadcastandwait' ;
90
- }
91
- const menuBlock = this . _createBlock ( 'event_broadcast_menu' , 'value' , {
92
- shadow : true
93
- } ) ;
94
- let broadcastMsg ;
95
- let inputBlock ;
96
- let shadowBlock ;
97
- if ( this . _isString ( args [ 0 ] ) ) {
98
- broadcastMsg = this . _lookupOrCreateBroadcastMsg ( args [ 0 ] ) ;
99
- inputBlock = menuBlock ;
100
- shadowBlock = menuBlock ;
101
- } else {
102
- broadcastMsg = this . _defaultBroadcastMsg ( ) ;
103
- inputBlock = args [ 0 ] ;
104
- shadowBlock = menuBlock ;
105
- }
106
- this . _addField ( menuBlock , 'BROADCAST_OPTION' , broadcastMsg . name , {
107
- id : broadcastMsg . id ,
108
- variableType : Variable . BROADCAST_MESSAGE_TYPE
109
- } ) ;
110
-
111
- block = this . _createBlock ( opcode , 'statement' ) ;
112
- this . _addInput ( block , 'BROADCAST_INPUT' , inputBlock , shadowBlock ) ;
113
- }
114
- break ;
115
- }
116
80
}
117
81
118
82
return block ;
@@ -223,6 +187,42 @@ const EventConverter = {
223
187
converter . setParent ( rubyBlock , block ) ;
224
188
return block ;
225
189
} ) ;
190
+
191
+ const createBroadcastBlockFunc = ( params , opcode ) => {
192
+ const { args, rubyBlock} = params ;
193
+
194
+ if ( ! converter . isStringOrBlock ( args [ 0 ] ) ) return null ;
195
+
196
+ if ( rubyBlock ) return null ;
197
+
198
+ const menuBlock = converter . createBlock ( 'event_broadcast_menu' , 'value' , {
199
+ shadow : true
200
+ } ) ;
201
+ let broadcastMsg ;
202
+ let inputBlock ;
203
+ let shadowBlock ;
204
+ if ( converter . isString ( args [ 0 ] ) ) {
205
+ broadcastMsg = converter . lookupOrCreateBroadcastMsg ( args [ 0 ] ) ;
206
+ inputBlock = menuBlock ;
207
+ shadowBlock = menuBlock ;
208
+ } else {
209
+ broadcastMsg = converter . defaultBroadcastMsg ( ) ;
210
+ inputBlock = args [ 0 ] ;
211
+ shadowBlock = menuBlock ;
212
+ }
213
+ converter . addField ( menuBlock , 'BROADCAST_OPTION' , broadcastMsg . name , {
214
+ id : broadcastMsg . id ,
215
+ variableType : Variable . BROADCAST_MESSAGE_TYPE
216
+ } ) ;
217
+
218
+ const block = converter . createBlock ( opcode , 'statement' ) ;
219
+ converter . addInput ( block , 'BROADCAST_INPUT' , inputBlock , shadowBlock ) ;
220
+ return block ;
221
+ } ;
222
+ converter . registerCallMethod ( 'self' , 'broadcast' , 1 ,
223
+ params => createBroadcastBlockFunc ( params , 'event_broadcast' ) ) ;
224
+ converter . registerCallMethod ( 'self' , 'broadcast_and_wait' , 1 ,
225
+ params => createBroadcastBlockFunc ( params , 'event_broadcastandwait' ) ) ;
226
226
}
227
227
} ;
228
228
0 commit comments