@datamoc/mw_games 0.15.0 → 0.17.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 (139) hide show
  1. package/CHANGELOG.md +154 -1
  2. package/README.md +21 -1
  3. package/dist/ai/lua.d.ts.map +1 -1
  4. package/dist/ai/lua.js +1 -0
  5. package/dist/ai/lua.js.map +1 -1
  6. package/dist/core/ActionJournal.d.ts +5 -0
  7. package/dist/core/ActionJournal.d.ts.map +1 -1
  8. package/dist/core/ActionJournal.js +12 -1
  9. package/dist/core/ActionJournal.js.map +1 -1
  10. package/dist/core/Clone.d.ts +31 -0
  11. package/dist/core/Clone.d.ts.map +1 -0
  12. package/dist/core/Clone.js +84 -0
  13. package/dist/core/Clone.js.map +1 -0
  14. package/dist/core/Collection.d.ts +1 -0
  15. package/dist/core/Collection.d.ts.map +1 -1
  16. package/dist/core/Collection.js +6 -2
  17. package/dist/core/Collection.js.map +1 -1
  18. package/dist/core/HttpTransport.d.ts +17 -0
  19. package/dist/core/HttpTransport.d.ts.map +1 -1
  20. package/dist/core/HttpTransport.js +61 -0
  21. package/dist/core/HttpTransport.js.map +1 -1
  22. package/dist/core/Multiplayer.d.ts +9 -0
  23. package/dist/core/Multiplayer.d.ts.map +1 -1
  24. package/dist/core/Multiplayer.js +48 -4
  25. package/dist/core/Multiplayer.js.map +1 -1
  26. package/dist/core/News.d.ts.map +1 -1
  27. package/dist/core/News.js +1 -2
  28. package/dist/core/News.js.map +1 -1
  29. package/dist/core/Sanitize.d.ts +19 -0
  30. package/dist/core/Sanitize.d.ts.map +1 -1
  31. package/dist/core/Sanitize.js +37 -0
  32. package/dist/core/Sanitize.js.map +1 -1
  33. package/dist/core/Save.d.ts +18 -9
  34. package/dist/core/Save.d.ts.map +1 -1
  35. package/dist/core/Save.js +37 -21
  36. package/dist/core/Save.js.map +1 -1
  37. package/dist/core/SaveSync.js +4 -4
  38. package/dist/core/SaveSync.js.map +1 -1
  39. package/dist/core/Settings.d.ts.map +1 -1
  40. package/dist/core/Settings.js +2 -1
  41. package/dist/core/Settings.js.map +1 -1
  42. package/dist/core/State.d.ts.map +1 -1
  43. package/dist/core/State.js +8 -7
  44. package/dist/core/State.js.map +1 -1
  45. package/dist/core/StoredValue.d.ts +1 -1
  46. package/dist/core/StoredValue.d.ts.map +1 -1
  47. package/dist/core/StoredValue.js +3 -2
  48. package/dist/core/StoredValue.js.map +1 -1
  49. package/dist/core/Telemetry.d.ts +19 -1
  50. package/dist/core/Telemetry.d.ts.map +1 -1
  51. package/dist/core/Telemetry.js +26 -1
  52. package/dist/core/Telemetry.js.map +1 -1
  53. package/dist/core/index.d.ts +2 -1
  54. package/dist/core/index.d.ts.map +1 -1
  55. package/dist/core/index.js +2 -1
  56. package/dist/core/index.js.map +1 -1
  57. package/dist/mw_games.global.js +107 -107
  58. package/dist/mwl/MapFile.js +11 -1
  59. package/dist/mwl/MapFile.js.map +1 -1
  60. package/dist/mwl/expression.js +38 -5
  61. package/dist/mwl/expression.js.map +1 -1
  62. package/dist/mwl/fengari.d.ts +8 -0
  63. package/dist/mwl/fengari.d.ts.map +1 -1
  64. package/dist/mwl/fengari.js +72 -2
  65. package/dist/mwl/fengari.js.map +1 -1
  66. package/dist/mwl/persistence.d.ts.map +1 -1
  67. package/dist/mwl/persistence.js +2 -1
  68. package/dist/mwl/persistence.js.map +1 -1
  69. package/dist/mwl/runtime.d.ts.map +1 -1
  70. package/dist/mwl/runtime.js +6 -1
  71. package/dist/mwl/runtime.js.map +1 -1
  72. package/dist/rpg/Marshal.d.ts.map +1 -1
  73. package/dist/rpg/Marshal.js +13 -0
  74. package/dist/rpg/Marshal.js.map +1 -1
  75. package/dist/simulation/Campaign.d.ts.map +1 -1
  76. package/dist/simulation/Campaign.js +9 -5
  77. package/dist/simulation/Campaign.js.map +1 -1
  78. package/dist/simulation/Harness.d.ts.map +1 -1
  79. package/dist/simulation/Harness.js +2 -1
  80. package/dist/simulation/Harness.js.map +1 -1
  81. package/dist/simulation/Runtime.d.ts +10 -0
  82. package/dist/simulation/Runtime.d.ts.map +1 -1
  83. package/dist/simulation/Runtime.js +25 -4
  84. package/dist/simulation/Runtime.js.map +1 -1
  85. package/dist/testing/index.d.ts +105 -0
  86. package/dist/testing/index.d.ts.map +1 -0
  87. package/dist/testing/index.js +134 -0
  88. package/dist/testing/index.js.map +1 -0
  89. package/dist/two-d/render/RpgmAutotile.d.ts +217 -0
  90. package/dist/two-d/render/RpgmAutotile.d.ts.map +1 -1
  91. package/dist/two-d/render/RpgmAutotile.js +756 -0
  92. package/dist/two-d/render/RpgmAutotile.js.map +1 -1
  93. package/dist/two-d/render/TileMap.d.ts +90 -0
  94. package/dist/two-d/render/TileMap.d.ts.map +1 -1
  95. package/dist/two-d/render/TileMap.js +319 -31
  96. package/dist/two-d/render/TileMap.js.map +1 -1
  97. package/dist/two-d/render/index.d.ts +3 -3
  98. package/dist/two-d/render/index.d.ts.map +1 -1
  99. package/dist/two-d/render/index.js +1 -1
  100. package/dist/two-d/render/index.js.map +1 -1
  101. package/dist/version.d.ts +1 -1
  102. package/dist/version.js +1 -1
  103. package/package.json +90 -25
  104. package/sbom.cdx.json +5589 -0
  105. package/tools/benchmark-browser.d.mts +33 -0
  106. package/tools/benchmark-browser.mjs +163 -0
  107. package/tools/benchmark-history.d.mts +8 -0
  108. package/tools/benchmark-history.mjs +31 -0
  109. package/tools/browser-smoke.d.mts +30 -0
  110. package/tools/browser-smoke.mjs +167 -0
  111. package/tools/bundle-size.d.mts +11 -0
  112. package/tools/bundle-size.mjs +138 -0
  113. package/tools/csp.d.mts +7 -0
  114. package/tools/csp.mjs +56 -0
  115. package/tools/emit-page.d.mts +44 -0
  116. package/tools/emit-page.mjs +188 -0
  117. package/tools/extract-rgssad.d.mts +5 -0
  118. package/tools/extract-rgssad.mjs +64 -0
  119. package/tools/find-chrome.d.mts +7 -0
  120. package/tools/find-chrome.mjs +104 -0
  121. package/tools/i18n-edit.d.mts +29 -0
  122. package/tools/i18n-edit.mjs +748 -0
  123. package/tools/make-example-assets.d.mts +2 -0
  124. package/tools/make-example-assets.mjs +727 -0
  125. package/tools/multiplayer-server.d.mts +27 -0
  126. package/tools/multiplayer-server.mjs +195 -0
  127. package/tools/mwl.mjs +1 -0
  128. package/tools/sbom.d.mts +83 -0
  129. package/tools/sbom.mjs +330 -0
  130. package/tools/vendored/rgssad-wasm/LICENSE-MIT +21 -0
  131. package/tools/vendored/rgssad-wasm/README.md +15 -0
  132. package/tools/vendored/rgssad-wasm/package.json +17 -0
  133. package/tools/vendored/rgssad-wasm/rgssad_wasm.d.ts +41 -0
  134. package/tools/vendored/rgssad-wasm/rgssad_wasm.js +6 -0
  135. package/tools/vendored/rgssad-wasm/rgssad_wasm_bg.js +399 -0
  136. package/tools/vendored/rgssad-wasm/rgssad_wasm_bg.wasm +0 -0
  137. package/tools/vendored/rgssad-wasm/rgssad_wasm_bg.wasm.d.ts +17 -0
  138. package/tools/vite.d.mts +17 -0
  139. package/tools/vite.mjs +83 -0
@@ -1 +1 @@
1
- {"version":3,"file":"RpgmAutotile.js","sourceRoot":"","sources":["../../../src/two-d/render/RpgmAutotile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RpgmAutotile.js","sourceRoot":"","sources":["../../../src/two-d/render/RpgmAutotile.ts"],"names":[],"mappings":"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CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;CACD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC/D;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;IACD;QACC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACN;CACD,CAAC;AAKF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IACjE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACzD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACjH,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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"}
@@ -1,6 +1,7 @@
1
1
  import { Container } from 'pixi.js';
2
2
  import type { SpriteSheet } from './SpriteSheet.ts';
3
3
  import type { Camera } from './Camera.ts';
4
+ import type { RpgmAutotileShapeTable, RpgmAutotileSlot } from './RpgmAutotile.ts';
4
5
  /**
5
6
  * The frame value meaning "nothing here"; a cell holding it gets no sprite at all.
6
7
  *
@@ -96,6 +97,43 @@ export interface TileMapOptions {
96
97
  */
97
98
  heightStep?: number;
98
99
  }
100
+ /**
101
+ * Which engine family an autotile sheet comes from: RPG Maker MV's A1-A4
102
+ * quadrant sheets, or RPG Maker XP's 96 by 128 pattern templates (and 32px
103
+ * single-tile strips).
104
+ */
105
+ export type AutotileFormat = 'rpgm-mv' | 'rpgm-xp';
106
+ /**
107
+ * One autotile source a layer draws from. MV sets name an A-sheet family;
108
+ * XP sets name one autotile image. A layer takes one set, or one per family
109
+ * slot (MV) or image index (XP), and each cell routes to the set claiming
110
+ * its id - the same split a multi-sheet map already uses for plain layers.
111
+ */
112
+ export interface AutotileSet {
113
+ /** the raw source image: an MV A-sheet of 48px cells, or one XP autotile image */
114
+ sheet: SpriteSheet;
115
+ /** which family; MV quadrant sheets unless 'rpgm-xp' says otherwise */
116
+ format?: AutotileFormat;
117
+ /** MV only, required: which A-family (0-3) this sheet is */
118
+ slot?: RpgmAutotileSlot;
119
+ /** MV only: which shape table to sample; floor for slots 0-1, wall for 2-3 */
120
+ mode?: 'floor' | 'wall';
121
+ /** MV only: a custom shape table, overriding mode for non-standard sheets */
122
+ table?: RpgmAutotileShapeTable;
123
+ /** XP only: which autotile image this sheet is, 0-7 */
124
+ index?: number;
125
+ /** XP only: animation stripes in the image; counted from the sheet width when omitted */
126
+ frames?: number;
127
+ /** MV only: kind runs advancing together when the frame changes (water, waterfalls) */
128
+ animation?: ReadonlyArray<ReadonlyArray<number>>;
129
+ /** the layer's initial animation frame */
130
+ animationFrame?: number;
131
+ }
132
+ /**
133
+ * One autotile cell: a raw MV tile id or XP tile value. EMPTY (or any
134
+ * value at or below zero) leaves the cell blank.
135
+ */
136
+ export type AutotileCell = number;
99
137
  /**
100
138
  * A grid of tiles, drawn as sprites.
101
139
  *
@@ -173,6 +211,53 @@ export declare class TileMap extends Container {
173
211
  * `tileFrame` packs rather than plain indices.
174
212
  */
175
213
  addLayer(name: string, data?: ArrayLike<number>): this;
214
+ private beginLayer;
215
+ /**
216
+ * Adds an autotile layer on top of the existing ones: each non-blank cell
217
+ * holds a raw MV tile id or XP tile value, and the map assembles that
218
+ * cell's quadrant halves straight from the source sheet - no prebuilt
219
+ * atlas canvas in between. Cells route to the set claiming their id, so
220
+ * one layer can span every A-sheet (or every autotile image) the same way
221
+ * one plain layer can span several sheets.
222
+ *
223
+ * @param cells one raw id per cell, row-major; EMPTY (or at/below zero)
224
+ * for a blank cell. Every other value must fall in one of the sets'
225
+ * ranges, or the call throws naming it.
226
+ * @param set one source, or one per family slot (MV) or image index (XP).
227
+ *
228
+ * @example
229
+ * ```ts
230
+ * import { TileMap, SpriteSheet, type AutotileSet } from '@datamoc/mw_games/two-d/render';
231
+ *
232
+ * declare const sheet: SpriteSheet; // a raw MV A1 sheet: 48px cells, slot 0
233
+ *
234
+ * const map = new TileMap({ width: 4, height: 4, sheet });
235
+ * const sea: AutotileSet = { sheet, slot: 0, animation: [[0, 1, 2]] };
236
+ * map.addAutotileLayer('sea', new Array(16).fill(2048), sea);
237
+ * map.setAutotileFrame('sea', 1);
238
+ * console.log(map.getAutotileFrame('sea')); // 1
239
+ * console.log(map.getTile('sea', 0, 0)); // 2048 - raw MV ids, EMPTY where blank
240
+ * ```
241
+ */
242
+ addAutotileLayer(name: string, cells: ArrayLike<number>, set: AutotileSet | readonly AutotileSet[]): this;
243
+ /**
244
+ * Advances an autotile layer's animation frame: every animated cell
245
+ * re-points its quadrant textures (MV kind cycles, XP frame stripes)
246
+ * while cells outside any cycle stay on frame zero's art. A repeated
247
+ * frame is a no-op.
248
+ */
249
+ setAutotileFrame(layer: string | number, frame: number): void;
250
+ /** the animation frame an autotile layer currently shows */
251
+ getAutotileFrame(layer: string | number): number;
252
+ private resolveAutotileSet;
253
+ private resolveRpgmSet;
254
+ private resolveXpSet;
255
+ private claimAutotileSets;
256
+ private autotilePieces;
257
+ private makeAutotileSprites;
258
+ private setAutotileCell;
259
+ private eachCellSprite;
260
+ private firstCellSprite;
176
261
  private layerAt;
177
262
  private chunkIndex;
178
263
  /** the centre of a cell's tile, before the projections below settle on a shared contract */
@@ -185,6 +270,11 @@ export declare class TileMap extends Container {
185
270
  private textureFor;
186
271
  private buildSprite;
187
272
  getTile(layer: string | number, x: number, y: number): number;
273
+ /**
274
+ * Replaces one cell. On an autotile layer the value is a raw autotile id
275
+ * rather than a frame index; EMPTY (or any value at or below zero)
276
+ * clears the cell there too.
277
+ */
188
278
  setTile(layer: string | number, x: number, y: number, frame: number): void;
189
279
  /** fills a whole layer at once, which is what loading a map does */
190
280
  setLayerData(layer: string | number, data: ArrayLike<number>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TileMap.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/TileMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TileMap.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/TileMap.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { Container, Graphics } from 'pixi.js';
1
+ import { Container, Graphics, Rectangle, Texture } from 'pixi.js';
2
2
  import { TintedSprite } from './TintedSprite.js';
3
3
  import { hexToPixel, pixelToHex } from '../../core/Hex.js';
4
+ import { assertAutotileLayout, autotileCellParts, rpgmAutotileSlot, xpAutotileRef, RPGM_FLOOR_AUTOTILE_TABLE, RPGM_WALL_AUTOTILE_TABLE, } from './RpgmAutotile.js';
4
5
  /**
5
6
  * The frame value meaning "nothing here"; a cell holding it gets no sprite at all.
6
7
  *
@@ -192,44 +193,320 @@ export class TileMap extends Container {
192
193
  * `tileFrame` packs rather than plain indices.
193
194
  */
194
195
  addLayer(name, data) {
196
+ const { cells, container, chunks } = this.beginLayer(name, data?.length);
197
+ const layer = {
198
+ kind: 'tiles',
199
+ name,
200
+ data: data ? Int32Array.from(data) : new Int32Array(cells).fill(EMPTY),
201
+ sprites: new Array(cells).fill(null),
202
+ container,
203
+ };
204
+ this.layers.push(layer);
205
+ this.layersByName.set(name, layer);
206
+ this.chunks.push(chunks);
207
+ this.addChild(container);
208
+ //sprites are built after registration so setTile can find the layer
209
+ const isBottom = this.layers.length === 1;
210
+ for (let y = 0; y < this.heightInTiles; y++) {
211
+ for (let x = 0; x < this.widthInTiles; x++) {
212
+ const frame = layer.data[this.index(x, y)];
213
+ if (frame !== EMPTY)
214
+ this.buildSprite(layer, x, y, frame);
215
+ //faces belong to the block, which the bottom layer defines; upper
216
+ //layers ride the same lift through buildSprite but draw no faces
217
+ if (isBottom)
218
+ this.syncFaces(x, y);
219
+ }
220
+ }
221
+ return this;
222
+ }
223
+ beginLayer(name, length) {
195
224
  if (this.layersByName.has(name))
196
225
  throw new Error(`this map already has a layer named "${name}"`);
197
226
  const cells = this.widthInTiles * this.heightInTiles;
198
- if (data && data.length !== cells) {
199
- throw new Error(`layer "${name}" has ${data.length} cells, but the map has ${cells}`);
227
+ if (length !== undefined && length !== cells) {
228
+ throw new Error(`layer "${name}" has ${length} cells, but the map has ${cells}`);
200
229
  }
201
230
  const container = new Container();
202
- const chunkContainers = [];
231
+ const chunks = [];
203
232
  for (let i = 0; i < this.chunkColumns * this.chunkRows; i++) {
204
233
  const chunk = new Container();
205
- chunkContainers.push(chunk);
234
+ chunks.push(chunk);
206
235
  container.addChild(chunk);
207
236
  }
237
+ return { cells, container, chunks };
238
+ }
239
+ /**
240
+ * Adds an autotile layer on top of the existing ones: each non-blank cell
241
+ * holds a raw MV tile id or XP tile value, and the map assembles that
242
+ * cell's quadrant halves straight from the source sheet - no prebuilt
243
+ * atlas canvas in between. Cells route to the set claiming their id, so
244
+ * one layer can span every A-sheet (or every autotile image) the same way
245
+ * one plain layer can span several sheets.
246
+ *
247
+ * @param cells one raw id per cell, row-major; EMPTY (or at/below zero)
248
+ * for a blank cell. Every other value must fall in one of the sets'
249
+ * ranges, or the call throws naming it.
250
+ * @param set one source, or one per family slot (MV) or image index (XP).
251
+ *
252
+ * @example
253
+ * ```ts
254
+ * import { TileMap, SpriteSheet, type AutotileSet } from '@datamoc/mw_games/two-d/render';
255
+ *
256
+ * declare const sheet: SpriteSheet; // a raw MV A1 sheet: 48px cells, slot 0
257
+ *
258
+ * const map = new TileMap({ width: 4, height: 4, sheet });
259
+ * const sea: AutotileSet = { sheet, slot: 0, animation: [[0, 1, 2]] };
260
+ * map.addAutotileLayer('sea', new Array(16).fill(2048), sea);
261
+ * map.setAutotileFrame('sea', 1);
262
+ * console.log(map.getAutotileFrame('sea')); // 1
263
+ * console.log(map.getTile('sea', 0, 0)); // 2048 - raw MV ids, EMPTY where blank
264
+ * ```
265
+ */
266
+ addAutotileLayer(name, cells, set) {
267
+ const entries = Array.isArray(set) ? set : [set];
268
+ if (entries.length === 0)
269
+ throw new Error(`autotile layer "${name}" needs at least one set`);
270
+ const { cells: total, container, chunks } = this.beginLayer(name, cells.length);
271
+ const sets = entries.map((entry, position) => this.resolveAutotileSet(name, entry, position));
272
+ const claimed = new Set();
273
+ for (const resolved of sets) {
274
+ const key = resolved.layout.format === 'rpgm-mv'
275
+ ? `slot ${resolved.layout.slot}`
276
+ : `autotile ${resolved.layout.index}`;
277
+ if (claimed.has(key))
278
+ throw new Error(`autotile layer "${name}" has two sets for ${key}`);
279
+ claimed.add(key);
280
+ }
281
+ let frame = 0;
282
+ entries.forEach((entry, position) => {
283
+ const initial = entry.animationFrame ?? 0;
284
+ if (!Number.isInteger(initial) || initial < 0) {
285
+ throw new Error(`autotile layer "${name}" set ${position} starts at an invalid animation frame, got ${entry.animationFrame}`);
286
+ }
287
+ if (position === 0)
288
+ frame = initial;
289
+ else if (initial !== frame) {
290
+ throw new Error(`autotile layer "${name}" sets disagree on their initial animation frame (${frame} vs ${initial})`);
291
+ }
292
+ });
293
+ const data = Int32Array.from(cells);
294
+ for (let cell = 0; cell < total; cell++) {
295
+ if (data[cell] > 0)
296
+ this.claimAutotileSets(sets, name, data[cell]);
297
+ }
208
298
  const layer = {
299
+ kind: 'autotile',
209
300
  name,
210
- data: data ? Int32Array.from(data) : new Int32Array(cells).fill(EMPTY),
211
- sprites: new Array(cells).fill(null),
301
+ data,
302
+ sprites: new Array(total).fill(null),
212
303
  container,
304
+ sets,
305
+ frame,
213
306
  };
214
307
  this.layers.push(layer);
215
308
  this.layersByName.set(name, layer);
216
- this.chunks.push(chunkContainers);
309
+ this.chunks.push(chunks);
217
310
  this.addChild(container);
218
- //sprites are built after registration so setTile can find the layer
311
+ //sprites are built after registration so the claim above stays the only check
219
312
  const isBottom = this.layers.length === 1;
220
313
  for (let y = 0; y < this.heightInTiles; y++) {
221
314
  for (let x = 0; x < this.widthInTiles; x++) {
222
- const frame = layer.data[this.index(x, y)];
223
- if (frame !== EMPTY)
224
- this.buildSprite(layer, x, y, frame);
225
- //faces belong to the block, which the bottom layer defines; upper
226
- //layers ride the same lift through buildSprite but draw no faces
315
+ const at = this.index(x, y);
316
+ const tile = data[at];
317
+ if (tile <= 0)
318
+ continue;
319
+ layer.sprites[at] = this.makeAutotileSprites(layer, this.claimAutotileSets(sets, name, tile), x, y, tile);
227
320
  if (isBottom)
228
321
  this.syncFaces(x, y);
229
322
  }
230
323
  }
231
324
  return this;
232
325
  }
326
+ /**
327
+ * Advances an autotile layer's animation frame: every animated cell
328
+ * re-points its quadrant textures (MV kind cycles, XP frame stripes)
329
+ * while cells outside any cycle stay on frame zero's art. A repeated
330
+ * frame is a no-op.
331
+ */
332
+ setAutotileFrame(layer, frame) {
333
+ const target = this.layerAt(layer);
334
+ if (target.kind !== 'autotile')
335
+ throw new Error(`layer "${target.name}" is not an autotile layer`);
336
+ if (!Number.isInteger(frame) || frame < 0) {
337
+ throw new Error(`an autotile animation frame must be an integer at or above zero, got ${frame}`);
338
+ }
339
+ if (target.frame === frame)
340
+ return;
341
+ target.frame = frame;
342
+ for (let y = 0; y < this.heightInTiles; y++) {
343
+ for (let x = 0; x < this.widthInTiles; x++) {
344
+ const cell = this.index(x, y);
345
+ const tile = target.data[cell];
346
+ if (tile <= 0)
347
+ continue;
348
+ const set = this.claimAutotileSets(target.sets, target.name, tile);
349
+ const pieces = this.autotilePieces(set, tile, frame);
350
+ const sprites = target.sprites[cell];
351
+ if (!sprites)
352
+ continue;
353
+ for (let i = 0; i < sprites.length; i++)
354
+ sprites[i].texture = pieces.textures[i];
355
+ }
356
+ }
357
+ }
358
+ /** the animation frame an autotile layer currently shows */
359
+ getAutotileFrame(layer) {
360
+ const target = this.layerAt(layer);
361
+ if (target.kind !== 'autotile')
362
+ throw new Error(`layer "${target.name}" is not an autotile layer`);
363
+ return target.frame;
364
+ }
365
+ resolveAutotileSet(layerName, entry, position) {
366
+ const where = `autotile layer "${layerName}" set ${position}`;
367
+ if (!entry || !entry.sheet)
368
+ throw new Error(`${where} needs a source sheet`);
369
+ const format = entry.format ?? 'rpgm-mv';
370
+ if (format !== 'rpgm-mv' && format !== 'rpgm-xp')
371
+ throw new Error(`${where} has an unknown format "${entry.format}"`);
372
+ if (format === 'rpgm-mv')
373
+ return this.resolveRpgmSet(where, entry);
374
+ return this.resolveXpSet(where, entry);
375
+ }
376
+ resolveRpgmSet(where, entry) {
377
+ if (entry.slot === undefined)
378
+ throw new Error(`${where} needs a slot (0-3) for its MV sheet`);
379
+ if (entry.mode !== undefined && entry.mode !== 'floor' && entry.mode !== 'wall') {
380
+ throw new Error(`${where} has an unknown mode "${entry.mode}"`);
381
+ }
382
+ if (entry.animation !== undefined && !Array.isArray(entry.animation)) {
383
+ throw new Error(`${where} animation must list kind runs, got ${typeof entry.animation}`);
384
+ }
385
+ const mode = entry.mode ?? (entry.slot < 2 ? 'floor' : 'wall');
386
+ const layout = {
387
+ format: 'rpgm-mv',
388
+ slot: entry.slot,
389
+ table: entry.table ?? (mode === 'floor' ? RPGM_FLOOR_AUTOTILE_TABLE : RPGM_WALL_AUTOTILE_TABLE),
390
+ cycles: entry.animation ?? [],
391
+ };
392
+ assertAutotileLayout(layout);
393
+ return {
394
+ sheet: entry.sheet,
395
+ layout,
396
+ cache: new Map(),
397
+ claims: (tile) => rpgmAutotileSlot(tile) === entry.slot,
398
+ };
399
+ }
400
+ resolveXpSet(where, entry) {
401
+ const index = entry.index ?? 0;
402
+ const texture = entry.sheet.texture;
403
+ //a 32px-tall strip holds whole animated tiles rather than a quadrant
404
+ //template; anything else must be the 128px template (the 192px
405
+ //expanded-corner variant stays game-side, unsupported here)
406
+ const single = texture.height === 32;
407
+ if (texture.height !== 32 && texture.height !== 128) {
408
+ throw new Error(`${where} is ${texture.height}px tall - XP autotile images are 128px templates or 32px single-tile strips`);
409
+ }
410
+ const stripe = single ? 32 : 96;
411
+ const frames = entry.frames ?? Math.max(1, Math.floor(texture.width / stripe));
412
+ const layout = { format: 'rpgm-xp', index, frames, single };
413
+ assertAutotileLayout(layout);
414
+ if (frames > Math.floor(texture.width / stripe)) {
415
+ throw new Error(`${where} asks for ${frames} frames but its sheet fits ${Math.floor(texture.width / stripe)}`);
416
+ }
417
+ return {
418
+ sheet: entry.sheet,
419
+ layout,
420
+ cache: new Map(),
421
+ claims: (tile) => {
422
+ const ref = xpAutotileRef(tile);
423
+ return ref !== null && ref.index === index;
424
+ },
425
+ };
426
+ }
427
+ claimAutotileSets(sets, layerName, tile) {
428
+ for (const set of sets) {
429
+ if (set.claims(tile))
430
+ return set;
431
+ }
432
+ throw new Error(`tile ${tile} in autotile layer "${layerName}" matches none of its sets`);
433
+ }
434
+ autotilePieces(set, tile, frame) {
435
+ const key = `${tile}:${frame}`;
436
+ const cached = set.cache.get(key);
437
+ if (cached)
438
+ return cached;
439
+ //tile > 0 is established by every caller, so these parts exist
440
+ const parts = autotileCellParts(set.layout, tile, frame);
441
+ const textures = parts.map((part) => new Texture({
442
+ source: set.sheet.texture.source,
443
+ frame: new Rectangle(part.sourceX, part.sourceY, part.sourceWidth, part.sourceHeight),
444
+ }));
445
+ const pieces = { parts, textures };
446
+ set.cache.set(key, pieces);
447
+ return pieces;
448
+ }
449
+ makeAutotileSprites(layer, set, x, y, tile) {
450
+ const cell = this.index(x, y);
451
+ const pieces = this.autotilePieces(set, tile, layer.frame);
452
+ const origin = this.cellOrigin(x, y);
453
+ const lift = this.cellHeight[cell] * this.heightStep;
454
+ const made = pieces.textures.map((texture, i) => {
455
+ const part = pieces.parts[i];
456
+ const sprite = new TintedSprite(texture);
457
+ sprite.x = origin.x + part.destX * this.tileWidth;
458
+ sprite.y = origin.y - lift + part.destY * this.tileHeight;
459
+ sprite.scale.set((part.destWidth * this.tileWidth) / part.sourceWidth, (part.destHeight * this.tileHeight) / part.sourceHeight);
460
+ sprite.tint = this.cellTint[cell];
461
+ sprite.colorAdd = this.cellAdd[cell];
462
+ return sprite;
463
+ });
464
+ const chunk = this.chunks[this.layers.indexOf(layer)][this.chunkIndex(x, y)];
465
+ for (const sprite of made)
466
+ chunk.addChild(sprite);
467
+ return made;
468
+ }
469
+ setAutotileCell(layer, x, y, tile) {
470
+ const cell = this.index(x, y);
471
+ layer.data[cell] = tile;
472
+ const existing = layer.sprites[cell];
473
+ if (tile <= 0) {
474
+ if (existing)
475
+ for (const sprite of existing)
476
+ sprite.destroy();
477
+ layer.sprites[cell] = null;
478
+ return;
479
+ }
480
+ const set = this.claimAutotileSets(layer.sets, layer.name, tile);
481
+ const pieces = this.autotilePieces(set, tile, layer.frame);
482
+ if (existing && existing.length === pieces.textures.length) {
483
+ for (let i = 0; i < existing.length; i++)
484
+ existing[i].texture = pieces.textures[i];
485
+ return;
486
+ }
487
+ if (existing)
488
+ for (const sprite of existing)
489
+ sprite.destroy();
490
+ layer.sprites[cell] = this.makeAutotileSprites(layer, set, x, y, tile);
491
+ }
492
+ eachCellSprite(layer, cell, apply) {
493
+ const entry = layer.sprites[cell];
494
+ if (!entry)
495
+ return;
496
+ if (Array.isArray(entry)) {
497
+ for (const sprite of entry)
498
+ apply(sprite);
499
+ }
500
+ else {
501
+ apply(entry);
502
+ }
503
+ }
504
+ firstCellSprite(layer, cell) {
505
+ const entry = layer.sprites[cell];
506
+ if (!entry)
507
+ return null;
508
+ return Array.isArray(entry) ? entry[0] : entry;
509
+ }
233
510
  layerAt(layer) {
234
511
  const found = typeof layer === 'number' ? this.layers[layer] : this.layersByName.get(layer);
235
512
  if (!found)
@@ -312,6 +589,11 @@ export class TileMap extends Container {
312
589
  return EMPTY;
313
590
  return this.layerAt(layer).data[this.index(x, y)];
314
591
  }
592
+ /**
593
+ * Replaces one cell. On an autotile layer the value is a raw autotile id
594
+ * rather than a frame index; EMPTY (or any value at or below zero)
595
+ * clears the cell there too.
596
+ */
315
597
  setTile(layer, x, y, frame) {
316
598
  if (!this.inside(x, y))
317
599
  return;
@@ -319,17 +601,22 @@ export class TileMap extends Container {
319
601
  const cell = this.index(x, y);
320
602
  if (target.data[cell] === frame)
321
603
  return;
322
- target.data[cell] = frame;
323
- const existing = target.sprites[cell];
324
- if (frame === EMPTY) {
325
- existing?.destroy();
326
- target.sprites[cell] = null;
327
- }
328
- else if (existing) {
329
- existing.texture = this.textureFor(frame);
604
+ if (target.kind === 'autotile') {
605
+ this.setAutotileCell(target, x, y, frame);
330
606
  }
331
607
  else {
332
- this.buildSprite(target, x, y, frame);
608
+ target.data[cell] = frame;
609
+ const existing = target.sprites[cell];
610
+ if (frame === EMPTY) {
611
+ existing?.destroy();
612
+ target.sprites[cell] = null;
613
+ }
614
+ else if (existing) {
615
+ existing.texture = this.textureFor(frame);
616
+ }
617
+ else {
618
+ this.buildSprite(target, x, y, frame);
619
+ }
333
620
  }
334
621
  //faces follow the bottom layer: no tile there, no block to side
335
622
  if (this.layers[0] === target)
@@ -362,11 +649,10 @@ export class TileMap extends Container {
362
649
  this.cellTint[cell] = tint;
363
650
  this.cellAdd[cell] = add;
364
651
  for (const layer of this.layers) {
365
- const sprite = layer.sprites[cell];
366
- if (sprite) {
652
+ this.eachCellSprite(layer, cell, (sprite) => {
367
653
  sprite.tint = tint;
368
654
  sprite.colorAdd = add;
369
- }
655
+ });
370
656
  }
371
657
  const face = this.faces[cell];
372
658
  if (face)
@@ -405,12 +691,14 @@ export class TileMap extends Container {
405
691
  const cell = this.index(x, y);
406
692
  if (this.cellHeight[cell] === height)
407
693
  return;
694
+ //a delta keeps each sprite's own offset inside its cell, so the four
695
+ //quadrant halves of an autotile ride up together with plain tiles
696
+ const rise = (height - this.cellHeight[cell]) * this.heightStep;
408
697
  this.cellHeight[cell] = height;
409
- const lift = height * this.heightStep;
410
698
  for (const layer of this.layers) {
411
- const sprite = layer.sprites[cell];
412
- if (sprite)
413
- sprite.y = this.cellOrigin(x, y).y - lift;
699
+ this.eachCellSprite(layer, cell, (sprite) => {
700
+ sprite.y -= rise;
701
+ });
414
702
  }
415
703
  this.syncFaces(x, y);
416
704
  }
@@ -445,7 +733,7 @@ export class TileMap extends Container {
445
733
  this.faces[cell] = face;
446
734
  //behind the cell's own top, after everything drawn above it on screen
447
735
  const chunk = this.chunks[0][this.chunkIndex(x, y)];
448
- const top = this.layers[0].sprites[cell];
736
+ const top = this.firstCellSprite(this.layers[0], cell);
449
737
  if (top)
450
738
  chunk.addChildAt(face, chunk.getChildIndex(top));
451
739
  else