pxt-common-packages 9.5.3 → 9.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/built/common-sim.d.ts +5 -0
  2. package/built/common-sim.js +52 -22
  3. package/libs/controller/built/debug/binary.js +39 -39
  4. package/libs/controller---none/built/debug/binary.js +39 -39
  5. package/libs/game/built/debug/binary.js +39 -39
  6. package/libs/game/docs/reference/sprites/sprite/follow.md +66 -0
  7. package/libs/game/docs/reference/sprites/sprite/set-bounce-on-wall.md +2 -2
  8. package/libs/game/docs/reference/sprites/sprite-kind.md +70 -0
  9. package/libs/game/docs/reference/tiles/get-neighboring-location.md +123 -0
  10. package/libs/game/docs/reference/tiles/get-tile-location.md +71 -30
  11. package/libs/game/docs/reference/tiles/get-tiles-by-type.md +66 -32
  12. package/libs/game/docs/reference/tiles/location.md +246 -0
  13. package/libs/game/docs/reference/tiles/place-on-random-tile.md +54 -21
  14. package/libs/game/docs/reference/tiles/place-on-tile.md +88 -0
  15. package/libs/game/docs/reference/tiles/set-current-tilemap.md +90 -0
  16. package/libs/game/docs/reference/tiles/set-tile-at.md +47 -30
  17. package/libs/game/docs/reference/tiles/set-tilemap.md +90 -0
  18. package/libs/game/docs/reference/tiles/set-wall-at.md +67 -68
  19. package/libs/game/docs/reference/tiles/tile-at-location-equals.md +97 -0
  20. package/libs/game/docs/reference/tiles/tile-at-location-is-wall.md +98 -0
  21. package/libs/game/docs/reference/tiles/tilemap.md +145 -0
  22. package/libs/game/sprite.ts +2 -1
  23. package/libs/game/spritekind.ts +1 -0
  24. package/libs/game/tilemap.ts +12 -11
  25. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  26. package/libs/net-game/built/debug/binary.js +39 -39
  27. package/libs/palette/built/debug/binary.js +39 -39
  28. package/libs/radio/_locales/radio-jsdoc-strings.json +2 -0
  29. package/libs/radio/_locales/radio-strings.json +4 -1
  30. package/libs/radio/radio.cpp +56 -3
  31. package/libs/radio/radio.ts +13 -2
  32. package/libs/radio/shims.d.ts +16 -1
  33. package/libs/radio/sim/radio.ts +18 -5
  34. package/libs/radio/sim/state.ts +37 -17
  35. package/libs/radio-broadcast/_locales/radio-broadcast-strings.json +2 -1
  36. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  37. package/libs/radio-broadcast/radio-broadcast.ts +2 -0
  38. package/libs/sprite-scaling/built/debug/binary.js +6782 -6782
  39. package/libs/storyboard/built/debug/binary.js +39 -39
  40. package/package.json +2 -2
@@ -0,0 +1,98 @@
1
+ # tile At Location Is Wall
2
+
3
+ Check if a tile at a location in the tilemap is also a wall tile.
4
+
5
+ ```sig
6
+ tiles.tileAtLocationIsWall(null)
7
+ ```
8
+
9
+ The tile in the tilemap at the location selected is checked to see if it is set as a wall. After they are placed in the tilemap with the Tilemap Editor, tiles can be set as _wall_ tiles.
10
+
11
+ ## Parameters
12
+
13
+ * **location**: the [location](/reference/tiles/location) object for the tile to check if it's a wall.
14
+
15
+ ## Returns
16
+
17
+ * a [boolean](/types/boolean) value that is `true` if the tile at **location** is a wall. The value is `false` if the tile is not a wall.
18
+
19
+ ## Example #example
20
+
21
+ Set a tilemap with two columns of the same tile. Make one of the columns be all wall tiles. Send a ghost sprite across both colunms so it can detect which one is the wall.
22
+
23
+ ```blocks
24
+ scene.onOverlapTile(SpriteKind.Player, assets.tile`myTile0`, function (sprite, location) {
25
+ if (tiles.tileAtLocationIsWall(location)) {
26
+ mySprite.sayText("That's a wall!")
27
+ } else {
28
+ mySprite.sayText("Not a wall.")
29
+ }
30
+ })
31
+ let mySprite: Sprite = null
32
+ scene.setBackgroundColor(11)
33
+ tiles.setCurrentTilemap(tilemap`level1`)
34
+ mySprite = sprites.create(img`
35
+ ........................
36
+ ........................
37
+ ........................
38
+ ........................
39
+ ..........ffff..........
40
+ ........ff1111ff........
41
+ .......fb111111bf.......
42
+ .......f11111111f.......
43
+ ......fd11111111df......
44
+ ......fd11111111df......
45
+ ......fddd1111dddf......
46
+ ......fbdbfddfbdbf......
47
+ ......fcdcf11fcdcf......
48
+ .......fb111111bf.......
49
+ ......fffcdb1bdffff.....
50
+ ....fc111cbfbfc111cf....
51
+ ....f1b1b1ffff1b1b1f....
52
+ ....fbfbffffffbfbfbf....
53
+ .........ffffff.........
54
+ ...........fff..........
55
+ ........................
56
+ ........................
57
+ ........................
58
+ ........................
59
+ `, SpriteKind.Player)
60
+ mySprite.left = 0
61
+ mySprite.setFlag(SpriteFlag.GhostThroughWalls, true)
62
+ mySprite.vx = 30
63
+ ```
64
+
65
+ ## See also #seealso
66
+
67
+ [get tile location](/reference/tiles/get-tile-location)
68
+
69
+ ```jres
70
+ {
71
+ "transparency16": {
72
+ "data": "hwQQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
73
+ "mimeType": "image/x-mkcd-f4",
74
+ "tilemapTile": true
75
+ },
76
+ "tile1": {
77
+ "data": "hwQQABAAAABmZmZmZmZmZmZvZmZmb2ZmZmZm9mZm9mZmZm9mb2ZmZvZmZmZmZm9mZmZmZmZmZmZmZmZmZmZmZmb2ZvZmb2Zm9mZmZmZm9mZmZmZmZmZmZmb2b2b2ZmZmZmZmZmZmZm9mZmb2ZmZmZmb2ZmZm9mZvZmZmZvZmZvZmZmZmZmZmZg==",
78
+ "mimeType": "image/x-mkcd-f4",
79
+ "tilemapTile": true,
80
+ "displayName": "myTile0"
81
+ },
82
+ "level1": {
83
+ "id": "level1",
84
+ "mimeType": "application/mkcd-tilemap",
85
+ "data": "MTAwYTAwMDgwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDEwMDAwMDAwMDAwMDAwMTAwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDEwMDAwMDAwMDAwMDAwMTAwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDEwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDIwMDAwMDAwMDAyMDAwMDAwMDAwMjAwMDAwMDAwMDIwMDAwMDAwMDAyMDAwMDAwMDAwMjAwMDAwMDAwMDIwMA==",
86
+ "tileset": [
87
+ "myTiles.transparency16",
88
+ "myTiles.tile1"
89
+ ],
90
+ "displayName": "level1"
91
+ },
92
+ "*": {
93
+ "mimeType": "image/x-mkcd-f4",
94
+ "dataEncoding": "base64",
95
+ "namespace": "myTiles"
96
+ }
97
+ }
98
+ ```
@@ -0,0 +1,145 @@
1
+ # tilemap
2
+
3
+ A tilemap object that defines a player level for the game scene.
4
+
5
+ ```sig
6
+ tiles._tilemapEditor(null)
7
+ ```
8
+
9
+ A **tilemap** is a data object that contains the dimensions, layers, and tiles for a tile mapping used to set the scene of a game.
10
+
11
+ ## Creating and using tilemaps
12
+
13
+ Tilemaps aren't coded by the user but are created using a tilemap editor. When you add a tilemap to your project, it contains a default layout having all of it rows and columns filled with transparent tiles.
14
+
15
+ ```block
16
+ tiles.setCurrentTilemap(tilemap`level2`)
17
+ ```
18
+
19
+ You modify the tilemap using the Tilemap Editor. When coding with blocks, the Tilemap Editor will open when you click on the map image in the tilemap block. If you're editing code, the Tilemap Editor opens by clicking the map symbol in the line of code where you use the tilemap.
20
+
21
+ You design your game scene, or _level_, using the tiles your create or by chosing some from the tile library. You also can set the tilemap size and tile attributes. The example here shows a tilemap created for a maze game:
22
+
23
+ ```block
24
+ tiles.setCurrentTilemap(tilemap`level1`)
25
+ ```
26
+
27
+ After editing, a tilemap is saved as a project asset. The tilemap is defined as a level and assigned an identifier like `level1`. In code, you use the tilemap with its identifier like this:
28
+
29
+ ```typescript-ignore
30
+ tiles.setCurrentTilemap(tilemap`level1`)
31
+ ```
32
+
33
+ You can use a tilemap directly in scene and tile operations, or as an assigned variable:
34
+
35
+ ```block
36
+ let myTilemap = tilemap`level1`
37
+ tiles.setCurrentTilemap(myTilemap)
38
+ ```
39
+
40
+ ## The tilemap object
41
+
42
+ Tilemaps are complex data objects and are defined as levels which contain tiles at various row and column locations. When a tilemap is added to a project, the project assets will include both the tilemap and its tiles. A tilemap's asset data might look like the following:
43
+
44
+ ```typescript-ignore
45
+ {
46
+ "transparency16": {
47
+ "data": "hwQQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
48
+ "mimeType": "image/x-mkcd-f4",
49
+ "tilemapTile": true
50
+ },
51
+ "tile1": {
52
+ "data": "hwQQABAAAABERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERA==",
53
+ "mimeType": "image/x-mkcd-f4",
54
+ "tilemapTile": true,
55
+ "displayName": "myTile"
56
+ },
57
+ "tile2": {
58
+ "data": "hwQQABAAAAB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dw==",
59
+ "mimeType": "image/x-mkcd-f4",
60
+ "tilemapTile": true,
61
+ "displayName": "myTile0"
62
+ },
63
+ "tile3": {
64
+ "data": "hwQQABAAAACqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==",
65
+ "mimeType": "image/x-mkcd-f4",
66
+ "tilemapTile": true,
67
+ "displayName": "myTile1"
68
+ },
69
+ "level1": {
70
+ "id": "level1",
71
+ "mimeType": "application/mkcd-tilemap",
72
+ "data": "MTAwYTAwMDgwMDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMDAwMDAwMDAyMDAwMDAwMDEwMTAwMDMwMzAwMDIwMjAwMDAwMDAxMDAwMDAzMDAwMDAwMDAwMDAxMDEwMDAwMDAwMDAzMDAwMDAwMDEwMDAwMDIwMDAwMDMwMDAzMDAwMTAxMDAwMjAyMDAwMDAwMDMwMDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA==",
73
+ "tileset": [
74
+ "myTiles.transparency16",
75
+ "myTiles.tile1",
76
+ "myTiles.tile2",
77
+ "myTiles.tile3"
78
+ ],
79
+ "displayName": "level1"
80
+ },
81
+ "*": {
82
+ "mimeType": "image/x-mkcd-f4",
83
+ "dataEncoding": "base64",
84
+ "namespace": "myTiles"
85
+ }
86
+ }
87
+ ```
88
+
89
+ ## See also
90
+
91
+ [set current tilemap](/reference/tiles/set-current-tilemap)
92
+
93
+ ```jres
94
+ {
95
+ "transparency16": {
96
+ "data": "hwQQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
97
+ "mimeType": "image/x-mkcd-f4",
98
+ "tilemapTile": true
99
+ },
100
+ "tile1": {
101
+ "data": "hwQQABAAAABERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERA==",
102
+ "mimeType": "image/x-mkcd-f4",
103
+ "tilemapTile": true,
104
+ "displayName": "myTile"
105
+ },
106
+ "tile2": {
107
+ "data": "hwQQABAAAAB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dw==",
108
+ "mimeType": "image/x-mkcd-f4",
109
+ "tilemapTile": true,
110
+ "displayName": "myTile0"
111
+ },
112
+ "tile3": {
113
+ "data": "hwQQABAAAACqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==",
114
+ "mimeType": "image/x-mkcd-f4",
115
+ "tilemapTile": true,
116
+ "displayName": "myTile1"
117
+ },
118
+ "level1": {
119
+ "id": "level1",
120
+ "mimeType": "application/mkcd-tilemap",
121
+ "data": "MTAwYTAwMDgwMDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMDAwMDAwMDAyMDAwMDAwMDEwMTAwMDMwMzAwMDIwMjAwMDAwMDAxMDAwMDAzMDAwMDAwMDAwMDAxMDEwMDAwMDAwMDAzMDAwMDAwMDEwMDAwMDIwMDAwMDMwMDAzMDAwMTAxMDAwMjAyMDAwMDAwMDMwMDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA==",
122
+ "tileset": [
123
+ "myTiles.transparency16",
124
+ "myTiles.tile1",
125
+ "myTiles.tile2",
126
+ "myTiles.tile3"
127
+ ],
128
+ "displayName": "level1"
129
+ },
130
+ "level2": {
131
+ "id": "level2",
132
+ "mimeType": "application/mkcd-tilemap",
133
+ "data": "MTAwYTAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA==",
134
+ "tileset": [
135
+ "myTiles.transparency16"
136
+ ],
137
+ "displayName": "level4"
138
+ },
139
+ "*": {
140
+ "mimeType": "image/x-mkcd-f4",
141
+ "dataEncoding": "base64",
142
+ "namespace": "myTiles"
143
+ }
144
+ }
145
+ ```
@@ -319,7 +319,7 @@ class Sprite extends sprites.BaseSprite {
319
319
  */
320
320
  //% group="Image"
321
321
  //% blockId=spriteimage block="%sprite(mySprite) image"
322
- //% weight=8
322
+ //% weight=8 help=sprites/sprite/image
323
323
  get image(): Image {
324
324
  return this._image;
325
325
  }
@@ -998,6 +998,7 @@ class Sprite extends sprites.BaseSprite {
998
998
  //% group="Physics" weight=10
999
999
  //% blockId=spriteFollowOtherSprite
1000
1000
  //% block="set %sprite(myEnemy) follow %target=variables_get(mySprite) || with speed %speed"
1001
+ //% help=sprites/sprite/follow
1001
1002
  follow(target: Sprite, speed = 100, turnRate = 400) {
1002
1003
  if (target === this) return;
1003
1004
 
@@ -5,6 +5,7 @@ namespace sprites {
5
5
  //% shim=KIND_GET
6
6
  //% blockId=spritekind block="$kind"
7
7
  //% kindNamespace=SpriteKind kindMemberName=kind kindPromptHint="e.g. Coin, Fireball, Asteroid..."
8
+ //% help=sprites/sprite-kind
8
9
  export function _spriteKind(kind: number): number {
9
10
  return kind;
10
11
  }
@@ -596,7 +596,7 @@ namespace tiles {
596
596
  //% tilemap.fieldOptions.filter="tile"
597
597
  //% tilemap.fieldOptions.taggedTemplate="tilemap"
598
598
  //% blockNamespace="scene" duplicateShadowOnDrag
599
- //% help=scene/set-tilemap
599
+ //% help=tiles/set-tilemap
600
600
  //% deprecated=1
601
601
  export function setTilemap(tilemap: TileMapData) {
602
602
  setCurrentTilemap(tilemap);
@@ -611,7 +611,7 @@ namespace tiles {
611
611
  //% weight=201 blockGap=8
612
612
  //% tilemap.shadow=tiles_tilemap_editor
613
613
  //% blockNamespace="scene" group="Tilemaps" duplicateShadowOnDrag
614
- //% help=tiles/set-tile-map
614
+ //% help=tiles/set-current-tilemap
615
615
  export function setCurrentTilemap(tilemap: TileMapData) {
616
616
  scene.setTileMapLevel(tilemap);
617
617
  }
@@ -625,7 +625,7 @@ namespace tiles {
625
625
  //% tile.shadow=tileset_tile_picker
626
626
  //% tile.decompileIndirectFixedInstances=true
627
627
  //% blockNamespace="scene" group="Tilemap Operations" blockGap=8
628
- //% help=scene/set-tile-at
628
+ //% help=tiles/set-tile-at
629
629
  //% weight=70
630
630
  export function setTileAt(loc: Location, tile: Image): void {
631
631
  const scene = game.currentScene();
@@ -643,7 +643,7 @@ namespace tiles {
643
643
  //% blockId=mapsetwallat block="set wall $on at $loc"
644
644
  //% on.shadow=toggleOnOff loc.shadow=mapgettile
645
645
  //% blockNamespace="scene" group="Tilemap Operations"
646
- //% help=scene/set-wall-at
646
+ //% help=tiles/set-wall-at
647
647
  //% weight=60
648
648
  export function setWallAt(loc: Location, on: boolean): void {
649
649
  const scene = game.currentScene();
@@ -660,7 +660,7 @@ namespace tiles {
660
660
  //% blockId=mapgettile block="tilemap col $col row $row"
661
661
  //% blockNamespace="scene" group="Locations"
662
662
  //% weight=100 blockGap=8
663
- //% help=scene/get-tile-location
663
+ //% help=tiles/get-tile-location
664
664
  export function getTileLocation(col: number, row: number): Location {
665
665
  const scene = game.currentScene();
666
666
  if (col == undefined || row == undefined || !scene.tileMap) return null;
@@ -697,7 +697,7 @@ namespace tiles {
697
697
  //% location.shadow=mapgettile
698
698
  //% tile.shadow=tileset_tile_picker tile.decompileIndirectFixedInstances=true
699
699
  //% blockNamespace="scene" group="Locations" blockGap=8
700
- //% weight=40 help=scene/tile-at-location-equals
700
+ //% weight=40 help=tiles/tile-at-location-equals
701
701
  export function tileAtLocationEquals(location: Location, tile: Image): boolean {
702
702
  const scene = game.currentScene();
703
703
  if (!location || !tile || !scene.tileMap) return false;
@@ -713,7 +713,7 @@ namespace tiles {
713
713
  //% block="tile at $location is wall"
714
714
  //% location.shadow=mapgettile
715
715
  //% blockNamespace="scene" group="Locations" blockGap=8
716
- //% weight=30 help=scene/tile-at-location-is-wall
716
+ //% weight=30 help=tiles/tile-at-location-is-wall
717
717
  export function tileAtLocationIsWall(location: Location): boolean {
718
718
  if (!location || !location.tileMap) return false;
719
719
  return location.isWall();
@@ -727,7 +727,7 @@ namespace tiles {
727
727
  //% blockId=tiles_image_at_location
728
728
  //% block="tile image at $location"
729
729
  //% location.shadow=mapgettile
730
- //% weight=0 help=scene/tile-image-at-location
730
+ //% weight=0 help=tiles/tile-image-at-location
731
731
  //% blockNamespace="scene" group="Locations"
732
732
  export function tileImageAtLocation(location: Location): Image {
733
733
  const scene = game.currentScene();
@@ -743,7 +743,7 @@ namespace tiles {
743
743
  //% blockId=mapplaceontile block="place $sprite=variables_get(mySprite) on top of $loc"
744
744
  //% loc.shadow=mapgettile
745
745
  //% blockNamespace="scene" group="Tilemap Operations" blockGap=8
746
- //% help=scene/place-on-tile
746
+ //% help=tiles/place-on-tile
747
747
  //% weight=100
748
748
  export function placeOnTile(sprite: Sprite, loc: Location): void {
749
749
  if (!sprite || !loc || !loc.tileMap) return;
@@ -759,7 +759,7 @@ namespace tiles {
759
759
  //% tile.shadow=tileset_tile_picker
760
760
  //% tile.decompileIndirectFixedInstances=true
761
761
  //% blockNamespace="scene" group="Tilemap Operations"
762
- //% help=scene/place-on-random-tile
762
+ //% help=tiles/place-on-random-tile
763
763
  //% weight=90
764
764
  export function placeOnRandomTile(sprite: Sprite, tile: Image): void {
765
765
  if (!sprite || !game.currentScene().tileMap) return;
@@ -776,7 +776,7 @@ namespace tiles {
776
776
  //% tile.shadow=tileset_tile_picker
777
777
  //% tile.decompileIndirectFixedInstances=true
778
778
  //% blockNamespace="scene" group="Locations" blockGap=8
779
- //% help=scene/get-tiles-by-type
779
+ //% help=tiles/get-tiles-by-type
780
780
  //% weight=10
781
781
  export function getTilesByType(tile: Image): Location[] {
782
782
  const scene = game.currentScene();
@@ -809,6 +809,7 @@ namespace tiles {
809
809
  //% tilemap.fieldOptions.filter="tile"
810
810
  //% tilemap.fieldOptions.taggedTemplate="tilemap"
811
811
  //% blockNamespace="scene" group="Tilemaps" duplicateShadowOnDrag
812
+ //% help=tiles/tilemap
812
813
  export function _tilemapEditor(tilemap: TileMapData): TileMapData {
813
814
  return tilemap;
814
815
  }
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
56
56
  const pxsim_numops = pxsim.numops;
57
57
 
58
58
 
59
- function _main___P188722(s) {
59
+ function _main___P188726(s) {
60
60
  let r0 = s.r0, step = s.pc;
61
61
  s.pc = -1;
62
62
 
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
66
66
  switch (step) {
67
67
  case 0:
68
68
 
69
- globals._intervals___188965 = (undefined);
70
- globals._pollEventQueue___188978 = (undefined);
69
+ globals._intervals___188969 = (undefined);
70
+ globals._pollEventQueue___188982 = (undefined);
71
71
  r0 = undefined;
72
72
  return leave(s, r0)
73
73
  default: oops()
74
74
  } } }
75
- _main___P188722.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"keypad.ts","functionName":"<main>","argumentNames":[]}
76
- _main___P188722.continuations = [ ]
75
+ _main___P188726.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"keypad.ts","functionName":"<main>","argumentNames":[]}
76
+ _main___P188726.continuations = [ ]
77
77
 
78
- function _main___P188722_mk(s) {
78
+ function _main___P188726_mk(s) {
79
79
  checkStack(s.depth);
80
80
  return {
81
- parent: s, fn: _main___P188722, depth: s.depth + 1,
81
+ parent: s, fn: _main___P188726, depth: s.depth + 1,
82
82
  pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
83
83
  } }
84
84
 
@@ -88,5 +88,5 @@ function _main___P188722_mk(s) {
88
88
 
89
89
  const breakpoints = setupDebugger(1, [])
90
90
 
91
- return _main___P188722
91
+ return _main___P188726
92
92
  })