1+ export default async function ( { feature, console } ) {
2+
3+ let MENU_TYPES = [ "motion_glideto_menu" , "motion_goto_menu" , "motion_pointtowards_menu" , "sensing_touchingobjectmenu" , "sensing_of_object_menu" ]
4+
5+ let blocks = [ ]
6+
7+ ScratchTools . waitForElements (
8+ "g.blocklyDraggable > g[data-shapes='argument round']" ,
9+ function ( block ) {
10+ if ( ! Blockly ) return ;
11+
12+ block = Blockly . getMainWorkspace ( ) . getBlockById ( block . dataset . id ) ;
13+ if ( ! block ) return ;
14+
15+ if ( MENU_TYPES . includes ( block . type ) ) {
16+ let menu = block . inputList [ 0 ] . fieldRow [ 0 ] . menuGenerator_ ;
17+
18+ if ( ! blocks . includes ( block . id ) ) {
19+ blocks . push ( block . id )
20+ }
21+
22+ updateMenu ( block . id )
23+ }
24+ }
25+ ) ;
26+
27+ feature . traps . vm . on ( "targetsUpdate" , function ( el ) {
28+ for ( var i in blocks ) {
29+ updateMenu ( blocks [ i ] )
30+ }
31+ } )
32+
33+ feature . addEventListener ( "disabled" , function ( ) {
34+ for ( var i in blocks ) {
35+ updateMenu ( blocks [ i ] )
36+ }
37+ } )
38+
39+ feature . addEventListener ( "reenabled" , function ( ) {
40+ for ( var i in blocks ) {
41+ updateMenu ( blocks [ i ] )
42+ }
43+ } )
44+
45+ function updateMenu ( blockId ) {
46+ let SPRITES = [ ]
47+
48+ let targets = feature . traps . vm . runtime . targets . filter ( ( target ) => ! target . isStage )
49+
50+ for ( var i in targets ) {
51+ SPRITES . push ( targets [ i ] . sprite . name )
52+ }
53+
54+ let block = Blockly . getMainWorkspace ( ) . getBlockById ( blockId ) ;
55+
56+ if ( ! block ) return ;
57+
58+ block . inputList [ 0 ] . fieldRow [ 0 ] . menuGenerator_ = function ( ) {
59+ let data = [
60+ [
61+ "random position" ,
62+ "_random_"
63+ ] ,
64+ [
65+ "mouse-pointer" ,
66+ "_mouse_"
67+ ]
68+ ]
69+
70+ for ( var i in SPRITES ) {
71+ if ( feature . self . enabled || feature . traps . vm . runtime . _editingTarget ?. sprite ?. name !== SPRITES [ i ] ) {
72+ data . push ( [ SPRITES [ i ] , SPRITES [ i ] ] )
73+ }
74+ }
75+
76+ return data
77+ }
78+ }
79+ }
0 commit comments