arx-convert 7.1.0 → 8.0.0-beta.1

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 (281) hide show
  1. package/README.md +98 -3
  2. package/dist/{amb → src/amb}/AMB.d.ts +2 -2
  3. package/dist/src/amb/AMB.js +21 -0
  4. package/dist/src/amb/AMB.js.map +1 -0
  5. package/dist/{amb → src/amb}/AmbHeader.d.ts +3 -3
  6. package/dist/{amb → src/amb}/AmbHeader.js +7 -11
  7. package/dist/src/amb/AmbHeader.js.map +1 -0
  8. package/dist/{amb → src/amb}/Key.d.ts +3 -3
  9. package/dist/src/amb/Key.js +42 -0
  10. package/dist/src/amb/Key.js.map +1 -0
  11. package/dist/{amb → src/amb}/Setting.d.ts +2 -2
  12. package/dist/{amb → src/amb}/Setting.js +6 -10
  13. package/dist/src/amb/Setting.js.map +1 -0
  14. package/dist/{amb → src/amb}/Track.d.ts +3 -3
  15. package/dist/{amb → src/amb}/Track.js +13 -17
  16. package/dist/src/amb/Track.js.map +1 -0
  17. package/dist/{amb → src/amb}/constants.js +2 -5
  18. package/dist/src/amb/constants.js.map +1 -0
  19. package/dist/src/bin/constants.js +4 -0
  20. package/dist/src/bin/constants.js.map +1 -0
  21. package/dist/src/bin/convert.js +112 -0
  22. package/dist/src/bin/convert.js.map +1 -0
  23. package/dist/{bin → src/bin}/helpers.d.ts +6 -6
  24. package/dist/src/bin/helpers.js +120 -0
  25. package/dist/src/bin/helpers.js.map +1 -0
  26. package/dist/{common → src/common}/BinaryIO.d.ts +3 -3
  27. package/dist/{common → src/common}/BinaryIO.js +22 -25
  28. package/dist/src/common/BinaryIO.js.map +1 -0
  29. package/dist/{common → src/common}/Color.d.ts +2 -2
  30. package/dist/{common → src/common}/Color.js +7 -11
  31. package/dist/src/common/Color.js.map +1 -0
  32. package/dist/{common → src/common}/constants.js +13 -16
  33. package/dist/src/common/constants.js.map +1 -0
  34. package/dist/src/common/helpers.js +43 -0
  35. package/dist/src/common/helpers.js.map +1 -0
  36. package/dist/src/common/types.js +2 -0
  37. package/dist/{common → src/common}/types.js.map +1 -1
  38. package/dist/{dlf → src/dlf}/DLF.d.ts +8 -8
  39. package/dist/src/dlf/DLF.js +72 -0
  40. package/dist/src/dlf/DLF.js.map +1 -0
  41. package/dist/{dlf → src/dlf}/DlfHeader.d.ts +4 -4
  42. package/dist/{dlf → src/dlf}/DlfHeader.js +27 -28
  43. package/dist/src/dlf/DlfHeader.js.map +1 -0
  44. package/dist/{dlf → src/dlf}/Fog.d.ts +4 -4
  45. package/dist/src/dlf/Fog.js +63 -0
  46. package/dist/src/dlf/Fog.js.map +1 -0
  47. package/dist/{dlf → src/dlf}/InteactiveObject.d.ts +3 -3
  48. package/dist/{dlf → src/dlf}/InteactiveObject.js +18 -25
  49. package/dist/src/dlf/InteactiveObject.js.map +1 -0
  50. package/dist/{dlf → src/dlf}/Scene.d.ts +2 -2
  51. package/dist/src/dlf/Scene.js +31 -0
  52. package/dist/src/dlf/Scene.js.map +1 -0
  53. package/dist/{dlf → src/dlf}/ZoneAndPathHeader.d.ts +5 -5
  54. package/dist/{dlf → src/dlf}/ZoneAndPathHeader.js +29 -30
  55. package/dist/src/dlf/ZoneAndPathHeader.js.map +1 -0
  56. package/dist/{dlf → src/dlf}/ZoneAndPathPoint.d.ts +3 -3
  57. package/dist/src/dlf/ZoneAndPathPoint.js +52 -0
  58. package/dist/src/dlf/ZoneAndPathPoint.js.map +1 -0
  59. package/dist/{ftl → src/ftl}/Action.d.ts +2 -2
  60. package/dist/{ftl → src/ftl}/Action.js +6 -10
  61. package/dist/src/ftl/Action.js.map +1 -0
  62. package/dist/{ftl → src/ftl}/FTL.d.ts +8 -8
  63. package/dist/src/ftl/FTL.js +55 -0
  64. package/dist/src/ftl/FTL.js.map +1 -0
  65. package/dist/{ftl → src/ftl}/Face.d.ts +3 -3
  66. package/dist/{ftl → src/ftl}/Face.js +22 -24
  67. package/dist/src/ftl/Face.js.map +1 -0
  68. package/dist/{ftl → src/ftl}/FtlHeader.d.ts +3 -3
  69. package/dist/{ftl → src/ftl}/FtlHeader.js +13 -17
  70. package/dist/src/ftl/FtlHeader.js.map +1 -0
  71. package/dist/{ftl → src/ftl}/FtlTextureContainer.d.ts +2 -2
  72. package/dist/src/ftl/FtlTextureContainer.js +20 -0
  73. package/dist/src/ftl/FtlTextureContainer.js.map +1 -0
  74. package/dist/{ftl → src/ftl}/FtlVertex.d.ts +3 -3
  75. package/dist/src/ftl/FtlVertex.js +24 -0
  76. package/dist/src/ftl/FtlVertex.js.map +1 -0
  77. package/dist/{ftl → src/ftl}/Group.d.ts +2 -2
  78. package/dist/src/ftl/Group.js +31 -0
  79. package/dist/src/ftl/Group.js.map +1 -0
  80. package/dist/{ftl → src/ftl}/Selections.d.ts +2 -2
  81. package/dist/{ftl → src/ftl}/Selections.js +6 -10
  82. package/dist/src/ftl/Selections.js.map +1 -0
  83. package/dist/src/ftl/constants.js +2 -0
  84. package/dist/src/ftl/constants.js.map +1 -0
  85. package/dist/{fts → src/fts}/Anchor.d.ts +3 -3
  86. package/dist/src/fts/Anchor.js +20 -0
  87. package/dist/src/fts/Anchor.js.map +1 -0
  88. package/dist/{fts → src/fts}/AnchorData.d.ts +4 -4
  89. package/dist/{fts → src/fts}/AnchorData.js +8 -12
  90. package/dist/src/fts/AnchorData.js.map +1 -0
  91. package/dist/{fts → src/fts}/Cell.d.ts +3 -3
  92. package/dist/src/fts/Cell.js +27 -0
  93. package/dist/src/fts/Cell.js.map +1 -0
  94. package/dist/{fts → src/fts}/EPData.d.ts +2 -2
  95. package/dist/src/fts/EPData.js +18 -0
  96. package/dist/src/fts/EPData.js.map +1 -0
  97. package/dist/{fts → src/fts}/FTS.d.ts +11 -11
  98. package/dist/src/fts/FTS.js +75 -0
  99. package/dist/src/fts/FTS.js.map +1 -0
  100. package/dist/{fts → src/fts}/FtsHeader.d.ts +3 -3
  101. package/dist/{fts → src/fts}/FtsHeader.js +14 -18
  102. package/dist/src/fts/FtsHeader.js.map +1 -0
  103. package/dist/{fts → src/fts}/Polygon.d.ts +4 -4
  104. package/dist/{fts → src/fts}/Polygon.js +20 -25
  105. package/dist/src/fts/Polygon.js.map +1 -0
  106. package/dist/{fts → src/fts}/Portal.d.ts +3 -3
  107. package/dist/src/fts/Portal.js +28 -0
  108. package/dist/src/fts/Portal.js.map +1 -0
  109. package/dist/{fts → src/fts}/PortalPolygon.d.ts +4 -4
  110. package/dist/{fts → src/fts}/PortalPolygon.js +25 -26
  111. package/dist/src/fts/PortalPolygon.js.map +1 -0
  112. package/dist/{fts → src/fts}/Room.d.ts +3 -3
  113. package/dist/src/fts/Room.js +23 -0
  114. package/dist/src/fts/Room.js.map +1 -0
  115. package/dist/{fts → src/fts}/RoomData.d.ts +3 -3
  116. package/dist/src/fts/RoomData.js +25 -0
  117. package/dist/src/fts/RoomData.js.map +1 -0
  118. package/dist/{fts → src/fts}/RoomDistance.d.ts +3 -3
  119. package/dist/src/fts/RoomDistance.js +23 -0
  120. package/dist/src/fts/RoomDistance.js.map +1 -0
  121. package/dist/{fts → src/fts}/SceneHeader.d.ts +4 -4
  122. package/dist/{fts → src/fts}/SceneHeader.js +13 -17
  123. package/dist/src/fts/SceneHeader.js.map +1 -0
  124. package/dist/{fts → src/fts}/SceneInfo.d.ts +3 -3
  125. package/dist/src/fts/SceneInfo.js +21 -0
  126. package/dist/src/fts/SceneInfo.js.map +1 -0
  127. package/dist/{fts → src/fts}/TextureContainer.d.ts +2 -2
  128. package/dist/{fts → src/fts}/TextureContainer.js +6 -10
  129. package/dist/src/fts/TextureContainer.js.map +1 -0
  130. package/dist/{fts → src/fts}/TextureVertex.d.ts +3 -3
  131. package/dist/{fts → src/fts}/TextureVertex.js +13 -17
  132. package/dist/src/fts/TextureVertex.js.map +1 -0
  133. package/dist/{fts → src/fts}/UniqueHeader.d.ts +2 -2
  134. package/dist/src/fts/UniqueHeader.js +21 -0
  135. package/dist/src/fts/UniqueHeader.js.map +1 -0
  136. package/dist/{fts → src/fts}/Vertex.d.ts +2 -2
  137. package/dist/src/fts/Vertex.js +19 -0
  138. package/dist/src/fts/Vertex.js.map +1 -0
  139. package/dist/{fts → src/fts}/constants.d.ts +1 -1
  140. package/dist/{fts → src/fts}/constants.js +2 -5
  141. package/dist/src/fts/constants.js.map +1 -0
  142. package/dist/{fts → src/fts}/helpers.d.ts +3 -3
  143. package/dist/{fts → src/fts}/helpers.js +7 -12
  144. package/dist/src/fts/helpers.js.map +1 -0
  145. package/dist/src/index.d.ts +6 -0
  146. package/dist/src/index.js +7 -0
  147. package/dist/src/index.js.map +1 -0
  148. package/dist/{llf → src/llf}/LLF.d.ts +4 -4
  149. package/dist/src/llf/LLF.js +29 -0
  150. package/dist/src/llf/LLF.js.map +1 -0
  151. package/dist/{llf → src/llf}/Light.d.ts +4 -4
  152. package/dist/{llf → src/llf}/Light.js +22 -22
  153. package/dist/src/llf/Light.js.map +1 -0
  154. package/dist/{llf → src/llf}/LightingHeader.d.ts +3 -3
  155. package/dist/{llf → src/llf}/LightingHeader.js +4 -8
  156. package/dist/src/llf/LightingHeader.js.map +1 -0
  157. package/dist/{llf → src/llf}/LlfHeader.d.ts +3 -3
  158. package/dist/{llf → src/llf}/LlfHeader.js +21 -22
  159. package/dist/src/llf/LlfHeader.js.map +1 -0
  160. package/dist/{tea → src/tea}/NewKeyFrame.d.ts +4 -4
  161. package/dist/src/tea/NewKeyFrame.js +29 -0
  162. package/dist/src/tea/NewKeyFrame.js.map +1 -0
  163. package/dist/{tea → src/tea}/OldKeyFrame.d.ts +3 -3
  164. package/dist/{tea → src/tea}/OldKeyFrame.js +6 -10
  165. package/dist/src/tea/OldKeyFrame.js.map +1 -0
  166. package/dist/{tea → src/tea}/TEA.d.ts +5 -5
  167. package/dist/{tea → src/tea}/TEA.js +14 -29
  168. package/dist/src/tea/TEA.js.map +1 -0
  169. package/dist/{tea → src/tea}/TeaHeader.d.ts +3 -3
  170. package/dist/src/tea/TeaHeader.js +25 -0
  171. package/dist/src/tea/TeaHeader.js.map +1 -0
  172. package/dist/src/types.d.ts +50 -0
  173. package/dist/src/types.js +13 -0
  174. package/dist/src/types.js.map +1 -0
  175. package/dist/{utils.d.ts → src/utils.d.ts} +3 -3
  176. package/dist/src/utils.js +3 -0
  177. package/dist/src/utils.js.map +1 -0
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +15 -14
  180. package/dist/amb/AMB.js +0 -25
  181. package/dist/amb/AMB.js.map +0 -1
  182. package/dist/amb/AmbHeader.js.map +0 -1
  183. package/dist/amb/Key.js +0 -46
  184. package/dist/amb/Key.js.map +0 -1
  185. package/dist/amb/Setting.js.map +0 -1
  186. package/dist/amb/Track.js.map +0 -1
  187. package/dist/amb/constants.js.map +0 -1
  188. package/dist/bin/constants.js +0 -7
  189. package/dist/bin/constants.js.map +0 -1
  190. package/dist/bin/convert.js +0 -149
  191. package/dist/bin/convert.js.map +0 -1
  192. package/dist/bin/helpers.js +0 -170
  193. package/dist/bin/helpers.js.map +0 -1
  194. package/dist/common/BinaryIO.js.map +0 -1
  195. package/dist/common/Color.js.map +0 -1
  196. package/dist/common/constants.js.map +0 -1
  197. package/dist/common/helpers.js +0 -54
  198. package/dist/common/helpers.js.map +0 -1
  199. package/dist/common/types.js +0 -3
  200. package/dist/dlf/DLF.js +0 -82
  201. package/dist/dlf/DLF.js.map +0 -1
  202. package/dist/dlf/DlfHeader.js.map +0 -1
  203. package/dist/dlf/Fog.js +0 -64
  204. package/dist/dlf/Fog.js.map +0 -1
  205. package/dist/dlf/InteactiveObject.js.map +0 -1
  206. package/dist/dlf/Scene.js +0 -35
  207. package/dist/dlf/Scene.js.map +0 -1
  208. package/dist/dlf/ZoneAndPathHeader.js.map +0 -1
  209. package/dist/dlf/ZoneAndPathPoint.js +0 -56
  210. package/dist/dlf/ZoneAndPathPoint.js.map +0 -1
  211. package/dist/ftl/Action.js.map +0 -1
  212. package/dist/ftl/FTL.js +0 -72
  213. package/dist/ftl/FTL.js.map +0 -1
  214. package/dist/ftl/Face.js.map +0 -1
  215. package/dist/ftl/FtlHeader.js.map +0 -1
  216. package/dist/ftl/FtlTextureContainer.js +0 -24
  217. package/dist/ftl/FtlTextureContainer.js.map +0 -1
  218. package/dist/ftl/FtlVertex.js +0 -28
  219. package/dist/ftl/FtlVertex.js.map +0 -1
  220. package/dist/ftl/Group.js +0 -31
  221. package/dist/ftl/Group.js.map +0 -1
  222. package/dist/ftl/Selections.js.map +0 -1
  223. package/dist/ftl/constants.js +0 -5
  224. package/dist/ftl/constants.js.map +0 -1
  225. package/dist/fts/Anchor.js +0 -35
  226. package/dist/fts/Anchor.js.map +0 -1
  227. package/dist/fts/AnchorData.js.map +0 -1
  228. package/dist/fts/Cell.js +0 -32
  229. package/dist/fts/Cell.js.map +0 -1
  230. package/dist/fts/EPData.js +0 -22
  231. package/dist/fts/EPData.js.map +0 -1
  232. package/dist/fts/FTS.js +0 -90
  233. package/dist/fts/FTS.js.map +0 -1
  234. package/dist/fts/FtsHeader.js.map +0 -1
  235. package/dist/fts/Polygon.js.map +0 -1
  236. package/dist/fts/Portal.js +0 -32
  237. package/dist/fts/Portal.js.map +0 -1
  238. package/dist/fts/PortalPolygon.js.map +0 -1
  239. package/dist/fts/Room.js +0 -27
  240. package/dist/fts/Room.js.map +0 -1
  241. package/dist/fts/RoomData.js +0 -29
  242. package/dist/fts/RoomData.js.map +0 -1
  243. package/dist/fts/RoomDistance.js +0 -27
  244. package/dist/fts/RoomDistance.js.map +0 -1
  245. package/dist/fts/SceneHeader.js.map +0 -1
  246. package/dist/fts/SceneInfo.js +0 -26
  247. package/dist/fts/SceneInfo.js.map +0 -1
  248. package/dist/fts/TextureContainer.js.map +0 -1
  249. package/dist/fts/TextureVertex.js.map +0 -1
  250. package/dist/fts/UniqueHeader.js +0 -25
  251. package/dist/fts/UniqueHeader.js.map +0 -1
  252. package/dist/fts/Vertex.js +0 -23
  253. package/dist/fts/Vertex.js.map +0 -1
  254. package/dist/fts/constants.js.map +0 -1
  255. package/dist/fts/helpers.js.map +0 -1
  256. package/dist/index.d.ts +0 -6
  257. package/dist/index.js +0 -16
  258. package/dist/index.js.map +0 -1
  259. package/dist/llf/LLF.js +0 -44
  260. package/dist/llf/LLF.js.map +0 -1
  261. package/dist/llf/Light.js.map +0 -1
  262. package/dist/llf/LightingHeader.js.map +0 -1
  263. package/dist/llf/LlfHeader.js.map +0 -1
  264. package/dist/tea/NewKeyFrame.js +0 -33
  265. package/dist/tea/NewKeyFrame.js.map +0 -1
  266. package/dist/tea/OldKeyFrame.js.map +0 -1
  267. package/dist/tea/TEA.js.map +0 -1
  268. package/dist/tea/TeaHeader.js +0 -29
  269. package/dist/tea/TeaHeader.js.map +0 -1
  270. package/dist/types.d.ts +0 -50
  271. package/dist/types.js +0 -22
  272. package/dist/types.js.map +0 -1
  273. package/dist/utils.js +0 -9
  274. package/dist/utils.js.map +0 -1
  275. /package/dist/{amb → src/amb}/constants.d.ts +0 -0
  276. /package/dist/{bin → src/bin}/constants.d.ts +0 -0
  277. /package/dist/{bin → src/bin}/convert.d.ts +0 -0
  278. /package/dist/{common → src/common}/constants.d.ts +0 -0
  279. /package/dist/{common → src/common}/helpers.d.ts +0 -0
  280. /package/dist/{common → src/common}/types.d.ts +0 -0
  281. /package/dist/{ftl → src/ftl}/constants.d.ts +0 -0
package/README.md CHANGED
@@ -116,7 +116,7 @@ import { ArxDLF } from 'arx-convert/types'
116
116
 
117
117
  ## Compression
118
118
 
119
- Arx Fatalis files are partially compressed with Stormlib Pkware and you need a separate
119
+ Some Arx Fatalis files are partially compressed with Stormlib Pkware and you need a separate
120
120
  tool for unpacking/repacking: [node-pkware](https://www.npmjs.com/package/node-pkware)
121
121
 
122
122
  Also, Arx Fatalis file headers are not constant in size, but there is a tool
@@ -128,7 +128,7 @@ Install these tools by running
128
128
  npm i node-pkware arx-header-size -g
129
129
  ```
130
130
 
131
- ### Example for unpacking
131
+ ### Example for unpacking a compressed file
132
132
 
133
133
  ```sh
134
134
  arx-header-size level3.dlf --format=dlf # this will print out 8520
@@ -136,9 +136,104 @@ explode level3.dlf --offset=8520 --output=level3.dlf.unpacked
136
136
  arx-convert level3.dlf.unpacked --from=dlf --to=yaml --output=level3.dlf.yml
137
137
  ```
138
138
 
139
- ### Example for repacking
139
+ ### Example for repacking a file that needs compression
140
140
 
141
141
  ```sh
142
142
  arx-convert level3.dlf.yml --from=yaml --to=dlf --output=level3.dlf.repacked
143
143
  implode level3.dlf.repacked --offset=8520 --binary --large --output=level3.dlf
144
144
  ```
145
+
146
+ ### General scripts with detection to whether the input needs decompression or not
147
+
148
+ #### unpack.sh
149
+
150
+ ```sh
151
+ #!/bin/bash
152
+
153
+ #
154
+ # usage: unpack.sh goblin_lord.ftl
155
+ # unpack.sh ../goblin_lord/goblin_lord.ftl json
156
+ #
157
+
158
+ # try reading the 1st argument from the command line
159
+ if [ $# -lt 1 ]; then
160
+ echo "missing filename, expected format: $0 <filename>"
161
+ exit 1
162
+ fi
163
+
164
+ # read the 1st argument
165
+ INPUT=$1
166
+
167
+ # get the extension of the input file's name and make it lowercase
168
+ INPUT_FORMAT=$( \
169
+ echo $INPUT \
170
+ | tr '[:upper:]' '[:lower:]' \
171
+ | tr '.' '\n' \
172
+ | tail -1 \
173
+ )
174
+
175
+ # if a 2nd argument exists, then read it, otherwise set yaml as the output format
176
+ if [ $# -lt 2 ]; then
177
+ OUTPUT_FORMAT=yml
178
+ else
179
+ OUTPUT_FORMAT=$2
180
+ fi
181
+
182
+ # get the offset in bytes, might also get back "not compressed"
183
+ OFFSET=$(arx-header-size $INPUT --format=$INPUT_FORMAT)
184
+
185
+ if [[ $OFFSET == "not compressed" ]]; then
186
+ arx-convert $INPUT --from=$INPUT_FORMAT --to=$OUTPUT_FORMAT --pretty --output="$INPUT.$OUTPUT_FORMAT"
187
+ else
188
+ explode $INPUT --offset=$OFFSET | arx-convert --from=$INPUT_FORMAT --to=$OUTPUT_FORMAT --pretty --output="$INPUT.$OUTPUT_FORMAT"
189
+ fi
190
+ ```
191
+
192
+ #### repack.sh
193
+
194
+ ```sh
195
+ #!/bin/bash
196
+
197
+ #
198
+ # usage: repack.sh level3.dlf.json
199
+ # repack.sh ../level3/level3.dlf.json
200
+ #
201
+
202
+ # try reading the 1st argument from the command line
203
+ if [ $# -lt 1 ]; then
204
+ echo "missing filename, expected format: $0 <filename>"
205
+ exit 1
206
+ fi
207
+
208
+ # read the 1st argument
209
+ INPUT=$1
210
+
211
+ # something.ftl.json -> json
212
+ INPUT_FORMAT=$( \
213
+ echo $INPUT \
214
+ | tr '[:upper:]' '[:lower:]' \
215
+ | tr '.' '\n' \
216
+ | tail -1 \
217
+ )
218
+
219
+ # something.ftl.json -> ftl
220
+ OUTPUT_FORMAT=$( \
221
+ echo $INPUT \
222
+ | tr '[:upper:]' '[:lower:]' \
223
+ | tr '.' '\n' \
224
+ | tail -2 \
225
+ | head -1 \
226
+ )
227
+
228
+ arx-convert $INPUT --from=$INPUT_FORMAT --to=$OUTPUT_FORMAT --pretty --output="$INPUT.$OUTPUT_FORMAT.tmp"
229
+
230
+ # get the offset in bytes, might also get back "not compressed"
231
+ OFFSET=$(arx-header-size $INPUT --format=$OUTPUT_FORMAT)
232
+
233
+ if [[ $OFFSET == "not compressed" ]]; then
234
+ mv "$INPUT.$OUTPUT_FORMAT.tmp" "$INPUT.$OUTPUT_FORMAT"
235
+ else
236
+ implode "$INPUT.$OUTPUT_FORMAT.tmp" --offset=$OFFSET --binary --large --output="$INPUT.$OUTPUT_FORMAT"
237
+ rm "$INPUT.$OUTPUT_FORMAT.tmp"
238
+ fi
239
+ ```
@@ -1,6 +1,6 @@
1
- /// <reference types="node" />
1
+ /// <reference types="node" resolution-mode="require"/>
2
2
  import { Buffer } from 'node:buffer';
3
- import { ArxTrack } from './Track';
3
+ import { ArxTrack } from './Track.js';
4
4
  export type ArxAMB = {
5
5
  tracks: ArxTrack[];
6
6
  };
@@ -0,0 +1,21 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { BinaryIO } from '../common/BinaryIO.js';
3
+ import { times } from '../common/helpers.js';
4
+ import { AmbHeader } from './AmbHeader.js';
5
+ import { Track } from './Track.js';
6
+ export class AMB {
7
+ static load(decompressedFile) {
8
+ const file = new BinaryIO(decompressedFile);
9
+ const { numberOfTracks, isNewerVersion } = AmbHeader.readFrom(file);
10
+ const data = {
11
+ tracks: times(() => Track.readFrom(file, isNewerVersion), numberOfTracks),
12
+ };
13
+ return data;
14
+ }
15
+ static save(json) {
16
+ const header = AmbHeader.accumulateFrom(json);
17
+ const tracks = Buffer.concat(json.tracks.map(Track.accumulateFrom));
18
+ return Buffer.concat([header, tracks]);
19
+ }
20
+ }
21
+ //# sourceMappingURL=AMB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AMB.js","sourceRoot":"","sources":["../../../src/amb/AMB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAY,MAAM,eAAe,CAAA;AAM/C,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAwB;QAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,IAAI,GAAW;YACnB,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC;SAC1E,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QAEnE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- /// <reference types="node" />
2
- import { BinaryIO } from '../common/BinaryIO';
3
- import { ArxAMB } from './AMB';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { BinaryIO } from '../common/BinaryIO.js';
3
+ import { ArxAMB } from './AMB.js';
4
4
  export type ArxAmbHeader = {
5
5
  isNewerVersion: boolean;
6
6
  numberOfTracks: number;
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AmbHeader = void 0;
4
- const BinaryIO_1 = require("../common/BinaryIO");
5
- const constants_1 = require("./constants");
6
- class AmbHeader {
1
+ import { BinaryIO } from '../common/BinaryIO.js';
2
+ import { VERSION_1003, VERSION_1002 } from './constants.js';
3
+ export class AmbHeader {
7
4
  /**
8
5
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L627
9
6
  */
@@ -11,21 +8,20 @@ class AmbHeader {
11
8
  binary.readString(4); // identifier - always "GAMB"
12
9
  const version = binary.readUint32();
13
10
  return {
14
- isNewerVersion: version >= constants_1.VERSION_1002,
11
+ isNewerVersion: version >= VERSION_1002,
15
12
  numberOfTracks: binary.readUint32(),
16
13
  };
17
14
  }
18
15
  static accumulateFrom(json) {
19
16
  const buffer = Buffer.alloc(AmbHeader.sizeOf());
20
- const binary = new BinaryIO_1.BinaryIO(buffer);
17
+ const binary = new BinaryIO(buffer);
21
18
  binary.writeString('GAMB', 4);
22
- binary.writeInt32(constants_1.VERSION_1003);
19
+ binary.writeInt32(VERSION_1003);
23
20
  binary.writeInt32(json.tracks.length);
24
21
  return buffer;
25
22
  }
26
23
  static sizeOf() {
27
- return BinaryIO_1.BinaryIO.sizeOfString(4) + BinaryIO_1.BinaryIO.sizeOfInt32() * 2;
24
+ return BinaryIO.sizeOfString(4) + BinaryIO.sizeOfInt32() * 2;
28
25
  }
29
26
  }
30
- exports.AmbHeader = AmbHeader;
31
27
  //# sourceMappingURL=AmbHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmbHeader.js","sourceRoot":"","sources":["../../../src/amb/AmbHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAO9D,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB;QAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,6BAA6B;QAElD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAEnC,OAAO;YACL,cAAc,EAAE,OAAO,IAAI,YAAY;YACvC,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE;SACpC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAErC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IAC9D,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- /// <reference types="node" />
2
- import { BinaryIO } from '../common/BinaryIO';
3
- import { ArxSetting } from './Setting';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { BinaryIO } from '../common/BinaryIO.js';
3
+ import { ArxSetting } from './Setting.js';
4
4
  /**
5
5
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L168
6
6
  */
@@ -0,0 +1,42 @@
1
+ import { BinaryIO } from '../common/BinaryIO.js';
2
+ import { Setting } from './Setting.js';
3
+ export class Key {
4
+ /**
5
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L187
6
+ */
7
+ static readFrom(binary) {
8
+ binary.readUint32(); // flags - always 0
9
+ return {
10
+ start: binary.readUint32(),
11
+ loop: binary.readUint32() + 1,
12
+ delayMin: binary.readUint32(),
13
+ delayMax: binary.readUint32(),
14
+ volume: Setting.readFrom(binary),
15
+ pitch: Setting.readFrom(binary),
16
+ pan: Setting.readFrom(binary),
17
+ x: Setting.readFrom(binary),
18
+ y: Setting.readFrom(binary),
19
+ z: Setting.readFrom(binary),
20
+ };
21
+ }
22
+ static accumulateFrom(key) {
23
+ const buffer = Buffer.alloc(Key.sizeOf());
24
+ const binary = new BinaryIO(buffer);
25
+ binary.writeUint32(0); // flags
26
+ binary.writeUint32(key.start);
27
+ binary.writeUint32(key.loop - 1);
28
+ binary.writeUint32(key.delayMin);
29
+ binary.writeUint32(key.delayMax);
30
+ binary.writeBuffer(Setting.accumulateFrom(key.volume));
31
+ binary.writeBuffer(Setting.accumulateFrom(key.pitch));
32
+ binary.writeBuffer(Setting.accumulateFrom(key.pan));
33
+ binary.writeBuffer(Setting.accumulateFrom(key.x));
34
+ binary.writeBuffer(Setting.accumulateFrom(key.y));
35
+ binary.writeBuffer(Setting.accumulateFrom(key.z));
36
+ return buffer;
37
+ }
38
+ static sizeOf() {
39
+ return BinaryIO.sizeOfInt32() * 5 + Setting.sizeOf() * 6;
40
+ }
41
+ }
42
+ //# sourceMappingURL=Key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Key.js","sourceRoot":"","sources":["../../../src/amb/Key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAc,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAqBrD,MAAM,OAAO,GAAG;IACd;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB;QAC9B,MAAM,CAAC,UAAU,EAAE,CAAA,CAAC,mBAAmB;QAEvC,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;YAC7B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;YAE7B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3B,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC5B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA,CAAC,QAAQ;QAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEhC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACtD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACnD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAEjD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1D,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- /// <reference types="node" />
2
- import { BinaryIO } from '../common/BinaryIO';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { BinaryIO } from '../common/BinaryIO.js';
3
3
  /**
4
4
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L84
5
5
  */
@@ -1,17 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Setting = exports.ArxSettingFlag = void 0;
4
- const BinaryIO_1 = require("../common/BinaryIO");
1
+ import { BinaryIO } from '../common/BinaryIO.js';
5
2
  /**
6
3
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L84
7
4
  */
8
- var ArxSettingFlag;
5
+ export var ArxSettingFlag;
9
6
  (function (ArxSettingFlag) {
10
7
  ArxSettingFlag[ArxSettingFlag["None"] = 0] = "None";
11
8
  ArxSettingFlag[ArxSettingFlag["Random"] = 1] = "Random";
12
9
  ArxSettingFlag[ArxSettingFlag["Interpolate"] = 2] = "Interpolate";
13
- })(ArxSettingFlag = exports.ArxSettingFlag || (exports.ArxSettingFlag = {}));
14
- class Setting {
10
+ })(ArxSettingFlag || (ArxSettingFlag = {}));
11
+ export class Setting {
15
12
  /**
16
13
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L107
17
14
  */
@@ -25,7 +22,7 @@ class Setting {
25
22
  }
26
23
  static accumulateFrom(setting) {
27
24
  const buffer = Buffer.alloc(Setting.sizeOf());
28
- const binary = new BinaryIO_1.BinaryIO(buffer);
25
+ const binary = new BinaryIO(buffer);
29
26
  binary.writeFloat32(setting.min);
30
27
  binary.writeFloat32(setting.max);
31
28
  binary.writeUint32(setting.interval);
@@ -33,8 +30,7 @@ class Setting {
33
30
  return buffer;
34
31
  }
35
32
  static sizeOf() {
36
- return BinaryIO_1.BinaryIO.sizeOfFloat32() * 2 + BinaryIO_1.BinaryIO.sizeOfInt32() * 2;
33
+ return BinaryIO.sizeOfFloat32() * 2 + BinaryIO.sizeOfInt32() * 2;
37
34
  }
38
35
  }
39
- exports.Setting = Setting;
40
36
  //# sourceMappingURL=Setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Setting.js","sourceRoot":"","sources":["../../../src/amb/Setting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C;;GAEG;AACH,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mDAAQ,CAAA;IACR,uDAAe,CAAA;IACf,iEAAoB,CAAA;AACtB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAaD,MAAM,OAAO,OAAO;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB;QAC9B,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;YACzB,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;YAC7B,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;SAC3B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAmB;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEjC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- /// <reference types="node" />
2
- import { BinaryIO } from '../common/BinaryIO';
3
- import { ArxKey } from './Key';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { BinaryIO } from '../common/BinaryIO.js';
3
+ import { ArxKey } from './Key.js';
4
4
  /**
5
5
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L230
6
6
  */
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Track = exports.ArxTrackFlags = void 0;
4
- const BinaryIO_1 = require("../common/BinaryIO");
5
- const helpers_1 = require("../common/helpers");
6
- const Key_1 = require("./Key");
1
+ import { BinaryIO } from '../common/BinaryIO.js';
2
+ import { times } from '../common/helpers.js';
3
+ import { Key } from './Key.js';
7
4
  /**
8
5
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L230
9
6
  */
10
- var ArxTrackFlags;
7
+ export var ArxTrackFlags;
11
8
  (function (ArxTrackFlags) {
12
9
  ArxTrackFlags[ArxTrackFlags["None"] = 0] = "None";
13
10
  ArxTrackFlags[ArxTrackFlags["Position"] = 1] = "Position";
@@ -16,8 +13,8 @@ var ArxTrackFlags;
16
13
  // ? = 1 << 3,
17
14
  ArxTrackFlags[ArxTrackFlags["Paused"] = 16] = "Paused";
18
15
  ArxTrackFlags[ArxTrackFlags["Prefetched"] = 32] = "Prefetched";
19
- })(ArxTrackFlags = exports.ArxTrackFlags || (exports.ArxTrackFlags = {}));
20
- class Track {
16
+ })(ArxTrackFlags || (ArxTrackFlags = {}));
17
+ export class Track {
21
18
  /**
22
19
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L531
23
20
  */
@@ -28,7 +25,7 @@ class Track {
28
25
  }
29
26
  const flags = binary.readUint32();
30
27
  const numberOfKeys = binary.readUint32();
31
- const keys = (0, helpers_1.times)(() => Key_1.Key.readFrom(binary), numberOfKeys);
28
+ const keys = times(() => Key.readFrom(binary), numberOfKeys);
32
29
  if (isNewerVersion) {
33
30
  keys.reverse();
34
31
  }
@@ -40,12 +37,12 @@ class Track {
40
37
  }
41
38
  static accumulateFrom(track) {
42
39
  const buffer = Buffer.alloc(Track.sizeOf(track));
43
- const binary = new BinaryIO_1.BinaryIO(buffer);
40
+ const binary = new BinaryIO(buffer);
44
41
  binary.writeString(Track.toAbsolutePath(track.filename));
45
42
  binary.writeString(''); // name
46
43
  binary.writeUint32(track.flags);
47
44
  binary.writeUint32(track.keys.length);
48
- binary.writeBuffer(Buffer.concat(track.keys.reverse().map(Key_1.Key.accumulateFrom)));
45
+ binary.writeBuffer(Buffer.concat(track.keys.reverse().map(Key.accumulateFrom)));
49
46
  return buffer;
50
47
  }
51
48
  /**
@@ -69,11 +66,10 @@ class Track {
69
66
  return filename.toLowerCase().replace(/\//g, '\\');
70
67
  }
71
68
  static sizeOf(track) {
72
- return (BinaryIO_1.BinaryIO.sizeOfNullTerminatedString(track.filename) +
73
- BinaryIO_1.BinaryIO.sizeOfNullTerminatedString('') +
74
- BinaryIO_1.BinaryIO.sizeOfUint32() * 2 +
75
- Key_1.Key.sizeOf() * track.keys.length);
69
+ return (BinaryIO.sizeOfNullTerminatedString(track.filename) +
70
+ BinaryIO.sizeOfNullTerminatedString('') +
71
+ BinaryIO.sizeOfUint32() * 2 +
72
+ Key.sizeOf() * track.keys.length);
76
73
  }
77
74
  }
78
- exports.Track = Track;
79
75
  //# sourceMappingURL=Track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Track.js","sourceRoot":"","sources":["../../../src/amb/Track.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAU,GAAG,EAAE,MAAM,aAAa,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,iDAAQ,CAAA;IACR,yDAAiB,CAAA;IACjB,cAAc;IACd,qDAAe,CAAA;IACf,cAAc;IACd,sDAAe,CAAA;IACf,8DAAmB,CAAA;AACrB,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAQD,MAAM,OAAO,KAAK;IAChB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB,EAAE,cAAuB;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QAE1D,IAAI,cAAc,EAAE;YAClB,MAAM,CAAC,UAAU,EAAE,CAAA,CAAC,mBAAmB;SACxC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAExC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;QAC5D,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAA;SACf;QAED,OAAO;YACL,QAAQ;YACR,KAAK;YACL,IAAI;SACL,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAe;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,CAAC,OAAO;QAC9B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QAE/E,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAe;QAC3B,OAAO,CACL,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC;YACnD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;YAC3B,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CACjC,CAAA;IACH,CAAC;CACF"}
@@ -1,20 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VERSION_1002 = exports.VERSION_1003 = void 0;
4
1
  /**
5
2
  * 0x03 0x00 0x00 0x01
6
3
  * used in sfx/ambience/ambient_blackthing.amb
7
4
  *
8
5
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L78
9
6
  */
10
- exports.VERSION_1003 = 16777219;
7
+ export const VERSION_1003 = 16777219;
11
8
  /**
12
9
  * 0x02 0x00 0x00 0x01
13
10
  * used in sfx/ambience/ambient_crypt_e.amb
14
11
  *
15
12
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L77
16
13
  */
17
- exports.VERSION_1002 = 16777218;
14
+ export const VERSION_1002 = 16777218;
18
15
  // There exists an even older version: 16777218
19
16
  // 0x01 0x00 0x00 0x01
20
17
  // used in ambient_gob_intro.amb
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/amb/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEpC,+CAA+C;AAC/C,sBAAsB;AACtB,gCAAgC"}
@@ -0,0 +1,4 @@
1
+ export const SUPPORTED_ARX_FORMATS = ['dlf', 'fts', 'llf', 'ftl', 'tea', 'amb'];
2
+ export const SUPPORTED_DATA_FORMATS = ['json', 'yaml', 'yml'];
3
+ export const SUPPORTED_FORMATS = [...SUPPORTED_ARX_FORMATS, ...SUPPORTED_DATA_FORMATS];
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/bin/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,sBAAsB,CAAU,CAAA"}
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env -S node --enable-source-maps
2
+ import minimist from 'minimist-lite';
3
+ import { getPackageVersion, streamToBuffer, stringifyYAML, stringifyJSON, outputInChunks, getInputStream, getOutputStream, isValidFormat, isArxFormat, isDataFormat, } from './helpers.js';
4
+ import { DLF, FTS, LLF, FTL, TEA, AMB } from '../index.js';
5
+ const args = minimist(process.argv.slice(2), {
6
+ string: ['output', 'from', 'to'],
7
+ boolean: ['version', 'format', 'pretty', 'prettify'],
8
+ alias: {
9
+ v: 'version',
10
+ },
11
+ });
12
+ (async () => {
13
+ if (args.version) {
14
+ const version = await getPackageVersion();
15
+ console.log(`arx-convert - version ${version}`);
16
+ process.exit(0);
17
+ }
18
+ let input;
19
+ let output;
20
+ try {
21
+ if (typeof args.from === 'undefined' || args.from === '') {
22
+ throw new Error('"from" argument is missing or empty');
23
+ }
24
+ if (typeof args.to === 'undefined' || args.to === '') {
25
+ throw new Error('"to" argument is missing or empty');
26
+ }
27
+ if (!isValidFormat(args.from)) {
28
+ throw new Error(`unknown format '${args.from}' in "from"`);
29
+ }
30
+ if (!isValidFormat(args.to)) {
31
+ throw new Error(`unknown format '${args.to}' in "to"`);
32
+ }
33
+ if (args.from === args.to) {
34
+ throw new Error('"from" and "to" have the same format');
35
+ }
36
+ if (isArxFormat(args.from) && isArxFormat(args.to)) {
37
+ throw new Error('"from" and "to" are both referencing arx formats, expected one of them to be a data type');
38
+ }
39
+ if (isDataFormat(args.from) && isDataFormat(args.to)) {
40
+ throw new Error('"from" and "to" are both referencing data types, expected one of them to be an arx format');
41
+ }
42
+ input = await getInputStream(args._[0]);
43
+ output = await getOutputStream(args.output);
44
+ }
45
+ catch (e) {
46
+ const error = e;
47
+ console.error('error:', error.message);
48
+ process.exit(1);
49
+ }
50
+ const rawIn = await streamToBuffer(input);
51
+ let parsedIn;
52
+ switch (args.from) {
53
+ case 'json':
54
+ parsedIn = JSON.parse(rawIn.toString('utf-8'));
55
+ break;
56
+ case 'yml':
57
+ case 'yaml':
58
+ {
59
+ const YAML = await import('yaml');
60
+ parsedIn = YAML.parse(rawIn.toString('utf-8'));
61
+ }
62
+ break;
63
+ case 'dlf':
64
+ parsedIn = DLF.load(rawIn);
65
+ break;
66
+ case 'fts':
67
+ parsedIn = FTS.load(rawIn);
68
+ break;
69
+ case 'llf':
70
+ parsedIn = LLF.load(rawIn);
71
+ break;
72
+ case 'ftl':
73
+ parsedIn = FTL.load(rawIn);
74
+ break;
75
+ case 'tea':
76
+ parsedIn = TEA.load(rawIn);
77
+ break;
78
+ case 'amb':
79
+ parsedIn = AMB.load(rawIn);
80
+ break;
81
+ }
82
+ let rawOut;
83
+ switch (args.to) {
84
+ case 'json':
85
+ rawOut = stringifyJSON(parsedIn, args.format || args.pretty || args.prettify);
86
+ break;
87
+ case 'yml':
88
+ case 'yaml':
89
+ rawOut = await stringifyYAML(parsedIn);
90
+ break;
91
+ case 'dlf':
92
+ rawOut = DLF.save(parsedIn);
93
+ break;
94
+ case 'fts':
95
+ rawOut = FTS.save(parsedIn);
96
+ break;
97
+ case 'llf':
98
+ rawOut = LLF.save(parsedIn);
99
+ break;
100
+ case 'ftl':
101
+ rawOut = FTL.save(parsedIn);
102
+ break;
103
+ case 'tea':
104
+ rawOut = TEA.save(parsedIn);
105
+ break;
106
+ case 'amb':
107
+ rawOut = AMB.save(parsedIn);
108
+ break;
109
+ }
110
+ outputInChunks(rawOut, output);
111
+ })();
112
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/bin/convert.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node" />
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /// <reference types="node" resolution-mode="require"/>
4
+ /// <reference types="node" resolution-mode="require"/>
5
+ /// <reference types="node" resolution-mode="require"/>
6
6
  import { Buffer } from 'node:buffer';
7
- import { SupportedFormat } from './constants';
7
+ import { SupportedFormat } from './constants.js';
8
8
  export declare const getPackageVersion: () => Promise<string>;
9
9
  export declare const concatBuffersSafe: (buffers: Buffer[]) => Buffer;
10
10
  export declare const streamToBuffer: (input: NodeJS.ReadableStream) => Promise<Buffer>;