pxt-arcade 1.7.3 → 1.7.7

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 (227) hide show
  1. package/built/common-sim.d.ts +2 -0
  2. package/built/common-sim.js +4 -0
  3. package/built/target.js +1788 -236
  4. package/built/target.json +1788 -236
  5. package/built/targetlight.json +5 -5
  6. package/built/theme.json +3 -2
  7. package/docs/gamejam/global-2021.html +459 -0
  8. package/docs/hour-of-code/all.md +27 -0
  9. package/docs/hour-of-code/{educators.html → educators-2020.html} +25 -25
  10. package/docs/hour-of-code/educators-2021.html +625 -0
  11. package/docs/{hour-of-code.html → hour-of-code-2020.html} +37 -37
  12. package/docs/hour-of-code-2021.html +438 -183
  13. package/docs/hour-of-code-ref.json +3 -0
  14. package/docs/index-ref.json +1 -1
  15. package/docs/multipart-tutorials.md +0 -8
  16. package/docs/projects/SUMMARY.md +3 -2
  17. package/docs/recipes.md +0 -7
  18. package/docs/skillmap/clicker/clicker1.md +7 -7
  19. package/docs/skillmap/clicker/clicker2.md +9 -9
  20. package/docs/skillmap/clicker/clicker3.md +8 -8
  21. package/docs/skillmap/clicker/clicker4.md +8 -8
  22. package/docs/skillmap/clicker/clicker4a.md +7 -7
  23. package/docs/skillmap/clicker/clicker5.md +3 -3
  24. package/docs/skillmap/clicker-themed/clickert1.md +66 -38
  25. package/docs/skillmap/clicker-themed/clickert2.md +77 -58
  26. package/docs/skillmap/clicker-themed/clickert3.md +75 -55
  27. package/docs/skillmap/clicker-themed/clickert4.md +105 -118
  28. package/docs/skillmap/collector/collector1.md +11 -11
  29. package/docs/skillmap/collector/collector1a.md +8 -8
  30. package/docs/skillmap/collector/collector2.md +8 -8
  31. package/docs/skillmap/collector/collector3.md +8 -8
  32. package/docs/skillmap/collector/collector3a.md +7 -7
  33. package/docs/skillmap/collector/collector4.md +8 -8
  34. package/docs/skillmap/collector/collector5.md +2 -2
  35. package/docs/skillmap/collector-themed/collectort1.md +107 -88
  36. package/docs/skillmap/collector-themed/collectort2.md +109 -87
  37. package/docs/skillmap/collector-themed/collectort3.md +138 -115
  38. package/docs/skillmap/collector-themed/collectort4.md +130 -118
  39. package/docs/skillmap/collector-themed/collectort4old.md +23 -23
  40. package/docs/skillmap/collector-themed/collectort5.md +2 -2
  41. package/docs/skillmap/educator-info/forest-map-info.md +34 -25
  42. package/docs/skillmap/educator-info/pongo-map-info.md +55 -0
  43. package/docs/skillmap/educator-info/racer-map-info.md +105 -0
  44. package/docs/skillmap/educator-info/rockstar-map-info.md +1 -1
  45. package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
  46. package/docs/skillmap/forest/forest1.md +1 -69
  47. package/docs/skillmap/forest/forest2.md +5 -65
  48. package/docs/skillmap/forest/forest3.md +1 -174
  49. package/docs/skillmap/forest/forest4.md +2 -336
  50. package/docs/skillmap/forest/forest5.md +1 -396
  51. package/docs/skillmap/forest/forest6.md +6 -372
  52. package/docs/skillmap/forest-old.md +92 -0
  53. package/docs/skillmap/forest.md +9 -9
  54. package/docs/skillmap/forest_new/forest1.md +191 -0
  55. package/docs/skillmap/forest_new/forest2.md +217 -0
  56. package/docs/skillmap/forest_new/forest3.md +333 -0
  57. package/docs/skillmap/forest_new/forest4.md +196 -0
  58. package/docs/skillmap/forest_new/forest5.md +291 -0
  59. package/docs/skillmap/forest_new/forest6.md +272 -0
  60. package/docs/skillmap/interface/activity1.md +41 -49
  61. package/docs/skillmap/jungle/jungle1.md +48 -28
  62. package/docs/skillmap/jungle/jungle2.md +50 -26
  63. package/docs/skillmap/jungle/jungle3.md +48 -27
  64. package/docs/skillmap/jungle/jungle4.md +76 -58
  65. package/docs/skillmap/jungle/jungle5.md +31 -25
  66. package/docs/skillmap/jungle/jungle6.md +34 -28
  67. package/docs/skillmap/jungle/jungle7.md +36 -24
  68. package/docs/skillmap/jungle/jungle8.md +27 -25
  69. package/docs/skillmap/jungle.md +7 -3
  70. package/docs/skillmap/long-shark.md +119 -0
  71. package/docs/skillmap/pongo/pongo1.md +256 -0
  72. package/docs/skillmap/pongo/pongo2.md +179 -0
  73. package/docs/skillmap/pongo/pongo3.md +177 -0
  74. package/docs/skillmap/pongo.md +59 -0
  75. package/docs/skillmap/racer.md +7 -7
  76. package/docs/skillmap/rockstar/rockstar1.md +32 -41
  77. package/docs/skillmap/rockstar/rockstar2.md +45 -27
  78. package/docs/skillmap/rockstar/rockstar3.md +45 -27
  79. package/docs/skillmap/rockstar.md +3 -1
  80. package/docs/skillmap/shark/shark1-simple.md +151 -0
  81. package/docs/skillmap/shark/shark2-simple.md +203 -0
  82. package/docs/skillmap/shark/shark3-simple.md +204 -0
  83. package/docs/skillmap/shark/shark4-simple.md +246 -0
  84. package/docs/skillmap/shark/shark4a-simple.md +244 -0
  85. package/docs/skillmap/shark.md +25 -58
  86. package/docs/skillmap/space/space1.md +63 -29
  87. package/docs/skillmap/space/space2.md +34 -25
  88. package/docs/skillmap/space/space3.md +86 -69
  89. package/docs/skillmap/space/space4.md +96 -65
  90. package/docs/skillmap/space/space4a.md +34 -25
  91. package/docs/skillmap/space/space5.md +81 -45
  92. package/docs/skillmap/space/space6.md +59 -81
  93. package/docs/skillmap/space.md +8 -5
  94. package/docs/skillmap/story/card.md +6 -6
  95. package/docs/skillmap/story/card2.md +6 -6
  96. package/docs/skillmap/story/story1.md +60 -175
  97. package/docs/skillmap/story/story2.md +89 -327
  98. package/docs/skillmap/story/story3.md +238 -228
  99. package/docs/skillmap/story/story4.md +23 -23
  100. package/docs/skillmap/zoo/zoo1.md +31 -16
  101. package/docs/skillmap/zoo/zoo2.md +45 -30
  102. package/docs/skillmap/zoo/zoo2a.md +51 -36
  103. package/docs/skillmap/zoo/zoo3.md +8 -7
  104. package/docs/skillmap/zoo/zoo4.md +61 -32
  105. package/docs/skillmap/zoo/zoo5.md +41 -31
  106. package/docs/skillmap/zoo.md +2 -2
  107. package/docs/skillmaps.md +20 -4
  108. package/docs/static/experiments/accessibleblocks.png +0 -0
  109. package/docs/static/experiments/blockserrorlist.png +0 -0
  110. package/docs/static/gamejam/jams/global-2021/assets/banner.png +0 -0
  111. package/docs/static/gamejam/jams/global-2021/info.json +10 -0
  112. package/docs/static/gamejam/jams/global-2021/rules.md +22 -0
  113. package/docs/static/gamejam/jams/global-2021/style.css +141 -0
  114. package/docs/static/gamejam/lib/gamejam.d.ts +1 -0
  115. package/docs/static/gamejam/lib/gamejam.js +34 -24
  116. package/docs/static/gamejam/lib/gamejam.ts +35 -24
  117. package/docs/static/hero-gallery/stream.png +0 -0
  118. package/docs/static/hour-of-code/{apple.png → 2020/apple.png} +0 -0
  119. package/docs/static/hour-of-code/{arcade.png → 2020/arcade.png} +0 -0
  120. package/docs/static/hour-of-code/{asphodel.png → 2020/asphodel.png} +0 -0
  121. package/docs/static/hour-of-code/{card.png → 2020/card.png} +0 -0
  122. package/docs/static/hour-of-code/{chase-the-pizza.png → 2020/chase-the-pizza.png} +0 -0
  123. package/docs/static/hour-of-code/{clovers.png → 2020/clovers.png} +0 -0
  124. package/docs/static/hour-of-code/{design.png → 2020/design.png} +0 -0
  125. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level1.png +0 -0
  126. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level4.png +0 -0
  127. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level6.png +0 -0
  128. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level7.png +0 -0
  129. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level9.png +0 -0
  130. package/docs/static/hour-of-code/{educators → 2020/educators}/clover-design.gif +0 -0
  131. package/docs/static/hour-of-code/{educators → 2020/educators}/shark-attack-tutorial.png +0 -0
  132. package/docs/static/hour-of-code/{galga.png → 2020/galga.png} +0 -0
  133. package/docs/static/hour-of-code/{lemon-leak.png → 2020/lemon-leak.png} +0 -0
  134. package/docs/static/hour-of-code/{micro-bit.png → 2020/micro-bit.png} +0 -0
  135. package/docs/static/hour-of-code/{minecraft.png → 2020/minecraft.png} +0 -0
  136. package/docs/static/hour-of-code/{nfl.png → 2020/nfl.png} +0 -0
  137. package/docs/static/hour-of-code/{ocean-jam.png → 2020/ocean-jam.png} +0 -0
  138. package/docs/static/hour-of-code/{pixel-background-primary.png → 2020/pixel-background-primary.png} +0 -0
  139. package/docs/static/hour-of-code/{pixel-background-secondary.png → 2020/pixel-background-secondary.png} +0 -0
  140. package/docs/static/hour-of-code/{shadowed-aside-frame.png → 2020/shadowed-aside-frame.png} +0 -0
  141. package/docs/static/hour-of-code/{shadowed-button-frame.png → 2020/shadowed-button-frame.png} +0 -0
  142. package/docs/static/hour-of-code/{shadowed-primary-frame.png → 2020/shadowed-primary-frame.png} +0 -0
  143. package/docs/static/hour-of-code/{shark-attack.png → 2020/shark-attack.png} +0 -0
  144. package/docs/static/hour-of-code/{simulator.gif → 2020/simulator.gif} +0 -0
  145. package/docs/static/hour-of-code/{simulator.png → 2020/simulator.png} +0 -0
  146. package/docs/static/hour-of-code/{styles.css → 2020/styles.css} +1 -1
  147. package/docs/static/hour-of-code/2021/Rowdies/OFL.txt +93 -0
  148. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Bold.ttf +0 -0
  149. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Regular.ttf +0 -0
  150. package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
  151. package/docs/static/hour-of-code/2021/favicon.png +0 -0
  152. package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
  153. package/docs/static/hour-of-code/2021/game-jam-hero.png +0 -0
  154. package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
  155. package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
  156. package/docs/static/hour-of-code/2021/hoc-header-educators.png +0 -0
  157. package/docs/static/hour-of-code/2021/hoc-header-plane.gif +0 -0
  158. package/docs/static/hour-of-code/2021/hoc-header-scene.gif +0 -0
  159. package/docs/static/hour-of-code/2021/jungle-skillmap.png +0 -0
  160. package/docs/static/hour-of-code/2021/makecode-example.png +0 -0
  161. package/docs/static/hour-of-code/2021/microbit.png +0 -0
  162. package/docs/static/hour-of-code/2021/minecraft.png +0 -0
  163. package/docs/static/hour-of-code/2021/rockstar-skillmap.png +0 -0
  164. package/docs/static/hour-of-code/2021/styles.css +660 -62
  165. package/docs/static/logo.png +0 -0
  166. package/docs/static/skillmap/assets/my-assets-three.png +0 -0
  167. package/docs/static/skillmap/assets/sprite-from-container.gif +0 -0
  168. package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
  169. package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
  170. package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
  171. package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
  172. package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
  173. package/docs/static/skillmap/backgrounds/space.png +0 -0
  174. package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
  175. package/docs/static/skillmap/certificates/forest-cert.png +0 -0
  176. package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
  177. package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
  178. package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
  179. package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
  180. package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
  181. package/docs/static/skillmap/certificates/shark-cert.png +0 -0
  182. package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
  183. package/docs/static/skillmap/certificates/space-cert.png +0 -0
  184. package/docs/static/skillmap/pongo/pongo1.gif +0 -0
  185. package/docs/static/skillmap/pongo/pongo2gif +0 -0
  186. package/docs/static/skillmap/pongo/pongo3.gif +0 -0
  187. package/docs/static/skillmap/racer/racer1.gif +0 -0
  188. package/docs/static/skillmap/racer/racer2.gif +0 -0
  189. package/docs/static/skillmap/racer/racer3.gif +0 -0
  190. package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
  191. package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
  192. package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
  193. package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
  194. package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
  195. package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
  196. package/docs/tutorials/barrel-dodger.md +4 -4
  197. package/docs/tutorials/collect-the-clovers.md +2 -2
  198. package/docs/tutorials/froggy.md +105 -90
  199. package/docs/tutorials/hundred.md +400 -0
  200. package/package.json +3 -3
  201. package/pxtarget.json +3 -2
  202. package/targetconfig.json +4 -1
  203. package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
  204. package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
  205. package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
  206. package/docs/skillmap/forest/forest9.md +0 -714
  207. package/docs/static/hour-of-code/2021/placeholder.png +0 -0
  208. package/docs/static/hour-of-code/ww-maze.png +0 -0
  209. package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
  210. package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
  211. package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
  212. package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
  213. package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
  214. package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
  215. package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
  216. package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
  217. package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
  218. package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
  219. package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
  220. package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
  221. package/docs/static/ww84-background.png +0 -0
  222. package/docs/static/ww84-header.png +0 -0
  223. package/docs/ww84.html +0 -276
  224. package/sim/public/locales/zh-CN/bundled-strings.json +0 -1800
  225. package/sim/public/locales/zh-CN/target-strings.json +0 -13
  226. package/sim/public/locales/zh-TW/bundled-strings.json +0 -1903
  227. package/sim/public/locales/zh-TW/target-strings.json +0 -8
@@ -224,22 +224,10 @@ and head back out to the skillmap to share it with friends or save it in your ga
224
224
 
225
225
 
226
226
  ```package
227
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
228
- pxt-text=github:microsoft/arcade-text
229
- arcade-premium-life=github:jwunderl/arcade-premium-life/
230
- pxt-characterAnimations=github:microsoft/arcade-character-animations/
231
- pxt-data=github:microsoft/arcade-sprite-data/
232
- pxt-story=github:microsoft/arcade-storytelling/
233
- arcade-sprite-util=github:jwunderl/arcade-sprite-util/
234
- pxt-status-bar=github:jwunderl/pxt-status-bar
227
+ pxt-forest-special=github:kiki-lee/forest-special/
235
228
  ```
236
229
 
237
230
  ```template
238
- namespace SpriteKind {
239
- export const Water = SpriteKind.create()
240
- export const Fire = SpriteKind.create()
241
- export const Burnt = SpriteKind.create()
242
- }
243
231
 
244
232
  controller.A.onEvent(ControllerButtonEvent.Repeated, function () {
245
233
  sprites.spray(mySprite, assets.image`water`)
@@ -315,389 +303,6 @@ hud.fire_hud_label ("Nope:")
315
303
  ```
316
304
 
317
305
 
318
- ```customts
319
-
320
- let spreadOptions: number[] = []
321
-
322
- let windSpeed = 5
323
- let tinder = 4
324
- let dryGrass = 5
325
- let spreadTimeBase = 2000
326
- let hoseDirection = 270
327
- let facing = 0
328
- let changeRate = 7
329
- let burnedColor = 2
330
- let healthyColor = 3
331
-
332
- let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
333
- statusbar.top = 12
334
- statusbar.left = 4
335
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
336
- statusbar.value = tiles.tilemapRows() * tiles.tilemapColumns()
337
- statusbar.setColor(healthyColor, burnedColor)
338
- let statusLabel = textsprite.create("Healthy Forest", 0, 1)
339
- statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
340
- statusLabel.top = 2
341
- statusLabel.left = 4
342
- let fireLabel = textsprite.create("Fires:")
343
- fireLabel.right = 145
344
- fireLabel.top = 2
345
- fireLabel.setMaxFontHeight(4)
346
- fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
347
- let hudBG = sprites.create(img`
348
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
349
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
350
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
351
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
352
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
353
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
354
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
355
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
356
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
357
- cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
358
- `, SpriteKind.Player)
359
- hudBG.bottom = 120
360
- hudBG.z = 2000
361
- hudBG.setFlag(SpriteFlag.Invisible, true)
362
- hudBG.setFlag(SpriteFlag.RelativeToCamera, true)
363
- let statusbar2 = statusbars.create(8, 8, StatusBarKind.Magic)
364
- statusbar2.setLabel("Fire Danger:")
365
- statusbar2.setColor(7, 2)
366
- statusbar2.positionDirection(CollisionDirection.Bottom)
367
- statusbar2.z = 2001
368
- statusLabel.setFlag(SpriteFlag.Invisible, true)
369
- statusbar.setFlag(SpriteFlag.Invisible, true)
370
- fireLabel.setFlag(SpriteFlag.Invisible, true)
371
- info.showScore(false)
372
- statusbar2.setFlag(SpriteFlag.Invisible, true)
373
-
374
-
375
-
376
- game.onUpdate(function () {
377
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
378
- statusbar.value = tiles.tilemapRows() * tiles.tilemapColumns() - tiles.getTilesByType(assets.tile`burnt tree`).length
379
- spreadTimeBase = 4500 - (250 * windSpeed + 250 * dryGrass - 100 * tinder)
380
- if (spreadTimeBase >= 4000) {
381
- statusbar2.setColor(7, 2)
382
- } else if (spreadTimeBase >= 3000) {
383
- statusbar2.setColor(5, 2)
384
- } else if (spreadTimeBase >= 2000) {
385
- statusbar2.setColor(4, 2)
386
- } else {
387
- statusbar2.setColor(2, 2)
388
- }
389
- if (sprites.allOfKind(SpriteKind.Fire).length <= 0) {
390
- hud.fire_hud(false)
391
- info.setScore(statusbar.value / statusbar.max * 100)
392
- game.splash("You saved " + convertToText(info.score()) + "% of the forest!")
393
- game.over(true)
394
- } else {
395
- info.setScore(sprites.allOfKind(SpriteKind.Fire).length)
396
- }
397
- })
398
-
399
-
400
-
401
- namespace animation {
402
- /*
403
- * Loops the passed frames on the sprite at the given interval whenever
404
- * the specified rule is true for that sprite.
405
- *
406
- * If more than one rule applies, the most specific rule will be used.
407
- * If multiple rules are equally specific, the currently executing rule
408
- * is favored (or one is chosen at random).
409
- *
410
- * @param sprite the sprite to animate
411
- * @param frames the images that make up that animation
412
- * @param frame Interval the amount of time to spend on each frame in milliseconds
413
- * @param rule the rule that decides when this animation will play
414
- */
415
- //% blockId=arcade_character_loop_frames2
416
- //% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
417
- //% sprite.defl=mySprite
418
- //% frames.defl=Fire Plane Right
419
- //% sprite.shadow=variables_get
420
- //% frames.shadow=animation_editor
421
- //% frameInterval.shadow=timePicker
422
- //% rule.shadow=arcade_character_make_rule
423
- //% weight=100
424
- //% blockGap=8
425
- //% help=github:arcade-character-animations/docs/loop-character-animation
426
- export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
427
- characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
428
- }
429
- }
430
-
431
-
432
- namespace game {
433
-
434
- /*
435
- * Set the strength of your wind.
436
- * Higher numbers spread fire faster.
437
- */
438
- //% block="set strength of wind to $num"
439
- //% num.defl=3
440
- export function set_strength_of_wind (num: number) {
441
- windSpeed = num
442
- }
443
-
444
- /*
445
- * Set the health of your trees.
446
- * Lower numbers spread fire faster.
447
- */
448
- //% block="set health of trees to $num"
449
- //% num.defl=7
450
- export function set_health_of_trees (num: number) {
451
- tinder = num
452
- }
453
-
454
- /*
455
- * Set how dry your grass is.
456
- * Higher numbers spread fire faster.
457
- */
458
- //% block="set dryness of grass to $num"
459
- //% num.defl=3
460
- export function set_dryness_of_grass (num: number) {
461
- dryGrass = num
462
- }
463
- }
464
-
465
- //% color="#09282d" icon="\uf1e5"
466
- //% block="HUD"
467
- namespace hud {
468
-
469
- /*
470
- * Show or hide the current number of burning fires.
471
- */
472
- //% block="show fire HUD $answer"
473
- //% answer.shadow="toggleYesNo"
474
- //% answer.defl=true
475
- export function fire_hud (answer: boolean) {
476
-
477
- if (answer) {
478
- fireLabel.setFlag(SpriteFlag.Invisible, false)
479
- info.showScore(true)
480
- } else {
481
- fireLabel.setFlag(SpriteFlag.Invisible, true)
482
- info.showScore(false)
483
- }
484
-
485
- }
486
-
487
- /*
488
- * Show or hide how much of the forest has burned.
489
- */
490
- //% block="show forest HUD $answer"
491
- //% answer.shadow="toggleYesNo"
492
- //% answer.defl=true
493
- export function forest_hud (answer: boolean) {
494
-
495
- if (answer) {
496
- statusLabel.setFlag(SpriteFlag.Invisible, false)
497
- statusbar.setFlag(SpriteFlag.Invisible, false)
498
-
499
- } else {
500
- statusLabel.setFlag(SpriteFlag.Invisible, true)
501
- statusbar.setFlag(SpriteFlag.Invisible, true)
502
- }
503
-
504
- }
505
-
506
-
507
- /*
508
- * Show or hide the fire danger level.
509
- */
510
- //% block="show danger level HUD $answer"
511
- //% answer.shadow="toggleYesNo"
512
- //% answer.defl=true
513
- export function danger_hud (answer: boolean) {
514
-
515
- if (answer) {
516
- hudBG.setFlag(SpriteFlag.Invisible, false)
517
- statusbar2.setFlag(SpriteFlag.Invisible, false)
518
-
519
- } else {
520
- hudBG.setFlag(SpriteFlag.Invisible, true)
521
- statusbar2.setFlag(SpriteFlag.Invisible, true)
522
- }
523
-
524
- }
525
-
526
-
527
-
528
- /*
529
- * Set the color for remaining live forest
530
- */
531
- //% block="set color of healthy forest meter to $color"
532
- //% color.shadow="colorindexpicker"
533
- //% color.defl=3
534
- export function forest_hud_healthy (color: number) {
535
- healthyColor = color
536
- statusbar.setColor(healthyColor, burnedColor)
537
- }
538
-
539
- /*
540
- * Set the color for burned forest
541
- */
542
- //% block="set color of burned forest meter to $color"
543
- //% color.shadow="colorindexpicker"
544
- //% color.defl=2
545
- export function forest_hud_burned (color: number) {
546
- burnedColor = color
547
- statusbar.setColor(healthyColor, burnedColor)
548
- }
549
-
550
-
551
- /*
552
- * Set the label for the forest HUD
553
- */
554
- //% block="set forest HUD label to $name"
555
- //% name.defl="Healthy Forest"
556
- export function forest_hud_label (name: string) {
557
- statusLabel.setText(name)
558
- }
559
-
560
-
561
- /*
562
- * Set the label for the fire-counting HUD
563
- */
564
- //% block="set fire HUD label to $name"
565
- //% name.defl="Fires:"
566
- export function fire_hud_label (name: string) {
567
- fireLabel.setText(name)
568
- }
569
-
570
-
571
- /*
572
- * Set the label for the fire danger HUD
573
- */
574
- //% block="set danger HUD label to $name"
575
- //% name.defl="Fire Danger Levels"
576
- export function danger_hud_label (name: string) {
577
- statusbar2.setLabel(name)
578
- }
579
-
580
-
581
- }
582
-
583
- namespace sprites {
584
-
585
- /*
586
- * Set the number of "lives" for your sprite.
587
- */
588
- //% block="set strength of $thisSprite=variables_get(mySprite) to $num"
589
- //% num.defl=10
590
- export function set_flame_strength (thisSprite: Sprite, num: number) {
591
- sprites.setDataNumber(thisSprite, "life", num)
592
- sprites.setDataNumber(thisSprite, "spreadTime", spreadTimeBase + 1000)
593
- }
594
-
595
- /*
596
- * Add or remove "lives" from your sprite.
597
- */
598
- //% block="change strength of $thisSprite=variables_get(mySprite) by $num"
599
- //% num.defl=-1
600
- export function change_flame_strength_by (thisSprite: Sprite, num: number) {
601
- sprites.changeDataNumberBy(thisSprite, "life", num)
602
- for (let value of sprites.allOfKind(SpriteKind.Fire)) {
603
- if (sprites.readDataNumber(value, "life") <= 0) {
604
- effects.clearParticles(value)
605
- value.destroy()
606
- }
607
- }
608
- }
609
-
610
- /*
611
- * Choose a sprite to "spray" an image (in sprite form.)
612
- */
613
- //% block="spray from $thisSprite=variables_get(mySprite) using $img=screen_image_picker"
614
- //% img.defl=water
615
- export function spray (thisSprite: Sprite, img: Image) {
616
-
617
- if (controller.up.isPressed()) {
618
- if (controller.left.isPressed()) {
619
- facing = 225
620
- } else if (controller.right.isPressed()) {
621
- facing = 315
622
- } else if (controller.down.isPressed()) {
623
-
624
- } else {
625
- facing = 270
626
- }
627
- } else if (controller.left.isPressed()) {
628
- if (controller.right.isPressed()) {
629
-
630
- } else if (controller.down.isPressed()) {
631
- facing = 135
632
- } else {
633
- facing = 180
634
- }
635
- } else if (controller.right.isPressed()) {
636
- if (controller.down.isPressed()) {
637
- facing = 45
638
- } else {
639
- facing = 0
640
- }
641
- } else if (controller.down.isPressed()) {
642
- facing = 90
643
- }
644
-
645
- if (Math.abs(facing - hoseDirection) < 180) {
646
- if (facing < hoseDirection) {
647
- hoseDirection += 0 - changeRate
648
- } else {
649
- hoseDirection += changeRate
650
- }
651
- } else{
652
- if (facing < hoseDirection) {
653
- hoseDirection += changeRate
654
- } else {
655
- hoseDirection += 0 - changeRate
656
- }
657
- if (hoseDirection < 0) {
658
- hoseDirection += 360
659
- } else if (hoseDirection > 360) {
660
- hoseDirection += -360
661
- }
662
- hoseDirection = hoseDirection % 360
663
- }
664
- let waterProj = sprites.createProjectileFromSprite(img, thisSprite, 150 * Math.cos(spriteutils.degreesToRadians(hoseDirection)), 150 * Math.sin(spriteutils.degreesToRadians(hoseDirection)))
665
- waterProj.setKind(SpriteKind.Water)
666
- }
667
-
668
- /*
669
- * Spread current fires according to wind speed,
670
- * dryness of grass, and health of trees.
671
- */
672
- //% block="random spread $myImage=screen_image_picker"
673
- export function random_spread (myImage: Image) {
674
-
675
- for (let value of sprites.allOfKind(SpriteKind.Fire)) {
676
- if (sprites.readDataNumber(value, "life") <= 0) {
677
- effects.clearParticles(value)
678
- value.destroy()
679
- }
680
-
681
- let list2 = [-32,-16,0,16,32,16,-16]
682
- if (game.runtime() > sprites.readDataNumber(value, "spreadTime")) {
683
- sprites.setDataNumber(value, "spreadTime", game.runtime() + randint(spreadTimeBase, spreadTimeBase + 1000))
684
- let newFire = sprites.create(myImage, SpriteKind.Fire)
685
- newFire.setPosition(value.x + list2._pickRandom(), value.y)
686
- sprites.setDataNumber(newFire, "spreadTime", game.runtime() + randint(spreadTimeBase, spreadTimeBase + 1000))
687
- if (Math.percentChance(50)) {
688
- newFire.y += list2._pickRandom()
689
- }
690
- if (tiles.tileIsWall(tiles.locationOfSprite(newFire))) {
691
- newFire.setPosition(value.x, value.y)
692
- }
693
- }
694
- }
695
- }
696
-
697
- }
698
- ```
699
-
700
-
701
306
  ```assetjson
702
307
  {
703
308
  "README.md": " ",