@the-inclusionist/engine 8.0.0 → 10.0.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 (756) hide show
  1. package/README.md +89 -78
  2. package/app/css/style.css +584 -374
  3. package/app/public/vendor/fonts/bitter-var-ext.woff2 +0 -0
  4. package/app/public/vendor/fonts/bitter-var.woff2 +0 -0
  5. package/app/public/vendor/fonts/bodonimoda-var-ext.woff2 +0 -0
  6. package/app/public/vendor/fonts/bodonimoda-var.woff2 +0 -0
  7. package/app/public/vendor/fonts/cat-abril_fatface-400-ext.woff2 +0 -0
  8. package/app/public/vendor/fonts/cat-abril_fatface-400.woff2 +0 -0
  9. package/app/public/vendor/fonts/cat-adlam_display-400-ext.woff2 +0 -0
  10. package/app/public/vendor/fonts/cat-adlam_display-400.woff2 +0 -0
  11. package/app/public/vendor/fonts/cat-agu_display-400-ext.woff2 +0 -0
  12. package/app/public/vendor/fonts/cat-agu_display-400.woff2 +0 -0
  13. package/app/public/vendor/fonts/cat-alfa_slab_one-400-ext.woff2 +0 -0
  14. package/app/public/vendor/fonts/cat-alfa_slab_one-400.woff2 +0 -0
  15. package/app/public/vendor/fonts/cat-are_you_serious-400-ext.woff2 +0 -0
  16. package/app/public/vendor/fonts/cat-are_you_serious-400.woff2 +0 -0
  17. package/app/public/vendor/fonts/cat-asimovian-400-ext.woff2 +0 -0
  18. package/app/public/vendor/fonts/cat-asimovian-400.woff2 +0 -0
  19. package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400-ext.woff2 +0 -0
  20. package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400.woff2 +0 -0
  21. package/app/public/vendor/fonts/cat-bakbak_one-400-ext.woff2 +0 -0
  22. package/app/public/vendor/fonts/cat-bakbak_one-400.woff2 +0 -0
  23. package/app/public/vendor/fonts/cat-bangers-400-ext.woff2 +0 -0
  24. package/app/public/vendor/fonts/cat-bangers-400.woff2 +0 -0
  25. package/app/public/vendor/fonts/cat-barriecito-400-ext.woff2 +0 -0
  26. package/app/public/vendor/fonts/cat-barriecito-400.woff2 +0 -0
  27. package/app/public/vendor/fonts/cat-berkshire_swash-400-ext.woff2 +0 -0
  28. package/app/public/vendor/fonts/cat-berkshire_swash-400.woff2 +0 -0
  29. package/app/public/vendor/fonts/cat-bevan-400-ext.woff2 +0 -0
  30. package/app/public/vendor/fonts/cat-bevan-400.woff2 +0 -0
  31. package/app/public/vendor/fonts/cat-bitcount-400-ext.woff2 +0 -0
  32. package/app/public/vendor/fonts/cat-bitcount-400.woff2 +0 -0
  33. package/app/public/vendor/fonts/cat-bowlby_one_sc-400-ext.woff2 +0 -0
  34. package/app/public/vendor/fonts/cat-bowlby_one_sc-400.woff2 +0 -0
  35. package/app/public/vendor/fonts/cat-bungee_shade-400-ext.woff2 +0 -0
  36. package/app/public/vendor/fonts/cat-bungee_shade-400.woff2 +0 -0
  37. package/app/public/vendor/fonts/cat-charm-400-ext.woff2 +0 -0
  38. package/app/public/vendor/fonts/cat-charm-400.woff2 +0 -0
  39. package/app/public/vendor/fonts/cat-charm-700-ext.woff2 +0 -0
  40. package/app/public/vendor/fonts/cat-charm-700.woff2 +0 -0
  41. package/app/public/vendor/fonts/cat-cherry_bomb_one-400-ext.woff2 +0 -0
  42. package/app/public/vendor/fonts/cat-cherry_bomb_one-400.woff2 +0 -0
  43. package/app/public/vendor/fonts/cat-chokokutai-400-ext.woff2 +0 -0
  44. package/app/public/vendor/fonts/cat-chokokutai-400.woff2 +0 -0
  45. package/app/public/vendor/fonts/cat-chonburi-400-ext.woff2 +0 -0
  46. package/app/public/vendor/fonts/cat-chonburi-400.woff2 +0 -0
  47. package/app/public/vendor/fonts/cat-climate_crisis-400-ext.woff2 +0 -0
  48. package/app/public/vendor/fonts/cat-climate_crisis-400.woff2 +0 -0
  49. package/app/public/vendor/fonts/cat-cookie-400.woff2 +0 -0
  50. package/app/public/vendor/fonts/cat-dela_gothic_one-400-ext.woff2 +0 -0
  51. package/app/public/vendor/fonts/cat-dela_gothic_one-400.woff2 +0 -0
  52. package/app/public/vendor/fonts/cat-fascinate_inline-400-ext.woff2 +0 -0
  53. package/app/public/vendor/fonts/cat-fascinate_inline-400.woff2 +0 -0
  54. package/app/public/vendor/fonts/cat-ga_maamli-400-ext.woff2 +0 -0
  55. package/app/public/vendor/fonts/cat-ga_maamli-400.woff2 +0 -0
  56. package/app/public/vendor/fonts/cat-itim-400-ext.woff2 +0 -0
  57. package/app/public/vendor/fonts/cat-itim-400.woff2 +0 -0
  58. package/app/public/vendor/fonts/cat-jacquard_24-400-ext.woff2 +0 -0
  59. package/app/public/vendor/fonts/cat-jacquard_24-400.woff2 +0 -0
  60. package/app/public/vendor/fonts/cat-kablammo-400-ext.woff2 +0 -0
  61. package/app/public/vendor/fonts/cat-kablammo-400.woff2 +0 -0
  62. package/app/public/vendor/fonts/cat-kalam-400-ext.woff2 +0 -0
  63. package/app/public/vendor/fonts/cat-kalam-400.woff2 +0 -0
  64. package/app/public/vendor/fonts/cat-kalam-700-ext.woff2 +0 -0
  65. package/app/public/vendor/fonts/cat-kalam-700.woff2 +0 -0
  66. package/app/public/vendor/fonts/cat-katibeh-400-ext.woff2 +0 -0
  67. package/app/public/vendor/fonts/cat-katibeh-400.woff2 +0 -0
  68. package/app/public/vendor/fonts/cat-lemonada-400-ext.woff2 +0 -0
  69. package/app/public/vendor/fonts/cat-lemonada-400.woff2 +0 -0
  70. package/app/public/vendor/fonts/cat-lilita_one-400-ext.woff2 +0 -0
  71. package/app/public/vendor/fonts/cat-lilita_one-400.woff2 +0 -0
  72. package/app/public/vendor/fonts/cat-lobster-400-ext.woff2 +0 -0
  73. package/app/public/vendor/fonts/cat-lobster-400.woff2 +0 -0
  74. package/app/public/vendor/fonts/cat-luckiest_guy-400-ext.woff2 +0 -0
  75. package/app/public/vendor/fonts/cat-luckiest_guy-400.woff2 +0 -0
  76. package/app/public/vendor/fonts/cat-marhey-400-ext.woff2 +0 -0
  77. package/app/public/vendor/fonts/cat-marhey-400.woff2 +0 -0
  78. package/app/public/vendor/fonts/cat-modak-400-ext.woff2 +0 -0
  79. package/app/public/vendor/fonts/cat-modak-400.woff2 +0 -0
  80. package/app/public/vendor/fonts/cat-momo_signature-400-ext.woff2 +0 -0
  81. package/app/public/vendor/fonts/cat-momo_signature-400.woff2 +0 -0
  82. package/app/public/vendor/fonts/cat-monofett-400-ext.woff2 +0 -0
  83. package/app/public/vendor/fonts/cat-monofett-400.woff2 +0 -0
  84. package/app/public/vendor/fonts/cat-monomakh-400-ext.woff2 +0 -0
  85. package/app/public/vendor/fonts/cat-monomakh-400.woff2 +0 -0
  86. package/app/public/vendor/fonts/cat-monoton-400-ext.woff2 +0 -0
  87. package/app/public/vendor/fonts/cat-monoton-400.woff2 +0 -0
  88. package/app/public/vendor/fonts/cat-nerko_one-400-ext.woff2 +0 -0
  89. package/app/public/vendor/fonts/cat-nerko_one-400.woff2 +0 -0
  90. package/app/public/vendor/fonts/cat-noto_sans_adlam-400-ext.woff2 +0 -0
  91. package/app/public/vendor/fonts/cat-noto_sans_adlam-400.woff2 +0 -0
  92. package/app/public/vendor/fonts/cat-noto_sans_arabic-400-ext.woff2 +0 -0
  93. package/app/public/vendor/fonts/cat-noto_sans_arabic-400.woff2 +0 -0
  94. package/app/public/vendor/fonts/cat-noto_sans_devanagari-400-ext.woff2 +0 -0
  95. package/app/public/vendor/fonts/cat-noto_sans_devanagari-400.woff2 +0 -0
  96. package/app/public/vendor/fonts/cat-noto_sans_hebrew-400-ext.woff2 +0 -0
  97. package/app/public/vendor/fonts/cat-noto_sans_hebrew-400.woff2 +0 -0
  98. package/app/public/vendor/fonts/cat-noto_sans_jp-400-ext.woff2 +0 -0
  99. package/app/public/vendor/fonts/cat-noto_sans_jp-400.woff2 +0 -0
  100. package/app/public/vendor/fonts/cat-noto_sans_khmer-400-ext.woff2 +0 -0
  101. package/app/public/vendor/fonts/cat-noto_sans_khmer-400.woff2 +0 -0
  102. package/app/public/vendor/fonts/cat-noto_sans_kr-400-ext.woff2 +0 -0
  103. package/app/public/vendor/fonts/cat-noto_sans_kr-400.woff2 +0 -0
  104. package/app/public/vendor/fonts/cat-noto_sans_sc-400-ext.woff2 +0 -0
  105. package/app/public/vendor/fonts/cat-noto_sans_sc-400.woff2 +0 -0
  106. package/app/public/vendor/fonts/cat-noto_sans_thai-400-ext.woff2 +0 -0
  107. package/app/public/vendor/fonts/cat-noto_sans_thai-400.woff2 +0 -0
  108. package/app/public/vendor/fonts/cat-ole-400-ext.woff2 +0 -0
  109. package/app/public/vendor/fonts/cat-ole-400.woff2 +0 -0
  110. package/app/public/vendor/fonts/cat-pacifico-400-ext.woff2 +0 -0
  111. package/app/public/vendor/fonts/cat-pacifico-400.woff2 +0 -0
  112. package/app/public/vendor/fonts/cat-patrick_hand-400-ext.woff2 +0 -0
  113. package/app/public/vendor/fonts/cat-patrick_hand-400.woff2 +0 -0
  114. package/app/public/vendor/fonts/cat-petit_formal_script-400-ext.woff2 +0 -0
  115. package/app/public/vendor/fonts/cat-petit_formal_script-400.woff2 +0 -0
  116. package/app/public/vendor/fonts/cat-pixelify_sans-400-ext.woff2 +0 -0
  117. package/app/public/vendor/fonts/cat-pixelify_sans-400.woff2 +0 -0
  118. package/app/public/vendor/fonts/cat-plaster-400-ext.woff2 +0 -0
  119. package/app/public/vendor/fonts/cat-plaster-400.woff2 +0 -0
  120. package/app/public/vendor/fonts/cat-playwrite_ar_guides-400-0.woff2 +0 -0
  121. package/app/public/vendor/fonts/cat-playwrite_at-400-0.woff2 +0 -0
  122. package/app/public/vendor/fonts/cat-playwrite_at_guides-400-0.woff2 +0 -0
  123. package/app/public/vendor/fonts/cat-playwrite_au_nsw-400-0.woff2 +0 -0
  124. package/app/public/vendor/fonts/cat-playwrite_au_nsw_guides-400-0.woff2 +0 -0
  125. package/app/public/vendor/fonts/cat-playwrite_au_qld-400-0.woff2 +0 -0
  126. package/app/public/vendor/fonts/cat-playwrite_au_qld_guides-400-0.woff2 +0 -0
  127. package/app/public/vendor/fonts/cat-playwrite_au_sa-400-0.woff2 +0 -0
  128. package/app/public/vendor/fonts/cat-playwrite_au_sa_guides-400-0.woff2 +0 -0
  129. package/app/public/vendor/fonts/cat-playwrite_au_tas-400-0.woff2 +0 -0
  130. package/app/public/vendor/fonts/cat-playwrite_au_tas_guides-400-0.woff2 +0 -0
  131. package/app/public/vendor/fonts/cat-playwrite_au_vic-400-0.woff2 +0 -0
  132. package/app/public/vendor/fonts/cat-playwrite_au_vic_guides-400-0.woff2 +0 -0
  133. package/app/public/vendor/fonts/cat-playwrite_be_vlg-400-0.woff2 +0 -0
  134. package/app/public/vendor/fonts/cat-playwrite_be_vlg_guides-400-0.woff2 +0 -0
  135. package/app/public/vendor/fonts/cat-playwrite_be_wal-400-0.woff2 +0 -0
  136. package/app/public/vendor/fonts/cat-playwrite_be_wal_guides-400-0.woff2 +0 -0
  137. package/app/public/vendor/fonts/cat-playwrite_br_guides-400-0.woff2 +0 -0
  138. package/app/public/vendor/fonts/cat-playwrite_ca_guides-400-0.woff2 +0 -0
  139. package/app/public/vendor/fonts/cat-playwrite_cl_guides-400-0.woff2 +0 -0
  140. package/app/public/vendor/fonts/cat-playwrite_co_guides-400-0.woff2 +0 -0
  141. package/app/public/vendor/fonts/cat-playwrite_cu_guides-400-0.woff2 +0 -0
  142. package/app/public/vendor/fonts/cat-playwrite_cz-400-0.woff2 +0 -0
  143. package/app/public/vendor/fonts/cat-playwrite_cz_guides-400-0.woff2 +0 -0
  144. package/app/public/vendor/fonts/cat-playwrite_de_grund-400-0.woff2 +0 -0
  145. package/app/public/vendor/fonts/cat-playwrite_de_grund_guides-400-0.woff2 +0 -0
  146. package/app/public/vendor/fonts/cat-playwrite_de_la-400-0.woff2 +0 -0
  147. package/app/public/vendor/fonts/cat-playwrite_de_la_guides-400-0.woff2 +0 -0
  148. package/app/public/vendor/fonts/cat-playwrite_de_sas-400-0.woff2 +0 -0
  149. package/app/public/vendor/fonts/cat-playwrite_de_sas_guides-400-0.woff2 +0 -0
  150. package/app/public/vendor/fonts/cat-playwrite_de_va-400-0.woff2 +0 -0
  151. package/app/public/vendor/fonts/cat-playwrite_de_va_guides-400-0.woff2 +0 -0
  152. package/app/public/vendor/fonts/cat-playwrite_dk_loopet-400-0.woff2 +0 -0
  153. package/app/public/vendor/fonts/cat-playwrite_dk_loopet_guides-400-0.woff2 +0 -0
  154. package/app/public/vendor/fonts/cat-playwrite_dk_uloopet-400-0.woff2 +0 -0
  155. package/app/public/vendor/fonts/cat-playwrite_dk_uloopet_guides-400-0.woff2 +0 -0
  156. package/app/public/vendor/fonts/cat-playwrite_es_deco_guides-400-0.woff2 +0 -0
  157. package/app/public/vendor/fonts/cat-playwrite_es_guides-400-0.woff2 +0 -0
  158. package/app/public/vendor/fonts/cat-playwrite_fr_moderne-400-0.woff2 +0 -0
  159. package/app/public/vendor/fonts/cat-playwrite_fr_moderne_guides-400-0.woff2 +0 -0
  160. package/app/public/vendor/fonts/cat-playwrite_fr_trad-400-0.woff2 +0 -0
  161. package/app/public/vendor/fonts/cat-playwrite_fr_trad_guides-400-0.woff2 +0 -0
  162. package/app/public/vendor/fonts/cat-playwrite_gb_j_guides-400-0.woff2 +0 -0
  163. package/app/public/vendor/fonts/cat-playwrite_gb_s_guides-400-0.woff2 +0 -0
  164. package/app/public/vendor/fonts/cat-playwrite_hr-400-0.woff2 +0 -0
  165. package/app/public/vendor/fonts/cat-playwrite_hr_guides-400-0.woff2 +0 -0
  166. package/app/public/vendor/fonts/cat-playwrite_hr_lijeva-400-0.woff2 +0 -0
  167. package/app/public/vendor/fonts/cat-playwrite_hr_lijeva_guides-400-0.woff2 +0 -0
  168. package/app/public/vendor/fonts/cat-playwrite_hu-400-0.woff2 +0 -0
  169. package/app/public/vendor/fonts/cat-playwrite_hu_guides-400-0.woff2 +0 -0
  170. package/app/public/vendor/fonts/cat-playwrite_id-400-0.woff2 +0 -0
  171. package/app/public/vendor/fonts/cat-playwrite_id_guides-400-0.woff2 +0 -0
  172. package/app/public/vendor/fonts/cat-playwrite_ie-400-0.woff2 +0 -0
  173. package/app/public/vendor/fonts/cat-playwrite_ie_guides-400-0.woff2 +0 -0
  174. package/app/public/vendor/fonts/cat-playwrite_in-400-0.woff2 +0 -0
  175. package/app/public/vendor/fonts/cat-playwrite_in_guides-400-0.woff2 +0 -0
  176. package/app/public/vendor/fonts/cat-playwrite_is-400-0.woff2 +0 -0
  177. package/app/public/vendor/fonts/cat-playwrite_is_guides-400-0.woff2 +0 -0
  178. package/app/public/vendor/fonts/cat-playwrite_it_moderna-400-0.woff2 +0 -0
  179. package/app/public/vendor/fonts/cat-playwrite_it_moderna_guides-400-0.woff2 +0 -0
  180. package/app/public/vendor/fonts/cat-playwrite_it_trad-400-0.woff2 +0 -0
  181. package/app/public/vendor/fonts/cat-playwrite_it_trad_guides-400-0.woff2 +0 -0
  182. package/app/public/vendor/fonts/cat-playwrite_mx_guides-400-0.woff2 +0 -0
  183. package/app/public/vendor/fonts/cat-playwrite_ng_modern-400-0.woff2 +0 -0
  184. package/app/public/vendor/fonts/cat-playwrite_ng_modern_guides-400-0.woff2 +0 -0
  185. package/app/public/vendor/fonts/cat-playwrite_nl-400-0.woff2 +0 -0
  186. package/app/public/vendor/fonts/cat-playwrite_nl_guides-400-0.woff2 +0 -0
  187. package/app/public/vendor/fonts/cat-playwrite_no-400-0.woff2 +0 -0
  188. package/app/public/vendor/fonts/cat-playwrite_no_guides-400-0.woff2 +0 -0
  189. package/app/public/vendor/fonts/cat-playwrite_nz-400-0.woff2 +0 -0
  190. package/app/public/vendor/fonts/cat-playwrite_nz_basic-400-0.woff2 +0 -0
  191. package/app/public/vendor/fonts/cat-playwrite_nz_basic_guides-400-0.woff2 +0 -0
  192. package/app/public/vendor/fonts/cat-playwrite_nz_guides-400-0.woff2 +0 -0
  193. package/app/public/vendor/fonts/cat-playwrite_pe_guides-400-0.woff2 +0 -0
  194. package/app/public/vendor/fonts/cat-playwrite_pl-400-0.woff2 +0 -0
  195. package/app/public/vendor/fonts/cat-playwrite_pl_guides-400-0.woff2 +0 -0
  196. package/app/public/vendor/fonts/cat-playwrite_pt_guides-400-0.woff2 +0 -0
  197. package/app/public/vendor/fonts/cat-playwrite_ro-400-0.woff2 +0 -0
  198. package/app/public/vendor/fonts/cat-playwrite_ro_guides-400-0.woff2 +0 -0
  199. package/app/public/vendor/fonts/cat-playwrite_sk-400-0.woff2 +0 -0
  200. package/app/public/vendor/fonts/cat-playwrite_sk_guides-400-0.woff2 +0 -0
  201. package/app/public/vendor/fonts/cat-playwrite_tz-400-0.woff2 +0 -0
  202. package/app/public/vendor/fonts/cat-playwrite_tz_guides-400-0.woff2 +0 -0
  203. package/app/public/vendor/fonts/cat-playwrite_us_modern_guides-400-0.woff2 +0 -0
  204. package/app/public/vendor/fonts/cat-playwrite_us_trad_guides-400-0.woff2 +0 -0
  205. package/app/public/vendor/fonts/cat-playwrite_vn-400-0.woff2 +0 -0
  206. package/app/public/vendor/fonts/cat-playwrite_vn_guides-400-0.woff2 +0 -0
  207. package/app/public/vendor/fonts/cat-playwrite_za-400-0.woff2 +0 -0
  208. package/app/public/vendor/fonts/cat-playwrite_za_guides-400-0.woff2 +0 -0
  209. package/app/public/vendor/fonts/cat-potta_one-400-ext.woff2 +0 -0
  210. package/app/public/vendor/fonts/cat-potta_one-400.woff2 +0 -0
  211. package/app/public/vendor/fonts/cat-ranchers-400-ext.woff2 +0 -0
  212. package/app/public/vendor/fonts/cat-ranchers-400.woff2 +0 -0
  213. package/app/public/vendor/fonts/cat-ranga-400-ext.woff2 +0 -0
  214. package/app/public/vendor/fonts/cat-ranga-400.woff2 +0 -0
  215. package/app/public/vendor/fonts/cat-ranga-700-ext.woff2 +0 -0
  216. package/app/public/vendor/fonts/cat-ranga-700.woff2 +0 -0
  217. package/app/public/vendor/fonts/cat-risque-400-ext.woff2 +0 -0
  218. package/app/public/vendor/fonts/cat-risque-400.woff2 +0 -0
  219. package/app/public/vendor/fonts/cat-rowdies-400-ext.woff2 +0 -0
  220. package/app/public/vendor/fonts/cat-rowdies-400.woff2 +0 -0
  221. package/app/public/vendor/fonts/cat-rowdies-700-ext.woff2 +0 -0
  222. package/app/public/vendor/fonts/cat-rowdies-700.woff2 +0 -0
  223. package/app/public/vendor/fonts/cat-ruge_boogie-400-ext.woff2 +0 -0
  224. package/app/public/vendor/fonts/cat-ruge_boogie-400.woff2 +0 -0
  225. package/app/public/vendor/fonts/cat-ruslan_display-400-ext.woff2 +0 -0
  226. package/app/public/vendor/fonts/cat-ruslan_display-400.woff2 +0 -0
  227. package/app/public/vendor/fonts/cat-sacramento-400-ext.woff2 +0 -0
  228. package/app/public/vendor/fonts/cat-sacramento-400.woff2 +0 -0
  229. package/app/public/vendor/fonts/cat-sancreek-400-ext.woff2 +0 -0
  230. package/app/public/vendor/fonts/cat-sancreek-400.woff2 +0 -0
  231. package/app/public/vendor/fonts/cat-sankofa_display-400-ext.woff2 +0 -0
  232. package/app/public/vendor/fonts/cat-sankofa_display-400.woff2 +0 -0
  233. package/app/public/vendor/fonts/cat-sedgwick_ave_display-400-ext.woff2 +0 -0
  234. package/app/public/vendor/fonts/cat-sedgwick_ave_display-400.woff2 +0 -0
  235. package/app/public/vendor/fonts/cat-shantell_sans-400-ext.woff2 +0 -0
  236. package/app/public/vendor/fonts/cat-shantell_sans-400.woff2 +0 -0
  237. package/app/public/vendor/fonts/cat-smokum-400-ext.woff2 +0 -0
  238. package/app/public/vendor/fonts/cat-smokum-400.woff2 +0 -0
  239. package/app/public/vendor/fonts/cat-solitreo-400-ext.woff2 +0 -0
  240. package/app/public/vendor/fonts/cat-solitreo-400.woff2 +0 -0
  241. package/app/public/vendor/fonts/cat-spicy_rice-400-ext.woff2 +0 -0
  242. package/app/public/vendor/fonts/cat-spicy_rice-400.woff2 +0 -0
  243. package/app/public/vendor/fonts/cat-sriracha-400-ext.woff2 +0 -0
  244. package/app/public/vendor/fonts/cat-sriracha-400.woff2 +0 -0
  245. package/app/public/vendor/fonts/cat-srisakdi-400-ext.woff2 +0 -0
  246. package/app/public/vendor/fonts/cat-srisakdi-400.woff2 +0 -0
  247. package/app/public/vendor/fonts/cat-srisakdi-700-ext.woff2 +0 -0
  248. package/app/public/vendor/fonts/cat-srisakdi-700.woff2 +0 -0
  249. package/app/public/vendor/fonts/cat-stix_two_math-400-0.woff2 +0 -0
  250. package/app/public/vendor/fonts/cat-tillana-400-ext.woff2 +0 -0
  251. package/app/public/vendor/fonts/cat-tillana-400.woff2 +0 -0
  252. package/app/public/vendor/fonts/cat-tillana-700-ext.woff2 +0 -0
  253. package/app/public/vendor/fonts/cat-tillana-700.woff2 +0 -0
  254. package/app/public/vendor/fonts/cat-titan_one-400-ext.woff2 +0 -0
  255. package/app/public/vendor/fonts/cat-titan_one-400.woff2 +0 -0
  256. package/app/public/vendor/fonts/cat-yatra_one-400-ext.woff2 +0 -0
  257. package/app/public/vendor/fonts/cat-yatra_one-400.woff2 +0 -0
  258. package/app/public/vendor/fonts/cat-yomogi-400-ext.woff2 +0 -0
  259. package/app/public/vendor/fonts/cat-yomogi-400.woff2 +0 -0
  260. package/app/public/vendor/fonts/dmserifdisplay-400-ext.woff2 +0 -0
  261. package/app/public/vendor/fonts/dmserifdisplay-400.woff2 +0 -0
  262. package/app/public/vendor/fonts/domine-var-ext.woff2 +0 -0
  263. package/app/public/vendor/fonts/domine-var.woff2 +0 -0
  264. package/app/public/vendor/fonts/fraunces-var-ext.woff2 +0 -0
  265. package/app/public/vendor/fonts/fraunces-var.woff2 +0 -0
  266. package/app/public/vendor/fonts/fredoka-var-ext.woff2 +0 -0
  267. package/app/public/vendor/fonts/fredoka-var.woff2 +0 -0
  268. package/app/public/vendor/fonts/jakarta-var-ext.woff2 +0 -0
  269. package/app/public/vendor/fonts/jakarta-var.woff2 +0 -0
  270. package/app/public/vendor/fonts/lora-var-ext.woff2 +0 -0
  271. package/app/public/vendor/fonts/lora-var.woff2 +0 -0
  272. package/app/public/vendor/fonts/merriweather-var-ext.woff2 +0 -0
  273. package/app/public/vendor/fonts/merriweather-var.woff2 +0 -0
  274. package/app/public/vendor/fonts/notosans-var-ext.woff2 +0 -0
  275. package/app/public/vendor/fonts/notosans-var.woff2 +0 -0
  276. package/app/public/vendor/fonts/nunito-var-ext.woff2 +0 -0
  277. package/app/public/vendor/fonts/nunito-var.woff2 +0 -0
  278. package/app/public/vendor/fonts/playfair-var-ext.woff2 +0 -0
  279. package/app/public/vendor/fonts/playfair-var.woff2 +0 -0
  280. package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
  281. package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
  282. package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
  283. package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
  284. package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
  285. package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
  286. package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
  287. package/app/public/vendor/fonts/quicksand-var-ext.woff2 +0 -0
  288. package/app/public/vendor/fonts/quicksand-var.woff2 +0 -0
  289. package/app/public/vendor/fonts/robotoflex-var-ext.woff2 +0 -0
  290. package/app/public/vendor/fonts/robotoflex-var.woff2 +0 -0
  291. package/app/public/vendor/fonts/sora-var-ext.woff2 +0 -0
  292. package/app/public/vendor/fonts/sora-var.woff2 +0 -0
  293. package/app/public/vendor/fonts/spacegrotesk-var-ext.woff2 +0 -0
  294. package/app/public/vendor/fonts/spacegrotesk-var.woff2 +0 -0
  295. package/app/public/vendor/fonts/spectral-400-ext.woff2 +0 -0
  296. package/app/public/vendor/fonts/spectral-400.woff2 +0 -0
  297. package/app/public/vendor/fonts/spectral-700-ext.woff2 +0 -0
  298. package/app/public/vendor/fonts/spectral-700.woff2 +0 -0
  299. package/app/public/vendor/fonts/teachers-var-ext.woff2 +0 -0
  300. package/app/public/vendor/fonts/teachers-var.woff2 +0 -0
  301. package/app/public/vendor/fonts/ubuntu-400-ext.woff2 +0 -0
  302. package/app/public/vendor/fonts/ubuntu-400.woff2 +0 -0
  303. package/app/public/vendor/fonts/ubuntu-700-ext.woff2 +0 -0
  304. package/app/public/vendor/fonts/ubuntu-700.woff2 +0 -0
  305. package/app/public/vendor/fonts.css +1167 -51
  306. package/dist-pkg/boot/create-game.d.ts +467 -162
  307. package/dist-pkg/boot/create-game.js +3563 -426
  308. package/dist-pkg/core/a11y-sr.d.ts +25 -3
  309. package/dist-pkg/core/a11y-sr.js +40 -19
  310. package/dist-pkg/core/accessible-label.d.ts +17 -0
  311. package/dist-pkg/core/accessible-label.js +37 -0
  312. package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
  313. package/dist-pkg/core/accommodation-subjects.js +32 -0
  314. package/dist-pkg/core/accommodations.d.ts +107 -0
  315. package/dist-pkg/core/accommodations.js +178 -0
  316. package/dist-pkg/core/actions.d.ts +75 -51
  317. package/dist-pkg/core/actions.js +98 -69
  318. package/dist-pkg/core/calm-mode.d.ts +31 -0
  319. package/dist-pkg/core/calm-mode.js +47 -0
  320. package/dist-pkg/core/camera-cycle.d.ts +15 -0
  321. package/dist-pkg/core/camera-cycle.js +7 -0
  322. package/dist-pkg/core/caption-duration.d.ts +15 -0
  323. package/dist-pkg/core/caption-duration.js +19 -0
  324. package/dist-pkg/core/cartridge-problems.d.ts +34 -0
  325. package/dist-pkg/core/cartridge-problems.js +53 -0
  326. package/dist-pkg/core/constants.d.ts +0 -54
  327. package/dist-pkg/core/constants.js +9 -76
  328. package/dist-pkg/core/contract.d.ts +143 -163
  329. package/dist-pkg/core/contract.js +223 -207
  330. package/dist-pkg/core/dom-query.d.ts +4 -4
  331. package/dist-pkg/core/dom-query.js +12 -20
  332. package/dist-pkg/core/entity.d.ts +62 -77
  333. package/dist-pkg/core/entity.js +18 -32
  334. package/dist-pkg/core/escape-html.d.ts +9 -10
  335. package/dist-pkg/core/escape-html.js +16 -20
  336. package/dist-pkg/core/flash-threshold.d.ts +17 -0
  337. package/dist-pkg/core/flash-threshold.js +113 -0
  338. package/dist-pkg/core/game-speed.d.ts +11 -0
  339. package/dist-pkg/core/game-speed.js +16 -0
  340. package/dist-pkg/core/genres.d.ts +20 -0
  341. package/dist-pkg/core/genres.js +44 -0
  342. package/dist-pkg/core/i18n.d.ts +87 -41
  343. package/dist-pkg/core/i18n.js +206 -153
  344. package/dist-pkg/core/loop.d.ts +17 -6
  345. package/dist-pkg/core/loop.js +26 -26
  346. package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
  347. package/dist-pkg/core/pause-icon-catalogue.js +54 -0
  348. package/dist-pkg/core/ring.d.ts +17 -0
  349. package/dist-pkg/core/ring.js +29 -0
  350. package/dist-pkg/core/rng.d.ts +7 -12
  351. package/dist-pkg/core/rng.js +23 -53
  352. package/dist-pkg/core/route.d.ts +26 -26
  353. package/dist-pkg/core/route.js +126 -121
  354. package/dist-pkg/core/scenes.d.ts +37 -40
  355. package/dist-pkg/core/scenes.js +41 -43
  356. package/dist-pkg/core/screens.d.ts +4 -4
  357. package/dist-pkg/core/screens.js +11 -16
  358. package/dist-pkg/core/setting-defaults.d.ts +61 -0
  359. package/dist-pkg/core/setting-defaults.js +66 -0
  360. package/dist-pkg/core/speech-rate.d.ts +29 -0
  361. package/dist-pkg/core/speech-rate.js +47 -0
  362. package/dist-pkg/core/state.d.ts +118 -118
  363. package/dist-pkg/core/state.js +322 -297
  364. package/dist-pkg/core/visual-cycles.d.ts +30 -0
  365. package/dist-pkg/core/visual-cycles.js +52 -0
  366. package/dist-pkg/core/visual-state.d.ts +13 -0
  367. package/dist-pkg/core/visual-state.js +6 -0
  368. package/dist-pkg/educational/activities-registry.d.ts +1 -1
  369. package/dist-pkg/educational/activities-registry.js +9 -8
  370. package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
  371. package/dist-pkg/educational/adaptive-engine.js +17 -17
  372. package/dist-pkg/educational/segment-bar.d.ts +12 -12
  373. package/dist-pkg/educational/segment-bar.js +9 -9
  374. package/dist-pkg/i18n/en.js +321 -215
  375. package/dist-pkg/i18n/es.js +320 -215
  376. package/dist-pkg/i18n/pt.js +342 -215
  377. package/dist-pkg/input/default-bindings.d.ts +37 -38
  378. package/dist-pkg/input/default-bindings.js +127 -144
  379. package/dist-pkg/input/devices.d.ts +7 -7
  380. package/dist-pkg/input/devices.js +17 -16
  381. package/dist-pkg/input/edges.d.ts +23 -32
  382. package/dist-pkg/input/edges.js +23 -28
  383. package/dist-pkg/input/empathy-filter.d.ts +22 -0
  384. package/dist-pkg/input/empathy-filter.js +34 -0
  385. package/dist-pkg/input/face-map.d.ts +96 -0
  386. package/dist-pkg/input/face-map.js +255 -0
  387. package/dist-pkg/input/face-signals.d.ts +40 -0
  388. package/dist-pkg/input/face-signals.js +48 -0
  389. package/dist-pkg/input/gamepad.d.ts +164 -145
  390. package/dist-pkg/input/gamepad.js +351 -559
  391. package/dist-pkg/input/gaze-cycle.d.ts +64 -0
  392. package/dist-pkg/input/gaze-cycle.js +133 -0
  393. package/dist-pkg/input/gaze-relative.d.ts +68 -0
  394. package/dist-pkg/input/gaze-relative.js +142 -0
  395. package/dist-pkg/input/hand-map.d.ts +28 -0
  396. package/dist-pkg/input/hand-map.js +142 -0
  397. package/dist-pkg/input/input-cooldown.d.ts +17 -0
  398. package/dist-pkg/input/input-cooldown.js +39 -0
  399. package/dist-pkg/input/keyboard-runtime.d.ts +18 -20
  400. package/dist-pkg/input/keyboard-runtime.js +23 -27
  401. package/dist-pkg/input/keyboard.d.ts +68 -62
  402. package/dist-pkg/input/keyboard.js +83 -105
  403. package/dist-pkg/input/keydown.d.ts +124 -132
  404. package/dist-pkg/input/keydown.js +283 -288
  405. package/dist-pkg/input/latch-edge.d.ts +25 -21
  406. package/dist-pkg/input/latch-edge.js +33 -35
  407. package/dist-pkg/input/latch-scope.d.ts +43 -47
  408. package/dist-pkg/input/latch-scope.js +66 -75
  409. package/dist-pkg/input/latch-store.d.ts +28 -29
  410. package/dist-pkg/input/latch-store.js +44 -47
  411. package/dist-pkg/input/latch-sync.d.ts +28 -29
  412. package/dist-pkg/input/latch-sync.js +25 -25
  413. package/dist-pkg/input/latch.d.ts +14 -17
  414. package/dist-pkg/input/latch.js +29 -37
  415. package/dist-pkg/input/pad-defaults.d.ts +13 -16
  416. package/dist-pkg/input/pad-defaults.js +21 -28
  417. package/dist-pkg/input/pad-reading.d.ts +76 -0
  418. package/dist-pkg/input/pad-reading.js +164 -0
  419. package/dist-pkg/input/pad-wizard.d.ts +96 -0
  420. package/dist-pkg/input/pad-wizard.js +205 -0
  421. package/dist-pkg/input/pointer-space.d.ts +19 -20
  422. package/dist-pkg/input/pointer-space.js +27 -32
  423. package/dist-pkg/input/pointer.d.ts +39 -40
  424. package/dist-pkg/input/pointer.js +42 -45
  425. package/dist-pkg/input/state.d.ts +101 -89
  426. package/dist-pkg/input/state.js +54 -134
  427. package/dist-pkg/input/switch-scan.d.ts +42 -0
  428. package/dist-pkg/input/switch-scan.js +54 -0
  429. package/dist-pkg/input/synthetic-source.d.ts +42 -0
  430. package/dist-pkg/input/synthetic-source.js +57 -0
  431. package/dist-pkg/input/touch-bindings.d.ts +127 -113
  432. package/dist-pkg/input/touch-bindings.js +158 -173
  433. package/dist-pkg/input/touch.d.ts +130 -70
  434. package/dist-pkg/input/touch.js +321 -123
  435. package/dist-pkg/input/transport-in-use.d.ts +107 -0
  436. package/dist-pkg/input/transport-in-use.js +130 -0
  437. package/dist-pkg/input/transports.d.ts +96 -114
  438. package/dist-pkg/input/transports.js +104 -106
  439. package/dist-pkg/input/virtual-controller.d.ts +46 -0
  440. package/dist-pkg/input/virtual-controller.js +41 -0
  441. package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
  442. package/dist-pkg/input/vocabulary-migration.js +80 -79
  443. package/dist-pkg/input/voice-map.d.ts +43 -0
  444. package/dist-pkg/input/voice-map.js +125 -0
  445. package/dist-pkg/platform/audio-ambient.d.ts +13 -1
  446. package/dist-pkg/platform/audio-ambient.js +11 -13
  447. package/dist-pkg/platform/audio-earcons.d.ts +20 -19
  448. package/dist-pkg/platform/audio-earcons.js +51 -42
  449. package/dist-pkg/platform/audio-jingles.js +9 -10
  450. package/dist-pkg/platform/audio-mixer.d.ts +14 -2
  451. package/dist-pkg/platform/audio-mixer.js +36 -39
  452. package/dist-pkg/platform/audio-sonar.d.ts +96 -113
  453. package/dist-pkg/platform/audio-sonar.js +245 -238
  454. package/dist-pkg/platform/audio.d.ts +53 -19
  455. package/dist-pkg/platform/audio.js +161 -169
  456. package/dist-pkg/platform/flash-sampler.d.ts +19 -0
  457. package/dist-pkg/platform/flash-sampler.js +79 -0
  458. package/dist-pkg/platform/guide-intensity.d.ts +26 -27
  459. package/dist-pkg/platform/guide-intensity.js +50 -52
  460. package/dist-pkg/platform/heavy-catalogue.d.ts +31 -0
  461. package/dist-pkg/platform/heavy-catalogue.js +223 -0
  462. package/dist-pkg/platform/heavy-mirror.d.ts +26 -0
  463. package/dist-pkg/platform/heavy-mirror.js +76 -0
  464. package/dist-pkg/platform/heavy.d.ts +104 -0
  465. package/dist-pkg/platform/heavy.js +169 -0
  466. package/dist-pkg/platform/interruptible-speech.d.ts +16 -16
  467. package/dist-pkg/platform/interruptible-speech.js +50 -51
  468. package/dist-pkg/platform/kokoro-port.d.ts +27 -0
  469. package/dist-pkg/platform/kokoro-port.js +50 -0
  470. package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
  471. package/dist-pkg/platform/kokoro-runtime.js +52 -0
  472. package/dist-pkg/platform/kokoro.d.ts +70 -0
  473. package/dist-pkg/platform/kokoro.js +133 -0
  474. package/dist-pkg/platform/listener-scope.d.ts +12 -0
  475. package/dist-pkg/platform/listener-scope.js +81 -0
  476. package/dist-pkg/platform/locale-host.d.ts +10 -0
  477. package/dist-pkg/platform/locale-host.js +34 -0
  478. package/dist-pkg/platform/microphone.d.ts +51 -0
  479. package/dist-pkg/platform/microphone.js +118 -0
  480. package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
  481. package/dist-pkg/platform/onnx-runtime.js +42 -0
  482. package/dist-pkg/platform/reading-in-worker.d.ts +40 -0
  483. package/dist-pkg/platform/reading-in-worker.js +87 -0
  484. package/dist-pkg/platform/reading-model.d.ts +73 -0
  485. package/dist-pkg/platform/reading-model.js +247 -0
  486. package/dist-pkg/platform/reading-runtime.d.ts +24 -0
  487. package/dist-pkg/platform/reading-runtime.js +159 -0
  488. package/dist-pkg/platform/reading-worker.d.ts +41 -0
  489. package/dist-pkg/platform/reading-worker.js +58 -0
  490. package/dist-pkg/platform/reading.d.ts +69 -0
  491. package/dist-pkg/platform/reading.js +128 -0
  492. package/dist-pkg/platform/speech-recognition.d.ts +51 -0
  493. package/dist-pkg/platform/speech-recognition.js +84 -0
  494. package/dist-pkg/platform/speech.d.ts +14 -1
  495. package/dist-pkg/platform/speech.js +13 -13
  496. package/dist-pkg/platform/storage-keys.d.ts +96 -0
  497. package/dist-pkg/platform/storage-keys.js +106 -0
  498. package/dist-pkg/platform/storage.d.ts +46 -111
  499. package/dist-pkg/platform/storage.js +104 -169
  500. package/dist-pkg/platform/tts.d.ts +51 -38
  501. package/dist-pkg/platform/tts.js +217 -119
  502. package/dist-pkg/platform/vision-loop.d.ts +23 -0
  503. package/dist-pkg/platform/vision-loop.js +56 -0
  504. package/dist-pkg/platform/vision.d.ts +132 -0
  505. package/dist-pkg/platform/vision.js +117 -0
  506. package/dist-pkg/platform/voice-listener.d.ts +36 -0
  507. package/dist-pkg/platform/voice-listener.js +88 -0
  508. package/dist-pkg/platform/voice-plan.d.ts +6 -102
  509. package/dist-pkg/platform/voice-plan.js +9 -151
  510. package/dist-pkg/platform/vosk-runtime.d.ts +71 -0
  511. package/dist-pkg/platform/vosk-runtime.js +93 -0
  512. package/dist-pkg/render/canvas.d.ts +13 -7
  513. package/dist-pkg/render/canvas.js +13 -13
  514. package/dist-pkg/render/crt.d.ts +46 -12
  515. package/dist-pkg/render/crt.js +82 -80
  516. package/dist-pkg/render/cvd-matrices.d.ts +18 -18
  517. package/dist-pkg/render/cvd-matrices.js +33 -38
  518. package/dist-pkg/render/hc-role-data.d.ts +7 -7
  519. package/dist-pkg/render/hc-role-data.js +14 -14
  520. package/dist-pkg/render/high-contrast.d.ts +66 -54
  521. package/dist-pkg/render/high-contrast.js +221 -216
  522. package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
  523. package/dist-pkg/render/low-vision-drawing.js +46 -0
  524. package/dist-pkg/render/lq-filter.d.ts +32 -20
  525. package/dist-pkg/render/lq-filter.js +59 -65
  526. package/dist-pkg/render/port.d.ts +86 -88
  527. package/dist-pkg/render/port.js +17 -23
  528. package/dist-pkg/render/screen-pipeline.d.ts +42 -42
  529. package/dist-pkg/render/screen-pipeline.js +80 -87
  530. package/dist-pkg/render/sprite-fx.d.ts +2 -1
  531. package/dist-pkg/render/sprite-fx.js +16 -14
  532. package/dist-pkg/render/viewports.d.ts +20 -15
  533. package/dist-pkg/render/viewports.js +83 -114
  534. package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
  535. package/dist-pkg/render/viz-axes-labels.js +88 -0
  536. package/dist-pkg/render/viz-axes.d.ts +80 -86
  537. package/dist-pkg/render/viz-axes.js +115 -116
  538. package/dist-pkg/render/viz-modes.d.ts +28 -29
  539. package/dist-pkg/render/viz-modes.js +40 -45
  540. package/dist-pkg/render/viz-refusal.d.ts +32 -0
  541. package/dist-pkg/render/viz-refusal.js +57 -0
  542. package/dist-pkg/render/viz-setters.d.ts +104 -66
  543. package/dist-pkg/render/viz-setters.js +182 -191
  544. package/dist-pkg/ui/aac-sets.d.ts +40 -0
  545. package/dist-pkg/ui/aac-sets.js +49 -0
  546. package/dist-pkg/ui/audio-choices.d.ts +63 -0
  547. package/dist-pkg/ui/audio-choices.js +94 -0
  548. package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
  549. package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
  550. package/dist-pkg/ui/camera-control.d.ts +6 -0
  551. package/dist-pkg/ui/camera-control.js +14 -0
  552. package/dist-pkg/ui/changed-mark.d.ts +9 -8
  553. package/dist-pkg/ui/changed-mark.js +22 -53
  554. package/dist-pkg/ui/control-choices.d.ts +37 -0
  555. package/dist-pkg/ui/control-choices.js +84 -0
  556. package/dist-pkg/ui/debug-panel.d.ts +59 -43
  557. package/dist-pkg/ui/debug-panel.js +68 -69
  558. package/dist-pkg/ui/dom.d.ts +10 -14
  559. package/dist-pkg/ui/dom.js +10 -47
  560. package/dist-pkg/ui/drawing-problems.d.ts +25 -0
  561. package/dist-pkg/ui/drawing-problems.js +93 -0
  562. package/dist-pkg/ui/eye-control.d.ts +36 -0
  563. package/dist-pkg/ui/eye-control.js +178 -0
  564. package/dist-pkg/ui/face-control.d.ts +25 -0
  565. package/dist-pkg/ui/face-control.js +183 -0
  566. package/dist-pkg/ui/focus-trap.d.ts +39 -49
  567. package/dist-pkg/ui/focus-trap.js +56 -65
  568. package/dist-pkg/ui/fonts.d.ts +118 -63
  569. package/dist-pkg/ui/fonts.js +267 -111
  570. package/dist-pkg/ui/game-options.d.ts +42 -0
  571. package/dist-pkg/ui/game-options.js +138 -0
  572. package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
  573. package/dist-pkg/ui/gaze-overlay.js +165 -0
  574. package/dist-pkg/ui/hand-control.d.ts +25 -0
  575. package/dist-pkg/ui/hand-control.js +143 -0
  576. package/dist-pkg/ui/help-panel.d.ts +76 -0
  577. package/dist-pkg/ui/help-panel.js +232 -0
  578. package/dist-pkg/ui/hud-bands.d.ts +45 -0
  579. package/dist-pkg/ui/hud-bands.js +108 -0
  580. package/dist-pkg/ui/hud.d.ts +73 -70
  581. package/dist-pkg/ui/hud.js +94 -98
  582. package/dist-pkg/ui/item-announcement.d.ts +13 -12
  583. package/dist-pkg/ui/item-announcement.js +25 -26
  584. package/dist-pkg/ui/latch-refusal.d.ts +22 -21
  585. package/dist-pkg/ui/latch-refusal.js +37 -37
  586. package/dist-pkg/ui/layout.d.ts +103 -28
  587. package/dist-pkg/ui/layout.js +114 -99
  588. package/dist-pkg/ui/locale-flags.d.ts +16 -0
  589. package/dist-pkg/ui/locale-flags.js +30 -0
  590. package/dist-pkg/ui/loop-crash.d.ts +17 -17
  591. package/dist-pkg/ui/loop-crash.js +33 -62
  592. package/dist-pkg/ui/menu-intent.d.ts +32 -0
  593. package/dist-pkg/ui/menu-intent.js +54 -0
  594. package/dist-pkg/ui/menu-items.d.ts +10 -0
  595. package/dist-pkg/ui/menu-items.js +22 -0
  596. package/dist-pkg/ui/menu-nav.d.ts +60 -90
  597. package/dist-pkg/ui/menu-nav.js +301 -274
  598. package/dist-pkg/ui/mobility-choices.d.ts +26 -0
  599. package/dist-pkg/ui/mobility-choices.js +41 -0
  600. package/dist-pkg/ui/motion-choices.d.ts +31 -0
  601. package/dist-pkg/ui/motion-choices.js +68 -0
  602. package/dist-pkg/ui/motion-scene.d.ts +24 -19
  603. package/dist-pkg/ui/motion-scene.js +29 -61
  604. package/dist-pkg/ui/mount-panel.d.ts +81 -0
  605. package/dist-pkg/ui/mount-panel.js +61 -0
  606. package/dist-pkg/ui/panel-shell.d.ts +65 -31
  607. package/dist-pkg/ui/panel-shell.js +92 -66
  608. package/dist-pkg/ui/panel-widgets.d.ts +116 -0
  609. package/dist-pkg/ui/panel-widgets.js +208 -0
  610. package/dist-pkg/ui/pause-buttons.d.ts +35 -0
  611. package/dist-pkg/ui/pause-buttons.js +66 -0
  612. package/dist-pkg/ui/pause-icons.d.ts +250 -343
  613. package/dist-pkg/ui/pause-icons.js +614 -605
  614. package/dist-pkg/ui/pause-markup.d.ts +86 -0
  615. package/dist-pkg/ui/pause-markup.js +125 -0
  616. package/dist-pkg/ui/reach-notice.d.ts +22 -23
  617. package/dist-pkg/ui/reach-notice.js +55 -58
  618. package/dist-pkg/ui/scan-overlay.d.ts +23 -0
  619. package/dist-pkg/ui/scan-overlay.js +42 -0
  620. package/dist-pkg/ui/settings-aac.d.ts +68 -0
  621. package/dist-pkg/ui/settings-aac.js +189 -0
  622. package/dist-pkg/ui/settings-audio.d.ts +91 -113
  623. package/dist-pkg/ui/settings-audio.js +407 -405
  624. package/dist-pkg/ui/settings-controls.d.ts +53 -92
  625. package/dist-pkg/ui/settings-controls.js +143 -215
  626. package/dist-pkg/ui/settings-empathy.d.ts +39 -30
  627. package/dist-pkg/ui/settings-empathy.js +53 -60
  628. package/dist-pkg/ui/settings-mobility.d.ts +195 -0
  629. package/dist-pkg/ui/settings-mobility.js +374 -0
  630. package/dist-pkg/ui/settings-motion.d.ts +91 -70
  631. package/dist-pkg/ui/settings-motion.js +287 -198
  632. package/dist-pkg/ui/settings-panel.d.ts +48 -45
  633. package/dist-pkg/ui/settings-panel.js +164 -93
  634. package/dist-pkg/ui/settings-typo.d.ts +28 -76
  635. package/dist-pkg/ui/settings-typo.js +145 -125
  636. package/dist-pkg/ui/settings-visual.d.ts +29 -87
  637. package/dist-pkg/ui/settings-visual.js +240 -193
  638. package/dist-pkg/ui/shell.d.ts +113 -134
  639. package/dist-pkg/ui/shell.js +143 -216
  640. package/dist-pkg/ui/simulation-list.d.ts +27 -0
  641. package/dist-pkg/ui/simulation-list.js +76 -0
  642. package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
  643. package/dist-pkg/ui/simulation-over-the-world.js +131 -0
  644. package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
  645. package/dist-pkg/ui/simulation-refusal.js +8 -56
  646. package/dist-pkg/ui/switchable-control.d.ts +11 -0
  647. package/dist-pkg/ui/switchable-control.js +19 -0
  648. package/dist-pkg/ui/title.d.ts +4 -4
  649. package/dist-pkg/ui/title.js +11 -13
  650. package/dist-pkg/ui/top-band.d.ts +24 -0
  651. package/dist-pkg/ui/top-band.js +100 -0
  652. package/dist-pkg/ui/typo-choices.d.ts +71 -0
  653. package/dist-pkg/ui/typo-choices.js +84 -0
  654. package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
  655. package/dist-pkg/ui/visual-axes-panel.js +12 -94
  656. package/dist-pkg/ui/visual-choices.d.ts +77 -0
  657. package/dist-pkg/ui/visual-choices.js +107 -0
  658. package/dist-pkg/ui/vlibras.d.ts +33 -10
  659. package/dist-pkg/ui/vlibras.js +58 -81
  660. package/dist-pkg/ui/voice-control.d.ts +46 -0
  661. package/dist-pkg/ui/voice-control.js +143 -0
  662. package/dist-pkg/ui/voice-settings.d.ts +96 -0
  663. package/dist-pkg/ui/voice-settings.js +302 -0
  664. package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
  665. package/dist-pkg/ui/where-the-child-is.js +70 -0
  666. package/docs/CREDITS.md +198 -54
  667. package/docs/LICENSES.md +160 -145
  668. package/package.json +24 -25
  669. package/scripts/heavy-into-the-delivery.mjs +144 -0
  670. package/scripts/licences/Apache-2.0.txt +176 -0
  671. package/scripts/licences/GPL-3.0.txt +674 -0
  672. package/scripts/licences/MIT.txt +17 -0
  673. package/scripts/licences/third-party.mjs +287 -0
  674. package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
  675. package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
  676. package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
  677. package/dist-pkg/core/anel.d.ts +0 -17
  678. package/dist-pkg/core/anel.js +0 -31
  679. package/dist-pkg/core/collision.d.ts +0 -21
  680. package/dist-pkg/core/collision.js +0 -62
  681. package/dist-pkg/core/layers.d.ts +0 -63
  682. package/dist-pkg/core/layers.js +0 -95
  683. package/dist-pkg/core/letter-grid.d.ts +0 -55
  684. package/dist-pkg/core/letter-grid.js +0 -116
  685. package/dist-pkg/core/password.d.ts +0 -34
  686. package/dist-pkg/core/password.js +0 -205
  687. package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
  688. package/dist-pkg/core/rotulo-acessivel.js +0 -41
  689. package/dist-pkg/core/run-state.d.ts +0 -115
  690. package/dist-pkg/core/run-state.js +0 -40
  691. package/dist-pkg/core/tiles.d.ts +0 -12
  692. package/dist-pkg/core/tiles.js +0 -61
  693. package/dist-pkg/core/world.d.ts +0 -4
  694. package/dist-pkg/core/world.js +0 -58
  695. package/dist-pkg/input/origem-sintetica.d.ts +0 -44
  696. package/dist-pkg/input/origem-sintetica.js +0 -60
  697. package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
  698. package/dist-pkg/input/transporte-em-uso.js +0 -130
  699. package/dist-pkg/platform/audio-nav.d.ts +0 -51
  700. package/dist-pkg/platform/audio-nav.js +0 -99
  701. package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
  702. package/dist-pkg/platform/pesados-catalogo.js +0 -177
  703. package/dist-pkg/platform/pesados.d.ts +0 -31
  704. package/dist-pkg/platform/pesados.js +0 -75
  705. package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
  706. package/dist-pkg/platform/vozes-prontas.js +0 -61
  707. package/dist-pkg/render/camera.d.ts +0 -58
  708. package/dist-pkg/render/camera.js +0 -105
  709. package/dist-pkg/render/cenario-data.d.ts +0 -127
  710. package/dist-pkg/render/cenario-data.js +0 -145
  711. package/dist-pkg/render/city-tex.d.ts +0 -63
  712. package/dist-pkg/render/city-tex.js +0 -228
  713. package/dist-pkg/render/city-tiles.d.ts +0 -11
  714. package/dist-pkg/render/city-tiles.js +0 -140
  715. package/dist-pkg/render/draw.d.ts +0 -149
  716. package/dist-pkg/render/draw.js +0 -231
  717. package/dist-pkg/render/fx.d.ts +0 -63
  718. package/dist-pkg/render/fx.js +0 -123
  719. package/dist-pkg/render/minimap.d.ts +0 -11
  720. package/dist-pkg/render/minimap.js +0 -94
  721. package/dist-pkg/render/parallax.d.ts +0 -85
  722. package/dist-pkg/render/parallax.js +0 -158
  723. package/dist-pkg/render/player-anim.d.ts +0 -71
  724. package/dist-pkg/render/player-anim.js +0 -152
  725. package/dist-pkg/render/recycling-tex.d.ts +0 -48
  726. package/dist-pkg/render/recycling-tex.js +0 -164
  727. package/dist-pkg/render/scene-city.d.ts +0 -77
  728. package/dist-pkg/render/scene-city.js +0 -181
  729. package/dist-pkg/render/scene-parallax.d.ts +0 -72
  730. package/dist-pkg/render/scene-parallax.js +0 -426
  731. package/dist-pkg/render/scene-sky.d.ts +0 -126
  732. package/dist-pkg/render/scene-sky.js +0 -295
  733. package/dist-pkg/render/set-cenario.d.ts +0 -54
  734. package/dist-pkg/render/set-cenario.js +0 -103
  735. package/dist-pkg/render/textures.d.ts +0 -75
  736. package/dist-pkg/render/textures.js +0 -240
  737. package/dist-pkg/render/title-scene.d.ts +0 -46
  738. package/dist-pkg/render/title-scene.js +0 -75
  739. package/dist-pkg/render/weather.d.ts +0 -96
  740. package/dist-pkg/render/weather.js +0 -171
  741. package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
  742. package/dist-pkg/render/wheelchair-sprites.js +0 -69
  743. package/dist-pkg/render/world-tex.d.ts +0 -18
  744. package/dist-pkg/render/world-tex.js +0 -87
  745. package/dist-pkg/ui/activities-menu.d.ts +0 -258
  746. package/dist-pkg/ui/activities-menu.js +0 -648
  747. package/dist-pkg/ui/caa-sets.d.ts +0 -39
  748. package/dist-pkg/ui/caa-sets.js +0 -65
  749. package/dist-pkg/ui/map-hub.d.ts +0 -56
  750. package/dist-pkg/ui/map-hub.js +0 -138
  751. package/dist-pkg/ui/settings-caa.d.ts +0 -45
  752. package/dist-pkg/ui/settings-caa.js +0 -137
  753. package/dist-pkg/ui/settings-motor.d.ts +0 -175
  754. package/dist-pkg/ui/settings-motor.js +0 -342
  755. package/dist-pkg/ui/webcam.d.ts +0 -7
  756. package/dist-pkg/ui/webcam.js +0 -93
@@ -1,240 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later
2
- // render/textures — procedural texture generators for in-world GLYPHS: soma/subtração SHAPES, sílabas LETTERS,
3
- // and power-up ICONS (+ their alto-contraste variant). Verbatim from game.js (behavior-preserving). `disp`
4
- // (letterCase-aware) and the DIRECT_CFG/directSpriteCanvas alto-contraste plumbing are SHARED with other texture
5
- // pipelines (world/coin/tree/parallax) that stay in game.js — INJECTED via initTextures, never read from a
6
- // global. Caches are filled BY initTextures (not at import time) so importing this module stays I/O-free, same
7
- // discipline as render/sprites.ts (Fase 2.24). See docs/5-Refactoring/plano-modularizacao-mapa.md.
8
- import { makeCanvas, tex } from './canvas.js';
9
- import { spriteToCanvas } from './sprite-fx.js';
10
- let disp = (s) => String(s).toLowerCase(); // safe pre-init default (matches letterCase='lower')
11
- let directCfg = {};
12
- let directSpriteCanvas = (src) => src; // safe pre-init default (fg=0 → sem contorno)
13
- /* ===================== soma/subtração: formas ===================== */
14
- /** Vertex list for the polygon shapes (PURE — no canvas). null = drawn via an arc/ellipse/rect primitive instead. */
15
- export function shapePoints(id, cx, cy, r) {
16
- switch (id) {
17
- case 'triangulo': return [[cx, cy - r], [cx + r, cy + r], [cx - r, cy + r]];
18
- case 'losango': return [[cx, cy - r], [cx + r, cy], [cx, cy + r], [cx - r, cy]];
19
- case 'paralelogramo': return [[cx - r + 3, cy - r * 0.6], [cx + r, cy - r * 0.6], [cx + r - 3, cy + r * 0.6], [cx - r, cy + r * 0.6]];
20
- case 'trapezio': return [[cx - r * 0.5, cy - r * 0.7], [cx + r * 0.5, cy - r * 0.7], [cx + r, cy + r * 0.7], [cx - r, cy + r * 0.7]];
21
- case 'pentagono': return Array.from({ length: 5 }, (_, i) => { const a = -Math.PI / 2 + i * 2 * Math.PI / 5; return [cx + r * Math.cos(a), cy + r * Math.sin(a)]; });
22
- case 'hexagono': return Array.from({ length: 6 }, (_, i) => { const a = i * 2 * Math.PI / 6; return [cx + r * Math.cos(a), cy + r * Math.sin(a)]; });
23
- default: return null;
24
- }
25
- }
26
- /** 16×16 icon for a soma/subtração shape id (cyan fill + dark outline). */
27
- export function shapeTexture(id) {
28
- const cv = makeCanvas(16, 16), c = cv.getContext('2d');
29
- c.fillStyle = '#7fdcff';
30
- c.strokeStyle = '#04121a';
31
- c.lineWidth = 1.5;
32
- const cx = 8, cy = 8, r = 6;
33
- c.beginPath();
34
- const pts = shapePoints(id, cx, cy, r);
35
- if (pts) {
36
- pts.forEach(([x, y], i) => c[i ? 'lineTo' : 'moveTo'](x, y));
37
- c.closePath();
38
- }
39
- else
40
- switch (id) {
41
- case 'circulo':
42
- c.arc(cx, cy, r, 0, 7);
43
- break;
44
- case 'oval':
45
- c.ellipse(cx, cy, r, r * 0.66, 0, 0, 7);
46
- break;
47
- case 'quadrado':
48
- c.rect(cx - r, cy - r, 2 * r, 2 * r);
49
- break;
50
- case 'retangulo':
51
- c.rect(cx - r, cy - r * 0.6, 2 * r, r * 1.2);
52
- break;
53
- default: c.arc(cx, cy, r, 0, 7);
54
- }
55
- c.fill();
56
- c.stroke();
57
- return tex(cv);
58
- }
59
- /** Cache keyed by shape id — filled by initTextures (the injected id list never changes at runtime). */
60
- export const SHAPE_TEX = {};
61
- /* ===================== sílabas: letra ===================== */
62
- /** 16×16 rounded-square tile with a single letter (uses the injected `disp`, which honors letterCase). */
63
- export function letterTexture(ch) {
64
- const cv = makeCanvas(16, 16), c = cv.getContext('2d');
65
- c.fillStyle = '#ffd23f';
66
- c.strokeStyle = '#1a1400';
67
- c.lineWidth = 1.5;
68
- c.beginPath();
69
- if (c.roundRect)
70
- c.roundRect(2, 2, 12, 12, 3);
71
- else
72
- c.rect(2, 2, 12, 12);
73
- c.fill();
74
- c.stroke();
75
- c.fillStyle = '#1a1400';
76
- c.font = 'bold 11px system-ui,sans-serif';
77
- c.textAlign = 'center';
78
- c.textBaseline = 'middle';
79
- c.fillText(disp(ch), 8, 9);
80
- return tex(cv);
81
- }
82
- /* ===================== power-ups: ícone (+ alto contraste) ===================== */
83
- //
84
- // A LISTA E A ARTE ENTRAM JUNTAS, e nenhuma das duas mora aqui (item 19). Era
85
- // const PUP_KINDS = ['superjump', 'ultrajump', 'turbo', 'fly', 'wallcling', 'key', 'runcane'] as const;
86
- // mais `import { powerupCanvas } from './props.js'` — os sete poderes DESTE jogo e o desenho deles, dentro de
87
- // um módulo de render. É o mesmo defeito que `SHAPE_TEX` tinha e pelo qual `shapes` já entra por ctx: um
88
- // segundo jogo herdava sete ícones que não são dele e não tinha como não herdar.
89
- //
90
- // A diferença em relação a `shapes` vale nota: das formas, a engine recebe só os IDS e DESENHA (`shapeTexture`
91
- // é geometria — polígono, arco, retângulo — e serve a qualquer jogo). Dos power-ups ela recebe o CANVAS
92
- // PRONTO, porque uma ventosa, uma asa e uma bengala de corrida não são geometria: são arte, e arte é do jogo.
93
- const PUP_CANVAS = {};
94
- /** Normal-mode cache — filled by initTextures. */
95
- export const PUP_TEX = {};
96
- const _pupTexHC = {}; // {mode:{kind:tex}} — outlined alto-contraste variant
97
- /** Power-up texture for `mode` (normal or alto-contraste-direto). Cached per mode×kind. */
98
- export function pupTexFor(kind, mode) {
99
- const hc = (_pupTexHC[mode] = _pupTexHC[mode] || {});
100
- if (directCfg[mode]) {
101
- if (!hc[kind])
102
- hc[kind] = tex(directSpriteCanvas(PUP_CANVAS[kind], mode));
103
- return hc[kind];
104
- }
105
- return PUP_TEX[kind];
106
- }
107
- /** Drops the alto-contraste power-up cache — game.js's _rebakeDirect clears world/coin/pup/player caches
108
- * together whenever outline thickness or role colors change. Call it from there instead of touching a private. */
109
- export function resetPupTexCache() {
110
- for (const k in _pupTexHC)
111
- delete _pupTexHC[k];
112
- }
113
- /** Fills SHAPE_TEX/PUP_TEX (+ wires the alto-contraste deps). Call ONCE at boot, before the first rebuildCoins/
114
- * rebuildExtras — mirrors game.js's old eager `const SHAPE_TEX=...; SOMASUB_SHAPES.forEach(...)` / PUP_CANVAS
115
- * forEach, just deferred past import time so this module stays side-effect-free to import (node tests included). */
116
- export function initTextures(ctx) {
117
- disp = ctx.disp;
118
- directCfg = ctx.directCfg;
119
- directSpriteCanvas = ctx.directSpriteCanvas;
120
- // LIMPA ANTES DE ENCHER. Enquanto as formas eram uma tabela FIXA importada, o cache só podia ser preenchido
121
- // com o mesmo conteúdo e a diferença nunca apareceu — a função é chamada uma vez no boot. Com a lista
122
- // INJETADA, "encher" tinha de deixar de significar "acrescentar": um segundo consumidor que inicializasse
123
- // com as formas dele herdaria as nossas por cima, e o sintoma seria texturas de matemática num jogo que não
124
- // tem matemática. Achado por um teste meu que afirmava a coisa errada e reprovou por isso.
125
- for (const k of Object.keys(SHAPE_TEX))
126
- delete SHAPE_TEX[k];
127
- for (const id of ctx.shapes)
128
- SHAPE_TEX[id] = shapeTexture(id);
129
- // Mesma regra de limpar-antes-de-encher, pelo mesmo motivo do bloco acima: com a lista INJETADA, um segundo
130
- // consumidor herdaria os poderes do primeiro por cima dos dele.
131
- for (const k of Object.keys(PUP_CANVAS))
132
- delete PUP_CANVAS[k];
133
- for (const k of Object.keys(PUP_TEX))
134
- delete PUP_TEX[k];
135
- for (const p of ctx.powerups) {
136
- PUP_CANVAS[p.kind] = p.canvas;
137
- PUP_TEX[p.kind] = tex(p.canvas);
138
- }
139
- }
140
- /* ===================== personagem: arte indexada (DEFERRED — não é código morto) =====================
141
- FASE ATUAL: o jogo usa o PIXEL ART do PixelLab DIRETO (PNG nativo por quadro, render/sprites.ts — Fase 2.24).
142
- A conversão deste personagem PROCEDURAL SEMÂNTICO/indexado (PIP_* abaixo) para a arte real do jogo "fica para
143
- uma fase posterior" — comentário original de game.js, preservado aqui junto do código. ZERO chamadores hoje
144
- (indexedToCanvas/silhouetteCanvasIdx não são invocadas por ninguém) — isso é trabalho ESTACIONADO de propósito,
145
- não descartado. Ver docs/plano-arte-procedural.md. */
146
- export const PIP_W = 24, PIP_H = 32;
147
- export const PIP_PAL = ['#fcd7ab', '#e2aa86', '#9d6e62', '#5d2e22', '#472a1e', '#231c1c', '#1e1011', '#ff00ff', '#050809', '#010909'];
148
- export const PIP_IDLE = ['.....99444446666888.....', '...9444444444444448.....', '..924444444444444488....', '.9422442444444444439....', '.94424222442424495338...', '894444444424224495348...', '964664444444444915548...', '966664455444449101658...', '966666595689998000859...', '966659986991891000859...', '96656919911011009819....', '.99969111890000910119...', '990099198999008998819...', '902281890990001920929...', '91133119889000089099....', '.911111121500003409.....', '....991100003330009.....', '.....9821000000009......', '.....999821111198.......', '....92223999998429......', '...9022222399823229.....', '...99888822222283829....', '...91118892222281008....', '..9910000182224910089...', '.939211001844449300829..', '.9335821139999999229329.', '92355589985335229999939.', '939955955255552589..99..', '99..99952555958129......', '.....928899.9925489.....', '....991999..99554339....', '........................'];
149
- export const PIP_WALK = [
150
- ['.....5566655...........', '...69344433365666......', '..533344434444336......', '.66224444444443466.....', '.54324444443444436.....', '6644442234424499346....', '66466433422323999444...', '66666344434434929445...', '66666448944939313935...', '66666659969856121945...', '66666889992191000945...', '6699681601102018929....', '6921981999900040026....', '9013891806960689926....', '903382190550009905.....', '.41231100220002306.....', '...592100000220006.....', '.....921100000006......', '.....56661111186.......', '....9622269999825......', '....9522222992525......', '....9968862222989......', '....8910062222929......', '.....810082222828......', '.....8100922229919.....', '.....9100996699914.....', '.....6200092559916.....', '.....5100094558988.....', '.....98112989689.......', '.....99889899119.......', '.....9558...95554......', '.....94444.............'],
151
- ['.....6656655...........', '...68443344466665......', '..933444444444336......', '.98224444443344466.....', '.63424444443444435.....', '6544442244424499446....', '65366434422413695444...', '66566444434433618445...', '66666449944939213845...', '65656869969946122945...', '66666889992191000845...', '6588690911101019919....', '6900881998600080026....', '6012891509950499926....', '813362191860005805.....', '.51131100230002306.....', '...992100000220019.....', '.....921100000008......', '.....98951111189.......', '....8422299989924......', '...99411222992925......', '...89996992222999......', '...99910082222999......', '....981009222299.......', '.....81009222299.......', '.....89206198999.......', '......9200095499.......', '.....54622292499.......', '.....9556999659........', '.....999999.1198.......', '.....9349...64444......', '.....83455.............'],
152
- ['.....6665656...........', '...96444444466665......', '..633444443444446......', '.55324444443444466.....', '.64424444333444435.....', '6644432244222369334....', '66466433422413699444...', '66666444444444929634...', '66566339944948813934...', '66666649969958121635...', '66666999992081000945...', '6699681922101016629....', '6921991989800081016....', '8002961505950499625....', '903361160550005506.....', '.50131110440003306.....', '...861100000330004.....', '.....961200000115......', '.....59891111189.......', '....9222266989926......', '...99222222992629......', '...99999992222999......', '...99920060022999......', '....99200610229........', '....992229222299.......', '.....992200999999......', '.....999200925999......', '.....55822292598.......', '....95599999969........', '....985589992289.......', '....9489...933223......', '....94469..............'],
153
- ['.....5665566...........', '...98444443366666......', '..644444444444446......', '.96224444444444456.....', '.63313444443443436.....', '6543332243424469434....', '65466434422324499434...', '66666334444444939444...', '66665349944936312934...', '66666859958968122934...', '66666999992081000934...', '6686691611101009625....', '6922991989800060015....', '9013991508960699825....', '903381190650006506.....', '.51221110420002406.....', '...992200000220006.....', '.....931100000116......', '......9991111169.......', '.....522299899315......', '...89222222992225......', '...99888922222866......', '...99200942222929......', '....8100992222829......', '....810099222298166....', '....810899998899216....', '....810099925999216....', '....91006454459895.....', '....91216355928........', '.....99959992158.......', '......8689.943444......', '......94465............'],
154
- ['.....6665655...........', '...56444444356665......', '..633333344443446......', '.86314444443444466.....', '.83423434433434445.....', '6633432243423399434....', '66456434422413899434...', '66566434434434828636...', '66566349944949213935...', '66666659969968111636...', '66666989982091000645...', '6699691922201018829....', '6811991999900081016....', '6002961505960499625....', '603361160560005506.....', '.51131100440002206.....', '...981100000230015.....', '.....961100000116......', '.....99991111189.......', '....9222296966825......', '...89222222992625......', '...99998922222996......', '...99200932222826......', '....62009922229138.....', '....810099222299169....', '....910699898899206....', '....810099525599219....', '....91008545559988.....', '....82119946529........', '.....99899991169.......', '......9555.833323......', '......95555............'],
155
- ['.....6556656...........', '...56443344456566......', '..833444444443336......', '.56224444444443466.....', '.64324434343444435.....', '6644442244424499349....', '65466444422313695444...', '66566344444333619446...', '66666439944939223945...', '65665669969949121945...', '66666899982190000845...', '6699690911101019919....', '6911991996600081026....', '8113891609960499925....', '913381191980005606.....', '.51131100430002306.....', '...992100000220019.....', '.....821100000006......', '.....99961111196.......', '....9222269899924......', '...99222222992625......', '...99998922222995......', '...89100922222929......', '....92008822229215.....', '....920089222299139....', '....620099988999108....', '....610009523399129....', '....91000855249998.....', '....9922299989998......', '.....899999.81198......', '.....99559..943445.....', '.....995548............'],
156
- ];
157
- /** Valid palette digit (7 = transparent background, skipped); robust to short/ragged rows. */
158
- export const isPix = (ch) => ch >= '0' && ch <= '9' && ch !== '7';
159
- export function indexedToCanvas(rows) {
160
- const cv = makeCanvas(PIP_W, PIP_H), c = cv.getContext('2d');
161
- for (let y = 0; y < PIP_H; y++) {
162
- const r = rows[y];
163
- if (!r)
164
- continue;
165
- for (let x = 0; x < PIP_W; x++) {
166
- const ch = r[x];
167
- if (!isPix(ch))
168
- continue;
169
- c.fillStyle = PIP_PAL[+ch];
170
- c.fillRect(x, y, 1, 1);
171
- }
172
- }
173
- return cv;
174
- }
175
- export function silhouetteCanvasIdx(rows) {
176
- const cv = makeCanvas(PIP_W, PIP_H), c = cv.getContext('2d');
177
- c.fillStyle = '#ffe600';
178
- for (let y = 0; y < PIP_H; y++) {
179
- const r = rows[y];
180
- if (!r)
181
- continue;
182
- for (let x = 0; x < PIP_W; x++) {
183
- if (isPix(r[x]))
184
- c.fillRect(x, y, 1, 1);
185
- }
186
- }
187
- return cv;
188
- }
189
- /* ===================== personagem: sprite indexado ANTIGO (achado, não é o mesmo caso do PIP_*) =====================
190
- ACHADO — relatado, não consertado: TEX + PLAYER_IDLE/WALK/CLIMB/HURT abaixo já tinham ZERO chamadores no
191
- game.js original (nenhuma referência além da própria definição de TEX) — diferente do bloco PIP_* acima, este
192
- não carrega comentário de "fase posterior"; é vestígio pré-PixelLab, plenamente substituído pelo pipeline PNG
193
- (render/sprites.ts: TEX_IDLE/TEX_WALK/TEX_CLIMB/…, Fase 2.24). Preservado verbatim (a tarefa pede não apagar);
194
- TEX passou de constante eager para função sob demanda (buildLegacyPlayerTex) só para este módulo poder ser
195
- importado sem `document` (disciplina de render/sprites.ts) — comportamento IDÊNTICO se algum dia for chamada. */
196
- export const PLAYER_IDLE = [
197
- '................', '................', '.....HHHHHH.....', '....HHHHHHHH....',
198
- '....HHSSSSHH....', '....HSSSSSSH....', '....HSKSSKSH....', '....HSSSSSSH....',
199
- '....HSSWWSSH....', '....HSSSSSSH....', '.....HSSSSH.....', '......SSSS......',
200
- '.....RRRRRR.....', '....RRRRRRRR....', '...RRRRRRRRRR...', '..SRRRRRRRRRRS..',
201
- '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '...RRRRRRRRRR...',
202
- '...RRRRRRRRRR...', '....RRRRRRRR....', '....BBBBBBBB....', '....BBBBBBBB....',
203
- '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....',
204
- '....BBB..BBB....', '....BBB..BBB....', '...KKKK..KKKK...', '...KKKK..KKKK...',
205
- ];
206
- export const PLAYER_WALK = [
207
- '................', '................', '.....HHHHHH.....', '....HHHHHHHH....',
208
- '....HHSSSSHH....', '....HSSSSSSH....', '....HSKSSKSH....', '....HSSSSSSH....',
209
- '....HSSWWSSH....', '....HSSSSSSH....', '.....HSSSSH.....', '......SSSS......',
210
- '.....RRRRRR.....', '....RRRRRRRR....', '...RRRRRRRRRR...', '..SRRRRRRRRRRS..',
211
- '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '...RRRRRRRRRR...',
212
- '...RRRRRRRRRR...', '....RRRRRRRR....', '....BBBBBBBB....', '...BBBB..BBB....',
213
- '..BBB....BBB....', '.BBB.....BBB....', 'KKKK.....KKKK...', '................',
214
- '................', '................', '................', '................',
215
- ];
216
- export const PLAYER_CLIMB = [
217
- '................', '................', '.....HHHHHH.....', '....HHHHHHHH....',
218
- '....HHHHHHHH....', '....HHHHHHHH....', '....HHHHHHHH....', '....HHHHHHHH....',
219
- '....HHHHHHHH....', '....HHHHHHHH....', '.....HHHHHH.....', '......SSSS......',
220
- '.....RRRRRR.....', '....RRRRRRRR....', '...RRRRRRRRRR...', '..SRRRRRRRRRRS..',
221
- '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '..SRRRRRRRRRRS..', '...RRRRRRRRRR...',
222
- '...RRRRRRRRRR...', '....RRRRRRRR....', '....BBBBBBBB....', '....BBBBBBBB....',
223
- '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....',
224
- '....BBB..BBB....', '....BBB..BBB....', '...KKKK..KKKK...', '...KKKK..KKKK...',
225
- ];
226
- export const PLAYER_HURT = [
227
- '................', '................', '.....HHHHHH.....', '....HHHHHHHH....',
228
- '....HHSSSSHH....', '....HSSSSSSH....', '....HSWWWWSH....', '....HSWKKWSH....',
229
- '....HSSSSSSH....', '....HSKKKKSH....', '.....HSSSSH.....', '......SSSS......',
230
- '.....RRRRRR.....', '....RRRRRRRR....', '...RRRRRRRRRR...', '..SRRRRRRRRRRS..',
231
- '..SRRRRRRRRR.S..', '..SRRRRRRRR.SS..', '...RRRRRRRRSS...', '...RRRRRRRRRR...',
232
- '...RRRRRRRRRR...', '....RRRRRRRR....', '....BBBBBBBB....', '....BBBBBBBB....',
233
- '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....', '....BBB..BBB....',
234
- '....BBB..BBB....', '....BBB..BBB....', '...KKKK..KKKK...', '...KKKK..KKKK...',
235
- ];
236
- /** Verbatim reproduction of game.js's old eager `const TEX={idle:tex(spriteToCanvas(PLAYER_IDLE)),...}` — never
237
- * auto-run (see header note above). Unused today; kept callable in case a future caller resurfaces. */
238
- export function buildLegacyPlayerTex() {
239
- return { idle: tex(spriteToCanvas(PLAYER_IDLE)), walk: tex(spriteToCanvas(PLAYER_WALK)), climb: tex(spriteToCanvas(PLAYER_CLIMB)), hurt: tex(spriteToCanvas(PLAYER_HURT)) };
240
- }
@@ -1,46 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later
2
- import type { Desenho } from './port.js';
3
- type Gfx = Desenho;
4
- export interface TitleSceneCtx {
5
- /** The PIXI.Graphics layer this scene draws into (created + z-ordered in game.js). */
6
- titleG: Gfx;
7
- /** Live screen size (pass `app.screen` — width/height read fresh on every draw()). */
8
- screen: {
9
- width: number;
10
- height: number;
11
- };
12
- /** Reduced-motion flags; only `.parallax` (reduced parallax/animation) matters here. */
13
- getRm: () => {
14
- parallax?: boolean;
15
- };
16
- }
17
- export interface TitleScene {
18
- /** Redraws the title backdrop for the current frame (clears `titleG` first). */
19
- draw: () => void;
20
- }
21
- /** The 4 title-screen clouds' logical (unscaled) positions — v3 exact. */
22
- export interface TitleCloudDef {
23
- cx: number;
24
- cy: number;
25
- }
26
- export declare const TITLE_CLOUDS: readonly TitleCloudDef[];
27
- /** Horizon row (sky/grass split), in screen pixels. */
28
- export declare function titleHorizonY(H: number): number;
29
- /** Sky gradient color for scanline `y` (0-indexed from the top), given the horizon row count. RGB
30
- * interpolation rgb(26→58, 26→76, 58→180) — exact v3 formula, packed as 0xRRGGBB. */
31
- export declare function titleSkyRowColor(y: number, horizon: number): number;
32
- /** This frame's cloud-drift offset: frozen at 0 under reduced motion, else sub-pixel accumulation of the
33
- * per-draw frame counter (titleT/6) — corrects #21a (no more Math.floor → no "jumps 1px every 6 frames"). */
34
- export declare function titleCloudDriftOffset(titleT: number, reducedMotion: boolean): number;
35
- /** Screen-space x of one title cloud, with whole-body wrap (#21b: the 28px-wide cloud only re-enters once it
36
- * has left the screen entirely). */
37
- export declare function titleCloudX(cx: number, k: number, off: number, W: number): number;
38
- export interface TitleGrassRow {
39
- xStart: number;
40
- xStep: number;
41
- y: number;
42
- }
43
- /** The 3 staggered dotted-grass rows below the horizon — v3 exact. */
44
- export declare function titleGrassRows(k: number, horizon: number): TitleGrassRow[];
45
- export declare function createTitleScene(ctx: TitleSceneCtx): TitleScene;
46
- export {};
@@ -1,75 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later
2
- // render/title-scene — title-screen BACKDROP: sky gradient + 4 drifting clouds + dotted grass, drawn into
3
- // `titleG` (v3.1.100 formulas, verbatim). Extracted from game.js's drawTitleScene(). The `titleG` PIXI.Graphics
4
- // layer is CREATED in game.js (`app.stage.addChildAt(titleG, app.stage.getChildIndex(weatherLayer))`) — its
5
- // z-order is soldered into the render-graph assembly there, same precedent as render/scene-sky.ts — and is
6
- // INJECTED here; only the drawing logic moves. cloudWrapX (sub-pixel, whole-body wrap, bug #21) is imported
7
- // straight from render/scene-sky.ts rather than re-implemented — it is already a leaf pure function there.
8
- import { LOGICAL_H } from '../core/constants.js';
9
- import { cloudWrapX } from './scene-sky.js';
10
- export const TITLE_CLOUDS = [
11
- { cx: 40, cy: 30 }, { cx: 180, cy: 52 }, { cx: 265, cy: 22 }, { cx: 110, cy: 72 },
12
- ];
13
- /** Horizon row (sky/grass split), in screen pixels. */
14
- export function titleHorizonY(H) {
15
- return Math.round(H * 0.735);
16
- }
17
- /** Sky gradient color for scanline `y` (0-indexed from the top), given the horizon row count. RGB
18
- * interpolation rgb(26→58, 26→76, 58→180) — exact v3 formula, packed as 0xRRGGBB. */
19
- export function titleSkyRowColor(y, horizon) {
20
- const f = y / horizon;
21
- const r = Math.round(26 + 32 * f), g = Math.round(26 + 50 * f), b = Math.round(58 + 122 * f);
22
- return (r << 16) | (g << 8) | b;
23
- }
24
- /** This frame's cloud-drift offset: frozen at 0 under reduced motion, else sub-pixel accumulation of the
25
- * per-draw frame counter (titleT/6) — corrects #21a (no more Math.floor → no "jumps 1px every 6 frames"). */
26
- export function titleCloudDriftOffset(titleT, reducedMotion) {
27
- return reducedMotion ? 0 : titleT / 6;
28
- }
29
- /** Screen-space x of one title cloud, with whole-body wrap (#21b: the 28px-wide cloud only re-enters once it
30
- * has left the screen entirely). */
31
- export function titleCloudX(cx, k, off, W) {
32
- return cloudWrapX(cx * k - off, -28 * k, W + 28 * k);
33
- }
34
- /** The 3 staggered dotted-grass rows below the horizon — v3 exact. */
35
- export function titleGrassRows(k, horizon) {
36
- return [
37
- { xStart: 0, xStep: 3 * k, y: horizon },
38
- { xStart: 1 * k, xStep: 4 * k, y: horizon + 3 * k },
39
- { xStart: 2 * k, xStep: 5 * k, y: horizon + 6 * k },
40
- ];
41
- }
42
- // ---------------------------------------------------------------------------------------------
43
- // PIXI-facing (thin) — requires the injected `titleG` layer
44
- // ---------------------------------------------------------------------------------------------
45
- export function createTitleScene(ctx) {
46
- let titleT = 0; // frame counter (module-local state, mirrors the old closure-level `let titleT=0`)
47
- function drawCloud(g, cx, cy, k, off, W) {
48
- const x = titleCloudX(cx, k, off, W), s = k;
49
- g.beginFill(0xf6f5f0)
50
- .drawRect(x, cy * s, 28 * s, 6 * s)
51
- .drawRect(x + 6 * s, (cy - 4) * s, 16 * s, 6 * s)
52
- .drawRect(x + 2 * s, (cy + 6) * s, 24 * s, 4 * s)
53
- .endFill();
54
- }
55
- function draw() {
56
- const g = ctx.titleG;
57
- g.clear();
58
- const W = ctx.screen.width, H = ctx.screen.height, k = H / LOGICAL_H;
59
- const HOR = titleHorizonY(H);
60
- for (let y = 0; y < HOR; y++)
61
- g.beginFill(titleSkyRowColor(y, HOR)).drawRect(0, y, W, 1).endFill();
62
- titleT++;
63
- const off = titleCloudDriftOffset(titleT, !!ctx.getRm().parallax);
64
- for (const c of TITLE_CLOUDS)
65
- drawCloud(g, c.cx, c.cy, k, off, W);
66
- g.beginFill(0x3f7d20).drawRect(0, HOR, W, H - HOR).endFill();
67
- g.beginFill(0x2d5b16);
68
- for (const row of titleGrassRows(k, HOR)) {
69
- for (let x = row.xStart; x < W; x += row.xStep)
70
- g.drawRect(x, row.y, k, k);
71
- }
72
- g.endFill();
73
- }
74
- return { draw };
75
- }
@@ -1,96 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later
2
- import type { DesenhoComLinha } from './port.js';
3
- /** A single rain drop's screen-space position + falling speed. */
4
- export interface RainDrop {
5
- x: number;
6
- y: number;
7
- len: number;
8
- spd: number;
9
- }
10
- /**
11
- * L5 (rotina do José): tempo bom nos primeiros 30s; depois LOOP de 60s = garoa 5s → chuva 5s → garoa 5s → bom 45s.
12
- * Skipped when scene decor is reduced-motion.
13
- *
14
- * QUEM TEM CHUVA É DADO DO TEMA (`CENARIOS[...].chuva`), e não uma condição escrita aqui. Era
15
- * `cenario === 'cidade'` — verdade enquanto a Cidade era o único tema com chuva, e mentira no dia em que o Dev
16
- * pediu chuva na Floresta. O defeito de uma condição dessas não é estar errada, é ser INVISÍVEL de onde a
17
- * pessoa procura: quem abre a tabela de cenários para dar chuva a um tema novo não encontra nada para mudar.
18
- *
19
- * @param sec elapsed weather-clock time, in seconds
20
- * @param temChuva true when the active theme declares `chuva`
21
- * @param reduceDecor true when reduced-motion scene decor (rm.decor) is on
22
- * @returns target rain level: 0 (dry), 0.35 (garoa) or 1 (chuva)
23
- */
24
- export declare function rainLevelTarget(sec: number, temChuva: boolean, reduceDecor: boolean): number;
25
- /** Onde estamos DENTRO do ciclo de 60s, em segundos. 0 = a primeira gota; 59 = um segundo antes dela. */
26
- export declare function faseDoClima(sec: number): number;
27
- /**
28
- * AGLOMERAÇÃO DAS NUVENS: 0 = espalhadas e altas, com o céu aparecendo entre elas; 1 = fechadas numa manta.
29
- *
30
- * O pedido do Dev foi de um MOVIMENTO, não de um estado: as nuvens se juntam, chove, elas se separam e o pôr
31
- * do sol aparece nas frestas. Quem faz isso ler como causa e não como coincidência é a ANTECEDÊNCIA — a manta
32
- * fecha OITO SEGUNDOS ANTES da primeira gota. Se fechasse junto, a chuva pareceria vir do nada e as nuvens
33
- * pareceriam reagir a ela; fechando antes, é a nuvem que traz a chuva, que é o que uma criança já sabe.
34
- *
35
- * Anda no MESMO ciclo da chuva (`faseDoClima`), e não num relógio próprio, porque dois relógios independentes
36
- * desandam um do outro — não de imediato, mas depois de alguns minutos, e aí ninguém liga o defeito à causa.
37
- * Devolve uma rampa contínua: não precisa de suavização depois.
38
- */
39
- export declare function aglomeracaoAlvo(sec: number, temChuva: boolean, reduceDecor: boolean): number;
40
- /** Ramps `current` toward `target` by at most `step`, snapping to `target` once within 0.02 (no "quase seco" flicker). */
41
- export declare function rampRainLevel(current: number, target: number, step: number): number;
42
- /** Thunder cooldown/flash step (só na chuva forte, > 0.45). Calls `onThunder(inten)` — e.g. platform/audio-ambient's `thunder`. */
43
- export interface ThunderStep {
44
- thunderCD: number;
45
- flash: number;
46
- }
47
- export declare function stepThunder(rainLevel: number, thunderCD: number, flash: number, rndFn: () => number, onThunder: (inten: number) => void): ThunderStep;
48
- /** Seeds `n` rain drops at random positions across the WxH screen (lazy — built once on first rain). */
49
- export declare function makeRainDrops(n: number, W: number, H: number, rndFn: () => number): RainDrop[];
50
- /** Advances one drop by its own speed; wraps to the top (new random x) past H. GAG: drops freeze when `moving` is false (pause). */
51
- export declare function stepRainDrop(d: RainDrop, W: number, H: number, moving: boolean, rndFn: () => number): void;
52
- type Gfx = DesenhoComLinha & {
53
- parent: unknown;
54
- };
55
- interface StageLike {
56
- children: {
57
- length: number;
58
- };
59
- setChildIndex(child: unknown, index: number): void;
60
- }
61
- export interface WeatherCtx {
62
- /** The PIXI.Graphics layer this module draws into (created + z-ordered in game.js, kept on top of the stage). */
63
- weatherLayer: Gfx;
64
- /** The PIXI.Container `weatherLayer` lives on — used only to re-pin it as the topmost child every draw. */
65
- stage: StageLike;
66
- /** Live screen size (pass `app.screen`; width/height read fresh on every draw()). */
67
- screen: {
68
- width: number;
69
- height: number;
70
- };
71
- /** Reduced-motion flags; only `.decor` (scene decor/animation) matters here. */
72
- getRm: () => {
73
- decor?: boolean;
74
- };
75
- /** Called when thunder should rumble (platform/audio-ambient's `ambient.thunder`). */
76
- thunder: (inten: number) => void;
77
- /** Chove no cenário atual? Uma PERGUNTA e não o id do cenário: quem tem o catálogo responde. */
78
- temChuva: () => boolean;
79
- /** O mundo está rodando? Um BOOLEANO e não a fase — a engine não conhece o vocabulário de cenas deste
80
- * jogo (ADR-0030 C3). Era `phase === 'playing'`, importado de `core/state`. É o que congela as gotas na
81
- * pausa: elas param no ar em vez de continuarem caindo por trás do menu. */
82
- mundoRodando: () => boolean;
83
- }
84
- export declare function initWeather(ctx: WeatherCtx): void;
85
- /** Per-frame clima update (game.js calls this only while `phase==='playing'`, same as before). */
86
- export declare function updateWeather(): void;
87
- /** Redraws the rain/flash overlay (chuva/clarão em tela-espaço, sobre tudo). */
88
- export declare function drawWeather(): void;
89
- /** The clima→áudio bridge: platform/audio-ambient.ts reads this (never the raw value) so its rain track follows the visual. */
90
- export declare function getRainLevel(): number;
91
- /** A ponte clima→céu: render/scene-sky lê isto para juntar e separar as nuvens no compasso da chuva. */
92
- export declare function getAglomeracao(): number;
93
- /** Weather-clock read/write — the game.js `window.__incl.weatherT` debug hook fast-forwards the cycle via this. */
94
- export declare function getWeatherT(): number;
95
- export declare function setWeatherT(v: number): void;
96
- export {};
@@ -1,171 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-or-later
2
- // render/weather — visual CLIMA: rain intensity ramp, thunder cadence/flash, and the rain-drop layer drawn in
3
- // screen-space on top of everything. Extracted from game.js's updateWeather/drawWeather (behavior-preserving,
4
- // formulas verbatim). `weatherLayer` (the PIXI.Graphics) and `stage` are CREATED in game.js — the layer's z-order
5
- // is soldered into the render-graph assembly there, same precedent as render/scene-sky.ts — and are INJECTED via
6
- // initWeather(); only the logic moves. `_rainLevel` is the bridge to platform/audio-ambient.ts (thunder/rain
7
- // track follow the visual): exposed here ONLY via getRainLevel(), never the raw mutable value, exactly like the
8
- // game.js `get rainLevel(){return _rainLevel;}` it replaces. `cenario` is read as a live binding from
9
- // core/state.ts (shared state home); `rnd` from core/rng.ts's DECORATION stream — same pattern as render/fx.ts.
10
- // A corrente da DECORACAO, nao a do jogo: uma particula sorteada aqui nao pode mover o sorteio
11
- // das moedas. Ver o cabecalho de core/rng.ts (issue #107).
12
- import { rngDecoracao } from '../core/rng.js';
13
- const rnd = rngDecoracao.rnd;
14
- /**
15
- * L5 (rotina do José): tempo bom nos primeiros 30s; depois LOOP de 60s = garoa 5s → chuva 5s → garoa 5s → bom 45s.
16
- * Skipped when scene decor is reduced-motion.
17
- *
18
- * QUEM TEM CHUVA É DADO DO TEMA (`CENARIOS[...].chuva`), e não uma condição escrita aqui. Era
19
- * `cenario === 'cidade'` — verdade enquanto a Cidade era o único tema com chuva, e mentira no dia em que o Dev
20
- * pediu chuva na Floresta. O defeito de uma condição dessas não é estar errada, é ser INVISÍVEL de onde a
21
- * pessoa procura: quem abre a tabela de cenários para dar chuva a um tema novo não encontra nada para mudar.
22
- *
23
- * @param sec elapsed weather-clock time, in seconds
24
- * @param temChuva true when the active theme declares `chuva`
25
- * @param reduceDecor true when reduced-motion scene decor (rm.decor) is on
26
- * @returns target rain level: 0 (dry), 0.35 (garoa) or 1 (chuva)
27
- */
28
- export function rainLevelTarget(sec, temChuva, reduceDecor) {
29
- if (!(sec >= 30 && !reduceDecor && temChuva))
30
- return 0;
31
- const c = (sec - 30) % 60;
32
- return c < 5 ? 0.35 : c < 10 ? 1 : c < 15 ? 0.35 : 0;
33
- }
34
- /** Onde estamos DENTRO do ciclo de 60s, em segundos. 0 = a primeira gota; 59 = um segundo antes dela. */
35
- export function faseDoClima(sec) { return (((sec - 30) % 60) + 60) % 60; }
36
- /**
37
- * AGLOMERAÇÃO DAS NUVENS: 0 = espalhadas e altas, com o céu aparecendo entre elas; 1 = fechadas numa manta.
38
- *
39
- * O pedido do Dev foi de um MOVIMENTO, não de um estado: as nuvens se juntam, chove, elas se separam e o pôr
40
- * do sol aparece nas frestas. Quem faz isso ler como causa e não como coincidência é a ANTECEDÊNCIA — a manta
41
- * fecha OITO SEGUNDOS ANTES da primeira gota. Se fechasse junto, a chuva pareceria vir do nada e as nuvens
42
- * pareceriam reagir a ela; fechando antes, é a nuvem que traz a chuva, que é o que uma criança já sabe.
43
- *
44
- * Anda no MESMO ciclo da chuva (`faseDoClima`), e não num relógio próprio, porque dois relógios independentes
45
- * desandam um do outro — não de imediato, mas depois de alguns minutos, e aí ninguém liga o defeito à causa.
46
- * Devolve uma rampa contínua: não precisa de suavização depois.
47
- */
48
- export function aglomeracaoAlvo(sec, temChuva, reduceDecor) {
49
- if (!(sec >= 22 && !reduceDecor && temChuva))
50
- return 0; // 22s = exatamente a fase 52, onde a rampa começa
51
- const f = faseDoClima(sec);
52
- if (f >= 52)
53
- return (f - 52) / 8; // 8s juntando, antes da primeira gota
54
- if (f < 12)
55
- return 1; // fechado durante a garoa e a chuva
56
- if (f < 22)
57
- return 1 - (f - 12) / 10; // 10s abrindo — é aqui que o pôr do sol reaparece
58
- return 0;
59
- }
60
- /** Ramps `current` toward `target` by at most `step`, snapping to `target` once within 0.02 (no "quase seco" flicker). */
61
- export function rampRainLevel(current, target, step) {
62
- let next = current + Math.max(-step, Math.min(step, target - current));
63
- if (Math.abs(target - next) < 0.02)
64
- next = target;
65
- return next;
66
- }
67
- export function stepThunder(rainLevel, thunderCD, flash, rndFn, onThunder) {
68
- if (rainLevel > 0.45) {
69
- thunderCD--;
70
- if (thunderCD <= 0) {
71
- thunderCD = 200 + Math.floor(rndFn() * 420);
72
- const inten = 0.35 + rndFn() * 0.65;
73
- flash = Math.max(flash, inten);
74
- onThunder(inten);
75
- }
76
- }
77
- if (flash > 0)
78
- flash = Math.max(0, flash - 0.05);
79
- return { thunderCD, flash };
80
- }
81
- /** Seeds `n` rain drops at random positions across the WxH screen (lazy — built once on first rain). */
82
- export function makeRainDrops(n, W, H, rndFn) {
83
- const drops = [];
84
- for (let i = 0; i < n; i++)
85
- drops.push({ x: rndFn() * W, y: rndFn() * H, len: 6 + rndFn() * 9, spd: 8 + rndFn() * 7 });
86
- return drops;
87
- }
88
- /** Advances one drop by its own speed; wraps to the top (new random x) past H. GAG: drops freeze when `moving` is false (pause). */
89
- export function stepRainDrop(d, W, H, moving, rndFn) {
90
- if (!moving)
91
- return;
92
- d.y += d.spd;
93
- d.x -= d.spd * 0.35;
94
- if (d.y > H) {
95
- d.y = -d.len;
96
- d.x = rndFn() * W;
97
- }
98
- if (d.x < 0)
99
- d.x += W;
100
- }
101
- let _weatherLayer = null;
102
- let _stage = null;
103
- let _screen = null;
104
- let _getRm = null;
105
- let _thunder = null;
106
- let _temChuva = null;
107
- let _mundoRodando = () => true;
108
- let _rainLevel = 0, _weatherT = 0, _flash = 0, _thunderCD = 240, _aglomeracao = 0;
109
- let _rainDrops = null;
110
- export function initWeather(ctx) {
111
- _weatherLayer = ctx.weatherLayer;
112
- _stage = ctx.stage;
113
- _screen = ctx.screen;
114
- _getRm = ctx.getRm;
115
- _thunder = ctx.thunder;
116
- _temChuva = ctx.temChuva;
117
- _mundoRodando = ctx.mundoRodando;
118
- }
119
- /** Per-frame clima update (game.js calls this only while `phase==='playing'`, same as before). */
120
- export function updateWeather() {
121
- _weatherT++;
122
- const sec = _weatherT / 60;
123
- const rm = _getRm ? _getRm() : {};
124
- const temChuva = _temChuva ? _temChuva() : false;
125
- const target = rainLevelTarget(sec, temChuva, !!rm.decor);
126
- _rainLevel = rampRainLevel(_rainLevel, target, 1 / 30); // rampa ~1s
127
- _aglomeracao = aglomeracaoAlvo(sec, temChuva, !!rm.decor); // já é rampa: nada a suavizar aqui
128
- const step = stepThunder(_rainLevel, _thunderCD, _flash, rnd, (inten) => { if (_thunder)
129
- _thunder(inten); });
130
- _thunderCD = step.thunderCD;
131
- _flash = step.flash;
132
- }
133
- /** Redraws the rain/flash overlay (chuva/clarão em tela-espaço, sobre tudo). */
134
- export function drawWeather() {
135
- if (!_weatherLayer)
136
- return;
137
- const g = _weatherLayer;
138
- if (_stage && g.parent === _stage)
139
- _stage.setChildIndex(g, _stage.children.length - 1); // mantido no topo em draw
140
- g.clear();
141
- const W = _screen ? _screen.width : 0, H = _screen ? _screen.height : 0;
142
- if (_rainLevel <= 0 && _flash <= 0)
143
- return;
144
- if (_rainLevel > 0) {
145
- g.beginFill(0x0a0e1a, _rainLevel * 0.34);
146
- g.drawRect(0, 0, W, H);
147
- g.endFill(); // céu mais escuro
148
- if (!_rainDrops)
149
- _rainDrops = makeRainDrops(110, W, H, rnd);
150
- const mv = _mundoRodando(); // GAG: gotas congelam na pausa
151
- g.lineStyle(1, 0xaebfe0, 0.5 * _rainLevel);
152
- for (const d of _rainDrops) {
153
- stepRainDrop(d, W, H, mv, rnd);
154
- g.moveTo(d.x, d.y);
155
- g.lineTo(d.x - 2, d.y + d.len);
156
- }
157
- g.lineStyle(0);
158
- }
159
- if (_flash > 0) {
160
- g.beginFill(0xe4ecff, _flash * 0.55);
161
- g.drawRect(0, 0, W, H);
162
- g.endFill();
163
- } // clarão do relâmpago
164
- }
165
- /** The clima→áudio bridge: platform/audio-ambient.ts reads this (never the raw value) so its rain track follows the visual. */
166
- export function getRainLevel() { return _rainLevel; }
167
- /** A ponte clima→céu: render/scene-sky lê isto para juntar e separar as nuvens no compasso da chuva. */
168
- export function getAglomeracao() { return _aglomeracao; }
169
- /** Weather-clock read/write — the game.js `window.__incl.weatherT` debug hook fast-forwards the cycle via this. */
170
- export function getWeatherT() { return _weatherT; }
171
- export function setWeatherT(v) { _weatherT = v; }