@lewismoten/gamemaker-sandbox-tools 3.1.0 → 3.4.0

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 (343) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/NOTICE.md +105 -3
  3. package/README.md +301 -15
  4. package/dist/audio-files.js +82 -0
  5. package/dist/audio.js +23 -138
  6. package/dist/block-merge.js +43 -0
  7. package/dist/color-reduce.js +44 -0
  8. package/dist/colors.js +87 -0
  9. package/dist/delta.js +75 -0
  10. package/dist/disk-diff.js +220 -0
  11. package/dist/drawing.js +83 -869
  12. package/dist/embroidery/compile.js +85 -0
  13. package/dist/embroidery/dst.js +79 -0
  14. package/dist/embroidery/exp.js +26 -0
  15. package/dist/embroidery/fill.js +49 -0
  16. package/dist/embroidery/geom.js +82 -0
  17. package/dist/embroidery/pes.js +79 -0
  18. package/dist/embroidery/satin.js +29 -0
  19. package/dist/embroidery/simulate.js +30 -0
  20. package/dist/embroidery/strokeFont.js +253 -0
  21. package/dist/embroidery/svg.js +24 -0
  22. package/dist/embroidery/types.js +13 -0
  23. package/dist/embroidery/units.js +26 -0
  24. package/dist/embroidery/validate.js +15 -0
  25. package/dist/formats/blocks.js +1 -103
  26. package/dist/formats/character.js +1 -83
  27. package/dist/formats/cmf.js +1 -37
  28. package/dist/formats/fli.js +1 -296
  29. package/dist/formats/fliLimits.js +1 -54
  30. package/dist/formats/game.js +1 -193
  31. package/dist/formats/gif.js +1 -125
  32. package/dist/formats/graphicScripts.js +1 -44
  33. package/dist/formats/map.js +1 -38
  34. package/dist/formats/monster.js +1 -69
  35. package/dist/formats/palette.js +1 -58
  36. package/dist/formats/recording.js +1 -17
  37. package/dist/formats/sound.js +1 -44
  38. package/dist/formats/voc.js +1 -303
  39. package/dist/gif-shrink.js +56 -0
  40. package/dist/image/png.js +42 -0
  41. package/dist/images.js +81 -43
  42. package/dist/kit/actors.js +19 -0
  43. package/dist/kit/align.js +204 -0
  44. package/dist/kit/blit.js +45 -0
  45. package/dist/kit/blockRoles.js +97 -0
  46. package/dist/kit/clips.js +40 -0
  47. package/dist/kit/coverPaint.js +18 -0
  48. package/dist/kit/disk.js +76 -0
  49. package/dist/kit/fadeOut.js +13 -0
  50. package/dist/kit/fliClips.js +133 -0
  51. package/dist/kit/fliShrink.js +277 -0
  52. package/dist/kit/gameSim.js +235 -0
  53. package/dist/kit/hopBot.js +142 -0
  54. package/dist/kit/levelGen.js +1423 -0
  55. package/dist/kit/levelGrid.js +33 -0
  56. package/dist/kit/levelPicture.js +27 -0
  57. package/dist/kit/menuVersion.js +19 -0
  58. package/dist/kit/microText.js +35 -0
  59. package/dist/kit/mumble.js +74 -0
  60. package/dist/kit/music.js +8 -0
  61. package/dist/kit/palRamps.js +32 -0
  62. package/dist/kit/palette.js +49 -0
  63. package/dist/kit/pcText.js +72 -0
  64. package/dist/kit/photo.js +150 -0
  65. package/dist/kit/pixels.js +79 -0
  66. package/dist/kit/png.js +40 -0
  67. package/dist/kit/quantize.js +72 -0
  68. package/dist/kit/raytrace.js +379 -0
  69. package/dist/kit/recordedDemo.js +10 -0
  70. package/dist/kit/reel.js +77 -0
  71. package/dist/kit/road3d.js +67 -0
  72. package/dist/kit/routeChecks.js +8 -0
  73. package/dist/kit/saveSlots.js +11 -0
  74. package/dist/kit/sceneInit.js +13 -0
  75. package/dist/kit/sceneSim.js +112 -0
  76. package/dist/kit/screenText.js +15 -0
  77. package/dist/kit/sdftext.js +237 -0
  78. package/dist/kit/shading.js +69 -0
  79. package/dist/kit/song.js +251 -0
  80. package/dist/kit/songFx.js +179 -0
  81. package/dist/kit/sound.js +52 -0
  82. package/dist/kit/synthParts.js +20 -0
  83. package/dist/kit/tar.js +53 -0
  84. package/dist/kit/textBounds.js +84 -0
  85. package/dist/kit/textfit.js +246 -0
  86. package/dist/kit/transforms.js +57 -0
  87. package/dist/kit/tune.js +21 -0
  88. package/dist/look-alike.js +50 -0
  89. package/dist/menu-version.js +4 -0
  90. package/dist/mesh/colorBodies.js +137 -0
  91. package/dist/mesh/decimate.js +207 -0
  92. package/dist/mesh/meshCheck.js +51 -0
  93. package/dist/mesh/overhang.js +41 -0
  94. package/dist/mesh/sampledField.js +12 -0
  95. package/dist/mesh/stl.js +36 -0
  96. package/dist/mesh/surfaceNets.js +79 -0
  97. package/dist/mesh/tetraMesh.js +62 -0
  98. package/dist/mesh/threeMf.js +58 -0
  99. package/dist/mesh/zipFile.js +52 -0
  100. package/dist/microFont.js +101 -0
  101. package/dist/music/compose.js +72 -0
  102. package/dist/pack/meshPack.js +198 -0
  103. package/dist/pack/threeMfPack.js +92 -0
  104. package/dist/palette-reserve.js +116 -0
  105. package/dist/palettes.js +138 -0
  106. package/dist/release-notes.js +40 -0
  107. package/dist/simulation.js +16 -2774
  108. package/dist/text.js +74 -0
  109. package/dist/types/audio.d.ts +4 -0
  110. package/dist/types/audioFiles.d.ts +22 -0
  111. package/dist/types/audioWav.d.ts +4 -0
  112. package/dist/types/blockMerge.d.ts +24 -0
  113. package/dist/types/colorReduce.d.ts +23 -0
  114. package/dist/types/{web/packages/tools/src/colors.d.ts → colors.d.ts} +6 -0
  115. package/dist/types/delta.d.ts +32 -0
  116. package/dist/types/diskDiff.d.ts +47 -0
  117. package/dist/types/drawing.d.ts +15 -0
  118. package/dist/types/embroidery/compile.d.ts +3 -0
  119. package/dist/types/embroidery/dst.d.ts +13 -0
  120. package/dist/types/embroidery/exp.d.ts +8 -0
  121. package/dist/types/embroidery/fill.d.ts +6 -0
  122. package/dist/types/embroidery/geom.d.ts +19 -0
  123. package/dist/types/embroidery/pes.d.ts +10 -0
  124. package/dist/types/embroidery/satin.d.ts +11 -0
  125. package/dist/types/embroidery/simulate.d.ts +19 -0
  126. package/dist/types/embroidery/strokeFont.d.ts +20 -0
  127. package/dist/types/embroidery/svg.d.ts +3 -0
  128. package/dist/types/embroidery/types.d.ts +70 -0
  129. package/dist/types/embroidery/units.d.ts +10 -0
  130. package/dist/types/embroidery/validate.d.ts +22 -0
  131. package/dist/types/formats/blocks.d.ts +1 -0
  132. package/dist/types/formats/character.d.ts +1 -0
  133. package/dist/types/formats/cmf.d.ts +1 -0
  134. package/dist/types/formats/fli.d.ts +1 -0
  135. package/dist/types/formats/fliLimits.d.ts +1 -0
  136. package/dist/types/formats/game.d.ts +1 -0
  137. package/dist/types/formats/gif.d.ts +1 -0
  138. package/dist/types/formats/graphicScripts.d.ts +1 -0
  139. package/dist/types/formats/map.d.ts +1 -0
  140. package/dist/types/formats/monster.d.ts +1 -0
  141. package/dist/types/formats/palette.d.ts +1 -0
  142. package/dist/types/formats/recording.d.ts +1 -0
  143. package/dist/types/formats/sound.d.ts +1 -0
  144. package/dist/types/formats/voc.d.ts +1 -0
  145. package/dist/types/gifShrink.d.ts +8 -0
  146. package/dist/types/image/animatedGif.d.ts +9 -0
  147. package/dist/types/image/surface.d.ts +26 -0
  148. package/dist/types/images.d.ts +13 -0
  149. package/dist/types/kit/actors.d.ts +7 -0
  150. package/dist/types/kit/align.d.ts +93 -0
  151. package/dist/types/kit/audioEvents.d.ts +26 -0
  152. package/dist/types/kit/blit.d.ts +20 -0
  153. package/dist/types/kit/blockRoles.d.ts +243 -0
  154. package/dist/types/{games/kit → kit}/clips.d.ts +1 -1
  155. package/dist/types/kit/coverPaint.d.ts +7 -0
  156. package/dist/types/kit/disk.d.ts +15 -0
  157. package/dist/types/kit/fadeOut.d.ts +12 -0
  158. package/dist/types/kit/fliClips.d.ts +32 -0
  159. package/dist/types/kit/fliShrink.d.ts +149 -0
  160. package/dist/types/{games/kit → kit}/gameSim.d.ts +9 -5
  161. package/dist/types/kit/hopBot.d.ts +72 -0
  162. package/dist/types/kit/laserClearance.d.ts +16 -0
  163. package/dist/types/kit/laserJoints.d.ts +39 -0
  164. package/dist/types/kit/laserLayout.d.ts +54 -0
  165. package/dist/types/kit/laserPixels.d.ts +52 -0
  166. package/dist/types/kit/laserPreview.d.ts +9 -0
  167. package/dist/types/kit/laserSvg.d.ts +35 -0
  168. package/dist/types/kit/levelGen/castle.d.ts +17 -0
  169. package/dist/types/kit/levelGen/dungeon.d.ts +11 -0
  170. package/dist/types/kit/levelGen/forest.d.ts +17 -0
  171. package/dist/types/kit/levelGen/furnish.d.ts +31 -0
  172. package/dist/types/kit/levelGen/grid.d.ts +46 -0
  173. package/dist/types/kit/levelGen/index.d.ts +138 -0
  174. package/dist/types/kit/levelGen/interior.d.ts +18 -0
  175. package/dist/types/kit/levelGen/jumpModel.d.ts +78 -0
  176. package/dist/types/kit/levelGen/needs.d.ts +44 -0
  177. package/dist/types/kit/levelGen/overworld.d.ts +21 -0
  178. package/dist/types/kit/levelGen/platform.d.ts +59 -0
  179. package/dist/types/kit/levelGen/platformCap.d.ts +13 -0
  180. package/dist/types/kit/levelGen/platformReach.d.ts +37 -0
  181. package/dist/types/kit/levelGen/props.d.ts +37 -0
  182. package/dist/types/kit/levelGen/town.d.ts +24 -0
  183. package/dist/types/kit/levelGrid.d.ts +16 -0
  184. package/dist/types/kit/levelPicture.d.ts +9 -0
  185. package/dist/types/kit/menuVersion.d.ts +7 -0
  186. package/dist/types/kit/microText.d.ts +18 -0
  187. package/dist/types/kit/mumble.d.ts +41 -0
  188. package/dist/types/kit/music.d.ts +1 -0
  189. package/dist/types/kit/palMerge.d.ts +10 -0
  190. package/dist/types/kit/palRamps.d.ts +28 -0
  191. package/dist/types/kit/pcText.d.ts +19 -0
  192. package/dist/types/kit/photo.d.ts +69 -0
  193. package/dist/types/kit/png.d.ts +7 -0
  194. package/dist/types/kit/quantize.d.ts +20 -0
  195. package/dist/types/kit/raytrace.d.ts +169 -0
  196. package/dist/types/kit/recordedDemo.d.ts +1 -0
  197. package/dist/types/kit/road3d.d.ts +71 -0
  198. package/dist/types/kit/routeChecks.d.ts +6 -0
  199. package/dist/types/kit/saveSlots.d.ts +17 -0
  200. package/dist/types/kit/sceneInit.d.ts +11 -0
  201. package/dist/types/{games/kit → kit}/sceneSim.d.ts +5 -5
  202. package/dist/types/kit/screenText.d.ts +3 -0
  203. package/dist/types/kit/sdftext.d.ts +34 -0
  204. package/dist/types/kit/shading.d.ts +23 -0
  205. package/dist/types/kit/shareBlocks.d.ts +20 -0
  206. package/dist/types/kit/song.d.ts +89 -0
  207. package/dist/types/kit/songFx.d.ts +99 -0
  208. package/dist/types/kit/synthParts.d.ts +7 -0
  209. package/dist/types/kit/tar.d.ts +13 -0
  210. package/dist/types/kit/textfit.d.ts +74 -0
  211. package/dist/types/kit/transforms.d.ts +8 -0
  212. package/dist/types/lookAlike.d.ts +31 -0
  213. package/dist/types/menuVersionEntry.d.ts +1 -0
  214. package/dist/types/mesh/colorBodies.d.ts +18 -0
  215. package/dist/types/mesh/decimate.d.ts +10 -0
  216. package/dist/types/mesh/fieldTrinket.d.ts +40 -0
  217. package/dist/types/mesh/figureShapes.d.ts +24 -0
  218. package/dist/types/mesh/mesh.d.ts +9 -0
  219. package/dist/types/mesh/meshCheck.d.ts +22 -0
  220. package/dist/types/mesh/overhang.d.ts +24 -0
  221. package/dist/types/mesh/pixelFigure.d.ts +41 -0
  222. package/dist/types/mesh/sampledField.d.ts +3 -0
  223. package/dist/types/mesh/sdfShapes.d.ts +20 -0
  224. package/dist/types/mesh/stl.d.ts +9 -0
  225. package/dist/types/mesh/strokeText.d.ts +8 -0
  226. package/dist/types/mesh/surfaceNets.d.ts +14 -0
  227. package/dist/types/mesh/tetraMesh.d.ts +4 -0
  228. package/dist/types/mesh/threeMf.d.ts +12 -0
  229. package/dist/types/mesh/trinketKinds.d.ts +72 -0
  230. package/dist/types/mesh/trinketTool.d.ts +26 -0
  231. package/dist/types/mesh/voxel.d.ts +10 -0
  232. package/dist/types/mesh/zipFile.d.ts +13 -0
  233. package/dist/types/microFont.d.ts +6 -0
  234. package/dist/types/pack/meshPack.d.ts +26 -0
  235. package/dist/types/pack/threeMfPack.d.ts +11 -0
  236. package/dist/types/palettePresetData.d.ts +4 -0
  237. package/dist/types/palettePresets.d.ts +12 -0
  238. package/dist/types/paletteReserve.d.ts +52 -0
  239. package/dist/types/palettes.d.ts +4 -0
  240. package/dist/types/releaseNotes.d.ts +3 -0
  241. package/dist/types/simulation.d.ts +6 -0
  242. package/dist/types/{web/packages/tools/src/text.d.ts → text.d.ts} +6 -6
  243. package/package.json +145 -15
  244. package/dist/binary-D7wuaC5g.js +0 -120
  245. package/dist/pixels-DzfIIUOl.js +0 -76
  246. package/dist/types/games/kit/blit.d.ts +0 -10
  247. package/dist/types/games/kit/music.d.ts +0 -1
  248. package/dist/types/games/kit/pcText.d.ts +0 -8
  249. package/dist/types/games/kit/shading.d.ts +0 -11
  250. package/dist/types/web/packages/tools/src/audio.d.ts +0 -3
  251. package/dist/types/web/packages/tools/src/drawing.d.ts +0 -10
  252. package/dist/types/web/packages/tools/src/images.d.ts +0 -2
  253. package/dist/types/web/packages/tools/src/microFont.d.ts +0 -1
  254. package/dist/types/web/packages/tools/src/simulation.d.ts +0 -3
  255. package/dist/types/web/scripts/cdGames.d.ts +0 -103
  256. package/dist/types/web/scripts/gameShots.d.ts +0 -12
  257. package/dist/types/web/scripts/ogImage.d.ts +0 -21
  258. package/dist/types/web/src/audio/cmfLoad.d.ts +0 -7
  259. package/dist/types/web/src/audio/cmfPlayer.d.ts +0 -69
  260. package/dist/types/web/src/audio/context.d.ts +0 -12
  261. package/dist/types/web/src/audio/engine.d.ts +0 -39
  262. package/dist/types/web/src/audio/music.worklet.d.ts +0 -14
  263. package/dist/types/web/src/audio/opl.d.ts +0 -37
  264. package/dist/types/web/src/audio/output.d.ts +0 -13
  265. package/dist/types/web/src/desk/boxes/boxFacts.d.ts +0 -85
  266. package/dist/types/web/src/dosPlayer/fileExtensions.d.ts +0 -44
  267. package/dist/types/web/src/dosPlayer/patchRules.d.ts +0 -24
  268. package/dist/types/web/src/dosPlayer/patchTable.d.ts +0 -80
  269. package/dist/types/web/src/edition.d.ts +0 -6
  270. package/dist/types/web/src/eggs/eggState.d.ts +0 -26
  271. package/dist/types/web/src/eggs/eggs.d.ts +0 -31
  272. package/dist/types/web/src/engine/character.d.ts +0 -30
  273. package/dist/types/web/src/engine/funcKeys.d.ts +0 -33
  274. package/dist/types/web/src/engine/game.d.ts +0 -52
  275. package/dist/types/web/src/engine/keys.d.ts +0 -17
  276. package/dist/types/web/src/engine/machine.d.ts +0 -99
  277. package/dist/types/web/src/engine/menus.d.ts +0 -46
  278. package/dist/types/web/src/engine/monsters.d.ts +0 -19
  279. package/dist/types/web/src/engine/playGain.d.ts +0 -11
  280. package/dist/types/web/src/engine/playerLook.d.ts +0 -26
  281. package/dist/types/web/src/engine/recorder.d.ts +0 -60
  282. package/dist/types/web/src/engine/render.d.ts +0 -8
  283. package/dist/types/web/src/engine/scene.d.ts +0 -156
  284. package/dist/types/web/src/engine/scroll.d.ts +0 -16
  285. package/dist/types/web/src/engine/showGraphic.d.ts +0 -39
  286. package/dist/types/web/src/engine/slowPc.d.ts +0 -62
  287. package/dist/types/web/src/engine/touch.d.ts +0 -33
  288. package/dist/types/web/src/engine/world.d.ts +0 -215
  289. package/dist/types/web/src/export/gameAbout.d.ts +0 -15
  290. package/dist/types/web/src/formats/binary.d.ts +0 -44
  291. package/dist/types/web/src/formats/blocks.d.ts +0 -52
  292. package/dist/types/web/src/formats/character.d.ts +0 -65
  293. package/dist/types/web/src/formats/cmf.d.ts +0 -33
  294. package/dist/types/web/src/formats/fli.d.ts +0 -45
  295. package/dist/types/web/src/formats/fliLimits.d.ts +0 -13
  296. package/dist/types/web/src/formats/game.d.ts +0 -72
  297. package/dist/types/web/src/formats/gif.d.ts +0 -15
  298. package/dist/types/web/src/formats/graphicScripts.d.ts +0 -18
  299. package/dist/types/web/src/formats/highscore.d.ts +0 -10
  300. package/dist/types/web/src/formats/map.d.ts +0 -24
  301. package/dist/types/web/src/formats/monster.d.ts +0 -48
  302. package/dist/types/web/src/formats/palette.d.ts +0 -15
  303. package/dist/types/web/src/formats/recording.d.ts +0 -7
  304. package/dist/types/web/src/formats/sound.d.ts +0 -13
  305. package/dist/types/web/src/formats/voc.d.ts +0 -13
  306. package/dist/types/web/src/gfx/cp437Glyphs.d.ts +0 -2
  307. package/dist/types/web/src/gfx/font8x8.d.ts +0 -2
  308. package/dist/types/web/src/gfx/levelPicture.d.ts +0 -81
  309. package/dist/types/web/src/gfx/screen.d.ts +0 -46
  310. package/dist/types/web/src/gfx/titlePicture.d.ts +0 -21
  311. package/dist/types/web/src/input/chords.d.ts +0 -22
  312. package/dist/types/web/src/input/deskMouse.d.ts +0 -14
  313. package/dist/types/web/src/input/keyboard.d.ts +0 -39
  314. package/dist/types/web/src/input/scancodes.d.ts +0 -3
  315. package/dist/types/web/src/manual/printables/types.d.ts +0 -277
  316. package/dist/types/web/src/project/bizarre.d.ts +0 -28
  317. package/dist/types/web/src/project/companion.d.ts +0 -35
  318. package/dist/types/web/src/project/diskFacts.d.ts +0 -30
  319. package/dist/types/web/src/project/files.d.ts +0 -124
  320. package/dist/types/web/src/project/gameFiles.d.ts +0 -49
  321. package/dist/types/web/src/project/gamePack.d.ts +0 -17
  322. package/dist/types/web/src/project/health.d.ts +0 -30
  323. package/dist/types/web/src/project/secretGames.d.ts +0 -19
  324. package/dist/types/web/src/project/storage.d.ts +0 -46
  325. package/dist/types/web/src/project/streamGame.d.ts +0 -38
  326. package/dist/types/web/src/project/zip.d.ts +0 -33
  327. package/dist/types/web/src/retro/dos/disks.d.ts +0 -33
  328. package/dist/types/web/src/retro/text/cp437.d.ts +0 -4
  329. package/dist/types/web/src/seededRandom.d.ts +0 -6
  330. package/dist/types/web/src/tinHearts/deskHearts.d.ts +0 -33
  331. package/dist/types/web/src/tinHearts/manifest.d.ts +0 -30
  332. package/dist/types/web/src/tinHearts/tinHearts.d.ts +0 -84
  333. package/dist/types/web/src/walkthrough/format.d.ts +0 -92
  334. package/dist/types/web/src/walkthrough/madeUpScores.d.ts +0 -6
  335. package/dist/types/web/src/walkthrough/runtime.d.ts +0 -134
  336. /package/dist/types/{web/src/assistant → image}/png.d.ts +0 -0
  337. /package/dist/types/{games/kit → kit}/palette.d.ts +0 -0
  338. /package/dist/types/{games/kit → kit}/pixels.d.ts +0 -0
  339. /package/dist/types/{games/kit → kit}/reel.d.ts +0 -0
  340. /package/dist/types/{games/kit → kit}/sound.d.ts +0 -0
  341. /package/dist/types/{games/kit → kit}/textBounds.d.ts +0 -0
  342. /package/dist/types/{games/kit → kit}/tune.d.ts +0 -0
  343. /package/dist/types/{web/src/audio → music}/compose.d.ts +0 -0
@@ -1,48 +0,0 @@
1
- export declare const LASTMON = 64;
2
- export declare const LASTSL = 20;
3
- export declare const MAXMARCH = 10;
4
- export declare const MONSTER_SIZE = 300;
5
- export declare const NORMALMOVEMENT = 0;
6
- export declare const ATTACKMOVEMENT = 1;
7
- export interface March {
8
- /** Block offset from the previous corner (first corner: from the start). */
9
- x: number;
10
- y: number;
11
- /** Speed (pixels per tick) to move toward this corner; 0 ends the path. */
12
- pic: number;
13
- /** Picture orientation (0-7) while moving to this corner. */
14
- orient: number;
15
- }
16
- export interface Monster {
17
- used: number;
18
- /** Non-zero: monster is not affected by gravity (unused by playgame). */
19
- fly: number;
20
- jump: number;
21
- stick: number;
22
- /** Higher power kills lower power; >= 100 (CHARPOWER) can't be killed by touching the character. */
23
- power: number;
24
- /** Non-zero: monster stops at solid blocks. */
25
- thru: number;
26
- /** Animation: [block number (>= 100 ends), ticks to show] x 21. */
27
- pic: [number, number][];
28
- lasttime: number;
29
- /** Monster this becomes when it dies (64 = none). */
30
- newmon: number;
31
- /** Score bonus when killed by the character's weapons. */
32
- upscore: number;
33
- xtra: Uint8Array;
34
- /** 0 no attack path, 1 attack path is absolute, 2 relative to the character. */
35
- activate: number;
36
- /** -2 never dies, -1 dies after path, 0 dies when killed, > 0 lifetime in ticks. */
37
- end: number;
38
- /** 0 follow path, 1..63 toward the character at this speed (negative: away), >= 64 random (speed = towards >> 6). */
39
- towards: number;
40
- close: [number, number];
41
- /** [normal path, attack path], 10 corners each. */
42
- march: [March[], March[]];
43
- cur: March;
44
- }
45
- export declare function parseMonsters(bytes: Uint8Array): Monster[];
46
- export declare function serializeMonsters(mons: Monster[]): Uint8Array;
47
- export declare function emptyMonster(): Monster;
48
- export declare function newMonsterSet(): Monster[];
@@ -1,15 +0,0 @@
1
- export declare const PALETTE_SIZE: number;
2
- export type Palette = Uint8Array;
3
- export declare function parsePalette(bytes: Uint8Array): Palette;
4
- export declare function serializePalette(pal: Palette): Uint8Array;
5
- /** Expands 6-bit VGA components to packed 0xAABBGGRR values for ImageData/Uint32Array. */
6
- export declare function paletteToRGBA(pal: Palette): Uint32Array;
7
- export declare function vga8(v: number): number;
8
- export declare function paletteCss(pal: Palette, index: number): string;
9
- /**
10
- * Port of RGBdata::Match: the palette index whose color is closest to (r,g,b)
11
- * (6-bit components), by squared distance; first match wins ties.
12
- */
13
- export declare function matchColor(pal: Palette, r: number, g: number, b: number): number;
14
- /** Default palette GameMaker editors start with: a rainbow ramp plus grays (port of RainbowCols-ish). */
15
- export declare function defaultPalette(): Palette;
@@ -1,7 +0,0 @@
1
- export declare const RECLEN = 1000;
2
- export interface RecordedKey {
3
- delta: number;
4
- key: number;
5
- }
6
- export declare function parseRecording(bytes: Uint8Array): RecordedKey[];
7
- export declare function serializeRecording(keys: RecordedKey[]): Uint8Array;
@@ -1,13 +0,0 @@
1
- export declare const LASTSND = 30;
2
- export declare const NUMFREQ = 36;
3
- export declare const SOUND_NAMES: string[];
4
- export interface SoundSet {
5
- /** freqs[n] has NUMFREQ frequencies in Hz (0 = silence). */
6
- freqs: Uint16Array[];
7
- /** Digital .voc file name (without extension) for each effect, '' = use PC speaker. */
8
- digital: string[];
9
- digitalRaw: Uint8Array[];
10
- }
11
- export declare function parseSoundSet(bytes: Uint8Array): SoundSet;
12
- export declare function serializeSoundSet(s: SoundSet): Uint8Array;
13
- export declare function newSoundSet(): SoundSet;
@@ -1,13 +0,0 @@
1
- interface DecodedVoc {
2
- sampleRate: number;
3
- samples: Float32Array;
4
- }
5
- export declare function isVoc(bytes: Uint8Array): boolean;
6
- export declare function decodeVoc(bytes: Uint8Array): DecodedVoc;
7
- /**
8
- * Encodes mono samples (-1..1) as an 8-bit unsigned PCM Creative Voice File, the kind a
9
- * Sound Blaster plays. The rate is stored as a time constant, so it is rounded the way
10
- * the card did (11025 Hz is stored as 10,989 Hz: time constant 165, 1,000,000 / 91).
11
- */
12
- export declare function encodeVoc(samples: Float32Array, sampleRate?: number): Uint8Array;
13
- export {};
@@ -1,2 +0,0 @@
1
- /** The whole CP437 8x8 font: FONT8X8's ASCII plus GLYPHS, with NUL blank (256 x 8 rows, LSB = leftmost pixel). */
2
- export declare const FONT_CP437: Uint8Array;
@@ -1,2 +0,0 @@
1
- /** 256 glyphs x 8 rows; characters outside printable ASCII are drawn as a box. */
2
- export declare const FONT8X8: Uint8Array;
@@ -1,81 +0,0 @@
1
- import { type Game, type Point, type Scene } from '../formats/game.js';
2
- import { type Palette } from '../formats/palette.js';
3
- export interface LevelPicture {
4
- width: number;
5
- height: number;
6
- /** One palette index per pixel. */
7
- pixels: Uint8Array;
8
- palette: Palette;
9
- }
10
- /** A game's files by name (GameFiles fits). */
11
- export interface FileSource {
12
- get(name: string): Uint8Array | undefined;
13
- }
14
- /**
15
- * `cols` x `rows` blocks of a level's map centered on `at`, drawn the way the game draws
16
- * them: background blocks in the level's palette, placed monsters (first frame) and the
17
- * hero (first frame) standing on `at`. Undefined when the level has no map.
18
- */
19
- export declare function levelPixels(files: FileSource, scene: Scene, at: Point, cols?: number, rows?: number): LevelPicture | undefined;
20
- /**
21
- * The first few levels in the order the game reaches them, each with where the hero
22
- * arrives (some games begin with an "intro" level of lettering, or a dark one). A game
23
- * whose front end links nowhere: its first level, from the middle of the map.
24
- */
25
- export declare function firstLevels(game: Game, max?: number): Map<number, Point>;
26
- /** How interesting a picture is: plenty of colors, and not one color filling it (every 4th pixel looked at). */
27
- export declare function busyness(pic: LevelPicture): number;
28
- /** The most colorful of `pictures` (the first of equals), or undefined. */
29
- export declare function busiest(pictures: (LevelPicture | undefined)[]): LevelPicture | undefined;
30
- /** The pictures the build draws for each listed game (scripts/gameShots.ts): a home page tile's (8 x 5 blocks) and a screen's (16 x 10). */
31
- export declare const BUILT_SHOTS: readonly (readonly [number, number])[];
32
- /** Where the build puts a game's picture of `cols` x `rows` blocks. */
33
- export declare function builtShotPath(id: string, cols: number, rows: number): string;
34
- /** A game's picture: the most colorful of the first levels it reaches (renderShot's choice). */
35
- export declare function gamePicture(files: FileSource, game: Game, cols: number, rows: number): LevelPicture | undefined;
36
- /**
37
- * `w` x `h` blocks of a map from (`x`, `y`), as the game draws it: the background blocks in
38
- * the palette of the scene that uses the map, with its placed monsters on top (their first
39
- * animation frame). Undefined when no level uses the map, or its palette, map or blocks are missing.
40
- */
41
- export declare function mapPixels(files: FileSource, game: Game, mapName: string, x: number, y: number, w?: number, h?: number): LevelPicture | undefined;
42
- /**
43
- * `w` x `h` blocks of a scene's map from (`x`, `y`) in its own palette and blocks, with its
44
- * placed monsters (first frame). `cells` stands in for the map's background blocks (the
45
- * printed Level Maps draw the ground over what they hide). Undefined when the palette, map
46
- * or blocks are missing.
47
- */
48
- export declare function scenePixels(files: FileSource, scene: Scene, x: number, y: number, w?: number, h?: number, cells?: Uint8Array): LevelPicture | undefined;
49
- /** A view of a map: its name, the top-left block and the size in blocks. */
50
- export type MapView = [map: string, x: number, y: number, w: number, h: number];
51
- /**
52
- * The map views the build draws for an original game, from its box's screenshot spots: each
53
- * as a VGA screen (the box, the Game-Maker box, the manual cover) and the first as its disk
54
- * label's strip (desk/disks/diskLabel.ts).
55
- */
56
- export declare function builtMapViews(shots: readonly [string, number, number][] | undefined): MapView[];
57
- /** Where the build puts a map view's picture. */
58
- export declare function builtMapShotPath(id: string, [map, x, y, w, h]: MapView): string;
59
- /** A hero as a character file draws him: chr, cbl and pal file names, and which sequence (manual/printables Portrait). */
60
- export interface HeroSpec {
61
- chr: string;
62
- cbl: string;
63
- pal: string;
64
- seq?: number;
65
- }
66
- /** The hero an original game's paper shows (its hero sticker, else its ID card's portrait): the disk label and manual cover draw him. */
67
- export declare function heroOf(original: {
68
- printables?: {
69
- stickers?: {
70
- hero?: HeroSpec;
71
- }[];
72
- items?: {
73
- kind: string;
74
- portrait?: HeroSpec;
75
- }[];
76
- };
77
- } | undefined): HeroSpec | undefined;
78
- /** The hero as he stands in his first frame: top and bottom block, 20 x 40, TRANSPARENT around him. */
79
- export declare function heroPixels(files: FileSource, p: HeroSpec): LevelPicture | undefined;
80
- /** Where the build puts a game's hero (heroOf), when it drew him. */
81
- export declare function builtHeroPath(id: string): string;
@@ -1,46 +0,0 @@
1
- export declare const SIZEX = 320;
2
- export declare const SIZEY = 200;
3
- export declare class Screen {
4
- readonly pixels: Uint8Array<ArrayBuffer>;
5
- /** Palette currently shown by the "DAC" (6-bit components). */
6
- readonly palette: Uint8Array<ArrayBuffer>;
7
- readonly canvas: HTMLCanvasElement;
8
- private ctx;
9
- private image;
10
- private rgba;
11
- private lut;
12
- private dirty;
13
- constructor(canvas: HTMLCanvasElement);
14
- setPalette(pal: ArrayLike<number>): void;
15
- /** SetAllPalTo: every entry the same color. */
16
- setPaletteTo(r: number, g: number, b: number): void;
17
- setColor(index: number, r: number, g: number, b: number): void;
18
- private updateLut;
19
- markDirty(): void;
20
- present(): void;
21
- clear(col?: number): void;
22
- point(x: number, y: number, col: number): void;
23
- getCol(x: number, y: number): number;
24
- /** BoxFill: inclusive corners. */
25
- boxFill(x: number, y: number, x1: number, y1: number, col: number): void;
26
- /** Box: rectangle outline. */
27
- box(x: number, y: number, x1: number, y1: number, col: number): void;
28
- line(x0: number, y0: number, x1: number, y1: number, col: number): void;
29
- /**
30
- * GPutChar: transparent background, 8x8 glyph from the BIOS font (GetROMFont). That ROM font
31
- * holds only characters 0-127, and GPutChar takes a signed char (code/GM/GRAPHC.C), so 128-255
32
- * read whatever lies before the font: scribbles on a real VGA card. They draw nothing here.
33
- * (Text read from a file with TextDecoder('latin1') brings 0x80-0x9F as code points above 255.)
34
- */
35
- putChar(x: number, y: number, col: number, code: number): void;
36
- /** GWrite: '\n' moves to the next line at the starting column. */
37
- write(x: number, y: number, col: number, text: string): void;
38
- /** drawblk / BufDrawBlk: opaque 20x20 block, clipped. */
39
- drawBlock(x: number, y: number, pixels: Uint8Array): void;
40
- /** BufDrawSpBlk: transparent (255) sprite with one of 8 orientations, clipped. */
41
- drawSprite(x: number, y: number, orient: number, pixels: Uint8Array): void;
42
- /** Copies an indexed image (e.g. a GIF) with its top-left at (-sx, -sy). */
43
- drawImage(pixels: Uint8Array, width: number, height: number, sx?: number, sy?: number): void;
44
- snapshot(): Uint8Array;
45
- restore(snap: Uint8Array): void;
46
- }
@@ -1,21 +0,0 @@
1
- import { type Game } from '../formats/game.js';
2
- import { type FileSource, type LevelPicture } from './levelPicture.js';
3
- /**
4
- * The picture a graphic file shows: a GIF, a backdrop's window of one, an animation's last
5
- * frame, or the slide a slide list holds longest (its title, after the logos); text pages
6
- * (.txt) draw over whatever is up, so they have none. Splash screens and blank pictures are left out.
7
- */
8
- export declare function graphicPixels(files: FileSource, name: string, depth?: number): LevelPicture | undefined;
9
- /**
10
- * A game's title screen, 320 x 200: its title graphic (a slide list's title slide), or its
11
- * menu screen when it has none of its own (many shareware games show only a menu backdrop).
12
- * Undefined when it has neither, or they can't be read.
13
- */
14
- export declare function titlePixels(files: FileSource, game: Game): LevelPicture | undefined;
15
- /** Where the build puts a listed game's title screen (scripts/gameShots.ts). */
16
- export declare function builtTitlePath(id: string): string;
17
- /**
18
- * The files a game's title screen needs, fetched one by one (a slide list's slides, a
19
- * backdrop's GIF): for a page that has only the .gam so far.
20
- */
21
- export declare function titleSource(game: Game, fetch: (name: string) => Promise<Uint8Array | undefined>): Promise<FileSource>;
@@ -1,22 +0,0 @@
1
- /** The DOM key codes of the four arrow keys (the keypad's own 8 4 6 2 never chord). */
2
- export declare const ARROW_CODES: Record<string, number>;
3
- /**
4
- * Turns the arrow keys physically held into the keys the game should see held.
5
- * `bound` says whether the game uses a key; chords whose key it doesn't use stay plain arrows.
6
- */
7
- export declare function chordKeys(held: ReadonlySet<number>, bound: (scan: number) => boolean): Set<number>;
8
- /**
9
- * Tracks the arrows held and the keys the game was told about, and returns the scan code
10
- * events (bit 7 set = released) that take the game from what it saw to what it should see.
11
- * Releases come before presses, so the game never sees a chord and its arrows held at once.
12
- */
13
- export declare class ArrowChords {
14
- bound: (scan: number) => boolean;
15
- private held;
16
- private shown;
17
- constructor(bound?: (scan: number) => boolean);
18
- /** An arrow key went down or up; returns the events for the game. */
19
- arrow(scan: number, pressed: boolean): number[];
20
- /** Forgets everything (focus lost: the keyboard lets go of every key). */
21
- reset(): void;
22
- }
@@ -1,14 +0,0 @@
1
- /** dx, dy in 320x200 screen pixels (fractions allowed); buttons: 1 = left, 2 = right. */
2
- type DeskMouseListener = (dx: number, dy: number, buttons: number) => void;
3
- /** Listens to the desk mouse; returns the function that stops listening. */
4
- export declare function listenDeskMouse(f: DeskMouseListener): () => void;
5
- /** The desk mouse rolled by (dx, dy) screen pixels with these buttons down. */
6
- export declare function deskMouse(dx: number, dy: number, buttons: number): void;
7
- /** Moves a pointer by whole pixels, keeping the fractions for next time. */
8
- export declare class Mickeys {
9
- private rx;
10
- private ry;
11
- /** Whole pixels to move now for a roll of (dx, dy). */
12
- take(dx: number, dy: number): [number, number];
13
- }
14
- export {};
@@ -1,39 +0,0 @@
1
- import { ArrowChords } from './chords.js';
2
- export interface TypedKey {
3
- scan: number;
4
- /** ASCII code (0 for extended keys such as arrows). */
5
- ascii: number;
6
- /** The DOM key, for text entry. */
7
- key: string;
8
- }
9
- export declare class Keyboard {
10
- /** Scan code events; bit 7 set = released. */
11
- readonly events: number[];
12
- readonly typed: TypedKey[];
13
- readonly down: Set<number>;
14
- private target?;
15
- private waiters;
16
- /** Two arrows held together stand for the keypad key between them when the game binds it. */
17
- readonly chords: ArrowChords;
18
- /** Which keys the game binds, for arrow chords (none: arrows stay arrows). */
19
- set chordable(bound: ((scan: number) => boolean) | undefined);
20
- private onDown;
21
- private onUp;
22
- private onBlur;
23
- attach(target?: EventTarget): void;
24
- detach(): void;
25
- private handle;
26
- /** One scan code event for the game (an arrow chord's press or release). */
27
- private apply;
28
- /** Simulates a key event (touch controls, gamepad, demo playback). */
29
- inject(scan: number, pressed: boolean): void;
30
- /** Queues a recorded scan code as-is (demo playback while a screen waits for a key). */
31
- feed(scan: number): void;
32
- releaseAll(): void;
33
- /** bioskey(1)/bioskey(0): peek or take the next typed key. */
34
- peekKey(): TypedKey | undefined;
35
- readKey(): TypedKey | undefined;
36
- clear(): void;
37
- /** Resolves on the next key press. */
38
- nextPress(): Promise<void>;
39
- }
@@ -1,3 +0,0 @@
1
- export declare const SCAN: Record<string, number>;
2
- export declare function scanToAscii(scan: number): number;
3
- export declare function scanName(scan: number): string;
@@ -1,277 +0,0 @@
1
- /** Extras every game gets, made from its catalog entry, manual and disk files. */
2
- export type GeneratedKind = 'postcard' | 'keycard' | 'catalog' | 'bbs' | 'warranty' | 'newsletter' | 'hintoffer' | 'stickers' | 'worldmap' | 'levelmaps';
3
- /** A spot on a map, in blocks (0-99), with a label. */
4
- interface MapMark {
5
- x: number;
6
- y: number;
7
- label: string;
8
- /** 'secret' marks print as a red star; 'start' as a green arrow; anything else a numbered dot. */
9
- kind?: 'secret' | 'start' | 'goal' | 'shop' | 'note';
10
- }
11
- /** A window onto one of the game's .map files, drawn from the real blocks. */
12
- export interface MapPanel {
13
- map: string;
14
- x: number;
15
- y: number;
16
- w: number;
17
- h: number;
18
- caption?: string;
19
- marks?: MapMark[];
20
- /** The map is a course through the wrap: drawn as the run the player rides, in columns (levelCoursePoster.ts), not as the window. */
21
- course?: boolean;
22
- }
23
- interface ItemBase {
24
- /** The name in the "What's in the box" tray. */
25
- title: string;
26
- /** True when the manual promises it to registered players (it shows a "Registered" seal). */
27
- promised?: boolean;
28
- /** One line under the title in the tray. */
29
- note?: string;
30
- }
31
- /** A printed map or poster: one or more map windows with marks and a legend. */
32
- export interface MapItem extends ItemBase {
33
- kind: 'map';
34
- heading?: string;
35
- intro?: string;
36
- /** The first panel spans the sheet; the rest sit `columns` to a row (default 2). */
37
- panels: MapPanel[];
38
- columns?: 1 | 2;
39
- /** Footnotes under the map. */
40
- legend?: string[];
41
- landscape?: boolean;
42
- }
43
- /** A hint book. Answers are printed under red noise; read them through the red film. */
44
- export interface HintBookItem extends ItemBase {
45
- kind: 'hintbook';
46
- intro?: string;
47
- /** What the cover shows, when the automatic pick (hintCoverArt.ts) is poor. */
48
- cover?: HintCover;
49
- sections: {
50
- head: string;
51
- hints: {
52
- q: string;
53
- a: string;
54
- sketch?: HintSketch;
55
- }[];
56
- }[];
57
- }
58
- /**
59
- * A hint book cover's art. `hero`: a character file (its scene's blocks and palette are
60
- * found), or the three files. `scene`: "title" (the title screen), a GIF of the game's, or a
61
- * map window [map, x, y] (16 x 10 blocks). Colors are CSS colors; the box's are the default.
62
- */
63
- export interface HintCover {
64
- hero?: string | Portrait;
65
- scene?: string | [map: string, x: number, y: number];
66
- background?: string;
67
- accent?: string;
68
- }
69
- /**
70
- * A little drawing printed under the red film below a hint's answer: `rows` of cells, one
71
- * character each (see SKETCH_GLYPHS in redFilm.ts: # wall, = brick, : faint seam, X the
72
- * spot, @ you, T tree, o round thing, ~ water, . path, > < v ^ arrows, - | lines, space
73
- * nothing), and `labels` written in at a cell (x across, y down).
74
- */
75
- export interface HintSketch {
76
- rows: string[];
77
- labels?: {
78
- x: number;
79
- y: number;
80
- text: string;
81
- }[];
82
- }
83
- /** A typed or handwritten letter. body is simple HTML (<p>, <b>, <i>). */
84
- export interface LetterItem extends ItemBase {
85
- kind: 'letter';
86
- letterhead?: string;
87
- /** Second line of the letterhead (an address in the game's world). */
88
- address?: string;
89
- date?: string;
90
- to?: string;
91
- body: string;
92
- signature: string;
93
- /** 'type' (typewriter), 'hand' (handwriting) or 'print' (laser printer, the default). */
94
- style?: 'type' | 'hand' | 'print';
95
- }
96
- /** A newspaper front page from the game's world. */
97
- export interface NewspaperItem extends ItemBase {
98
- kind: 'newspaper';
99
- masthead: string;
100
- date: string;
101
- price?: string;
102
- headline: string;
103
- deck?: string;
104
- /** Simple HTML, one entry per column. */
105
- columns: string[];
106
- /** An optional photo: a window onto a map. */
107
- photo?: MapPanel;
108
- /** Small stories along the bottom: [headline, text]. */
109
- briefs?: [string, string][];
110
- }
111
- /** Diary or ledger pages. */
112
- export interface JournalItem extends ItemBase {
113
- kind: 'journal';
114
- heading?: string;
115
- entries: {
116
- date: string;
117
- html: string;
118
- }[];
119
- }
120
- /** The hero from a .CHR file: the first frame of a sequence (0 = standing). */
121
- export interface Portrait {
122
- chr: string;
123
- cbl: string;
124
- pal: string;
125
- seq?: number;
126
- }
127
- /** An ID card, license or membership card from the game's world. */
128
- export interface IdCardItem extends ItemBase {
129
- kind: 'idcard';
130
- org: string;
131
- name: string;
132
- role: string;
133
- fields: [string, string][];
134
- /** Card color and ink. */
135
- color?: string;
136
- ink?: string;
137
- /** Photo: a map window centered on the hero (2x2 blocks works well). */
138
- photo?: MapPanel;
139
- /** Or the hero himself, from his character file (drawn over `photo` if both are given). */
140
- portrait?: Portrait;
141
- /** Text on the back of the card. */
142
- back?: string;
143
- }
144
- /** Tables on paper: a chart, a price list, a world list. */
145
- export interface ChartItem extends ItemBase {
146
- kind: 'chart';
147
- heading?: string;
148
- intro?: string;
149
- tables: {
150
- head: string;
151
- note?: string;
152
- columns: string[];
153
- rows: string[][];
154
- }[];
155
- }
156
- /** A fold-out star chart: a hub, sectors around it, worlds in each sector. */
157
- export interface StarChartItem extends ItemBase {
158
- kind: 'starchart';
159
- heading: string;
160
- hub: {
161
- name: string;
162
- note?: string;
163
- };
164
- sectors: {
165
- name: string;
166
- /** What opens the sector (e.g. "Ruby + Amber"). */
167
- gate?: string;
168
- color?: string;
169
- worlds: {
170
- name: string;
171
- kind?: string;
172
- holds?: string;
173
- }[];
174
- }[];
175
- /** Extra notes in the margin. */
176
- notes?: string[];
177
- /** A map window printed as an inset ("as seen from the pod"). */
178
- inset?: MapPanel;
179
- }
180
- /**
181
- * A recipe card: a ruled index card in a cook's hand, its lines numbered (a footnote mark
182
- * where a line has a note), the notes on the back, an optional rubber stamp across the front.
183
- * `blank` lines print as a numbered rule with nothing on it.
184
- */
185
- export interface RecipeItem extends ItemBase {
186
- kind: 'recipe';
187
- heading: string;
188
- serves?: string;
189
- lines: {
190
- n: number;
191
- name: string;
192
- line: string;
193
- note?: string;
194
- }[];
195
- blank?: number[];
196
- stamp?: string;
197
- /** A last line on the back, under the notes. */
198
- back?: string;
199
- }
200
- export type PrintableItem = MapItem | HintBookItem | LetterItem | NewspaperItem | JournalItem | IdCardItem | ChartItem | StarChartItem | RecipeItem;
201
- /** A sticker on the sticker sheet. */
202
- export interface StickerSpec {
203
- text: string;
204
- /** Small text under the main text. */
205
- sub?: string;
206
- /**
207
- * circle, rect, star (a seal), badge, heart, burst (a comic-book bang), bubble (a speech
208
- * balloon), or cut: cut out round the picture's own outline, its words on a plate under it.
209
- */
210
- shape?: 'circle' | 'rect' | 'star' | 'badge' | 'heart' | 'burst' | 'bubble' | 'cut';
211
- color?: string;
212
- ink?: string;
213
- /** A picture from a map (a few blocks). */
214
- shot?: MapPanel;
215
- /** A monster or thing drawn from the game's own block file. */
216
- sprite?: SpriteArt;
217
- /** A character from his .CHR file, standing (drawn instead of `sprite`). */
218
- hero?: Portrait;
219
- /** A die-cut's size: each pixel of its picture prints this many 1/150 inch (default: about 1.3" tall). */
220
- px?: number;
221
- /** Leave it out of the little cut-outs that fill the sheet's gaps. */
222
- noMini?: boolean;
223
- }
224
- /** Blocks from a .mbl, .cbl or .bbl file laid out in a grid: rows of block numbers (-1 = empty). */
225
- export interface SpriteArt {
226
- blocks: string;
227
- pal: string;
228
- grid: number[][];
229
- /**
230
- * The plain ground block a background thing is drawn on (or a grid of them, like `grid`): its
231
- * pixels round the thing are cut away. "edge" cuts away the colors along the picture's edge instead
232
- * (for a thing on speckled ground).
233
- */
234
- under?: number | number[][] | 'edge';
235
- /** Facing the other way. */
236
- flip?: boolean;
237
- }
238
- /** A story for The Sandbox Scoop newsletter. */
239
- interface NewsStory {
240
- head: string;
241
- html: string;
242
- /** Also run it in the other games' newsletters (it doesn't talk about this box). */
243
- everywhere?: boolean;
244
- }
245
- /**
246
- * How the player's World Map groups scenes into places. Each group's first scene is the place;
247
- * the rest are folded into it (no picture of their own) and listed on its land. A scene is a
248
- * number, a range ("9-18"), or a name only one scene has. Scenes shown under an all-black
249
- * palette fold into their place without being named here (worldMapGroups.ts).
250
- */
251
- export interface WorldMapHints {
252
- groups?: {
253
- scenes: (number | string)[];
254
- /** The place's name on the map (default: its scene's). */
255
- name?: string;
256
- /** What its land lists (default: the folded scenes' numbers and names). */
257
- labels?: string[];
258
- }[];
259
- }
260
- /** games/<id>/printables.json */
261
- export interface PrintablesFile {
262
- /** Generated extras this game does without. */
263
- skip?: GeneratedKind[];
264
- /** The game's own extras, in tray order (after the manual). */
265
- items?: PrintableItem[];
266
- /** Key card wording, by key as Game-Maker names it ("Space", "Z", "Up", "F2"). */
267
- keys?: Record<string, string>;
268
- /** Stickers added to the sticker sheet. */
269
- stickers?: StickerSpec[];
270
- /** Stories this game adds to The Sandbox Scoop. */
271
- news?: NewsStory[];
272
- /** A one-line pitch for the publisher catalog (defaults to the blurb). */
273
- pitch?: string;
274
- /** The World Map's places (see WorldMapHints). */
275
- worldMap?: WorldMapHints;
276
- }
277
- export {};
@@ -1,28 +0,0 @@
1
- /** The artist and publisher on the Bard's games. */
2
- export declare const BARD = "The Bard of Bizarre";
3
- /** How many of the Bard's games it takes for them to get a collection of their own. */
4
- export declare const BIZARRE_MIN = 4;
5
- interface Listed {
6
- original?: unknown;
7
- series?: string;
8
- company?: string;
9
- }
10
- /** One of the Bard's games: marked "series": "bizarre", or (a catalog built before the field) published under his name. */
11
- export declare const isBizarreGame: (g: Listed) => boolean;
12
- /** Whether the Bard's games have a collection of their own in this catalog. */
13
- export declare const hasBizarreTab: (catalog: readonly Listed[]) => boolean;
14
- /** The Bard's collections in order (the flyer's and the home tab's), each game with its one-line pitch for the flyer. */
15
- export declare const COLLECTIONS: {
16
- name: string;
17
- tag: string;
18
- games: Record<string, string>;
19
- }[];
20
- /** The Bard's games sorted into his collections (in the collection's order); games not filed yet last, under `More song-games`. */
21
- export declare function byCollection<G extends {
22
- id: string;
23
- }>(games: readonly G[]): {
24
- name: string;
25
- tag?: string;
26
- games: G[];
27
- }[];
28
- export {};