wc3maptranslator 4.0.4 → 5.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 (130) hide show
  1. package/README.md +62 -43
  2. package/dist/src/AngleConverter.d.ts +4 -0
  3. package/dist/src/AngleConverter.d.ts.map +1 -0
  4. package/dist/{AngleConverter.js.map → src/AngleConverter.js.map} +1 -1
  5. package/dist/src/CommonInterfaces.d.ts +21 -0
  6. package/dist/src/CommonInterfaces.d.ts.map +1 -0
  7. package/dist/src/CommonInterfaces.js +20 -0
  8. package/dist/src/CommonInterfaces.js.map +1 -0
  9. package/dist/{HexBuffer.d.ts → src/HexBuffer.d.ts} +5 -2
  10. package/dist/src/HexBuffer.d.ts.map +1 -0
  11. package/dist/src/HexBuffer.js +71 -0
  12. package/dist/src/HexBuffer.js.map +1 -0
  13. package/dist/src/PlayerBitfield.d.ts +30 -0
  14. package/dist/src/PlayerBitfield.d.ts.map +1 -0
  15. package/dist/src/PlayerBitfield.js +56 -0
  16. package/dist/src/PlayerBitfield.js.map +1 -0
  17. package/dist/src/TranslatorMappings.d.ts +12 -0
  18. package/dist/src/TranslatorMappings.d.ts.map +1 -0
  19. package/dist/src/TranslatorMappings.js +47 -0
  20. package/dist/src/TranslatorMappings.js.map +1 -0
  21. package/dist/{W3Buffer.d.ts → src/W3Buffer.d.ts} +4 -1
  22. package/dist/src/W3Buffer.d.ts.map +1 -0
  23. package/dist/{W3Buffer.js → src/W3Buffer.js} +13 -9
  24. package/dist/src/W3Buffer.js.map +1 -0
  25. package/dist/src/cli.d.ts +3 -0
  26. package/dist/src/cli.d.ts.map +1 -0
  27. package/dist/src/cli.js +162 -0
  28. package/dist/src/cli.js.map +1 -0
  29. package/dist/src/index.d.ts +12 -0
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/dist/src/index.js +27 -0
  32. package/dist/src/index.js.map +1 -0
  33. package/dist/src/translators/CamerasTranslator.d.ts +28 -0
  34. package/dist/src/translators/CamerasTranslator.d.ts.map +1 -0
  35. package/dist/{translators → src/translators}/CamerasTranslator.js +25 -24
  36. package/dist/src/translators/CamerasTranslator.js.map +1 -0
  37. package/dist/src/translators/DoodadsTranslator.d.ts +36 -0
  38. package/dist/src/translators/DoodadsTranslator.d.ts.map +1 -0
  39. package/dist/src/translators/DoodadsTranslator.js +138 -0
  40. package/dist/src/translators/DoodadsTranslator.js.map +1 -0
  41. package/dist/src/translators/ImportsTranslator.d.ts +8 -0
  42. package/dist/src/translators/ImportsTranslator.d.ts.map +1 -0
  43. package/dist/src/translators/ImportsTranslator.js +36 -0
  44. package/dist/src/translators/ImportsTranslator.js.map +1 -0
  45. package/dist/src/translators/InfoTranslator.d.ts +212 -0
  46. package/dist/src/translators/InfoTranslator.d.ts.map +1 -0
  47. package/dist/src/translators/InfoTranslator.js +521 -0
  48. package/dist/src/translators/InfoTranslator.js.map +1 -0
  49. package/dist/src/translators/ObjectsTranslator.d.ts +39 -0
  50. package/dist/src/translators/ObjectsTranslator.d.ts.map +1 -0
  51. package/dist/src/translators/ObjectsTranslator.js +239 -0
  52. package/dist/src/translators/ObjectsTranslator.js.map +1 -0
  53. package/dist/{translators → src/translators}/RegionsTranslator.d.ts +5 -4
  54. package/dist/src/translators/RegionsTranslator.d.ts.map +1 -0
  55. package/dist/{translators → src/translators}/RegionsTranslator.js +18 -35
  56. package/dist/src/translators/RegionsTranslator.js.map +1 -0
  57. package/dist/src/translators/SoundsTranslator.d.ts +75 -0
  58. package/dist/src/translators/SoundsTranslator.d.ts.map +1 -0
  59. package/dist/src/translators/SoundsTranslator.js +202 -0
  60. package/dist/src/translators/SoundsTranslator.js.map +1 -0
  61. package/dist/src/translators/StringsTranslator.d.ts +13 -0
  62. package/dist/src/translators/StringsTranslator.d.ts.map +1 -0
  63. package/dist/src/translators/StringsTranslator.js +43 -0
  64. package/dist/src/translators/StringsTranslator.js.map +1 -0
  65. package/dist/src/translators/TerrainTranslator.d.ts +55 -0
  66. package/dist/src/translators/TerrainTranslator.d.ts.map +1 -0
  67. package/dist/src/translators/TerrainTranslator.js +196 -0
  68. package/dist/src/translators/TerrainTranslator.js.map +1 -0
  69. package/dist/src/translators/UnitsTranslator.d.ts +102 -0
  70. package/dist/src/translators/UnitsTranslator.d.ts.map +1 -0
  71. package/dist/src/translators/UnitsTranslator.js +295 -0
  72. package/dist/src/translators/UnitsTranslator.js.map +1 -0
  73. package/package.json +28 -25
  74. package/dist/AngleConverter.d.ts +0 -3
  75. package/dist/AngleConverter.d.ts.map +0 -1
  76. package/dist/CommonInterfaces.d.ts +0 -17
  77. package/dist/CommonInterfaces.d.ts.map +0 -1
  78. package/dist/CommonInterfaces.js +0 -3
  79. package/dist/CommonInterfaces.js.map +0 -1
  80. package/dist/HexBuffer.d.ts.map +0 -1
  81. package/dist/HexBuffer.js +0 -71
  82. package/dist/HexBuffer.js.map +0 -1
  83. package/dist/W3Buffer.d.ts.map +0 -1
  84. package/dist/W3Buffer.js.map +0 -1
  85. package/dist/index.d.ts +0 -3
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js +0 -15
  88. package/dist/index.js.map +0 -1
  89. package/dist/translators/CamerasTranslator.d.ts +0 -23
  90. package/dist/translators/CamerasTranslator.d.ts.map +0 -1
  91. package/dist/translators/CamerasTranslator.js.map +0 -1
  92. package/dist/translators/DoodadsTranslator.d.ts +0 -23
  93. package/dist/translators/DoodadsTranslator.d.ts.map +0 -1
  94. package/dist/translators/DoodadsTranslator.js +0 -146
  95. package/dist/translators/DoodadsTranslator.js.map +0 -1
  96. package/dist/translators/ImportsTranslator.d.ts +0 -16
  97. package/dist/translators/ImportsTranslator.d.ts.map +0 -1
  98. package/dist/translators/ImportsTranslator.js +0 -62
  99. package/dist/translators/ImportsTranslator.js.map +0 -1
  100. package/dist/translators/InfoTranslator.d.ts +0 -124
  101. package/dist/translators/InfoTranslator.d.ts.map +0 -1
  102. package/dist/translators/InfoTranslator.js +0 -422
  103. package/dist/translators/InfoTranslator.js.map +0 -1
  104. package/dist/translators/ObjectsTranslator.d.ts +0 -23
  105. package/dist/translators/ObjectsTranslator.d.ts.map +0 -1
  106. package/dist/translators/ObjectsTranslator.js +0 -208
  107. package/dist/translators/ObjectsTranslator.js.map +0 -1
  108. package/dist/translators/RegionsTranslator.d.ts.map +0 -1
  109. package/dist/translators/RegionsTranslator.js.map +0 -1
  110. package/dist/translators/SoundsTranslator.d.ts +0 -35
  111. package/dist/translators/SoundsTranslator.d.ts.map +0 -1
  112. package/dist/translators/SoundsTranslator.js +0 -183
  113. package/dist/translators/SoundsTranslator.js.map +0 -1
  114. package/dist/translators/StringsTranslator.d.ts +0 -7
  115. package/dist/translators/StringsTranslator.d.ts.map +0 -1
  116. package/dist/translators/StringsTranslator.js +0 -44
  117. package/dist/translators/StringsTranslator.js.map +0 -1
  118. package/dist/translators/TerrainTranslator.d.ts +0 -33
  119. package/dist/translators/TerrainTranslator.d.ts.map +0 -1
  120. package/dist/translators/TerrainTranslator.js +0 -221
  121. package/dist/translators/TerrainTranslator.js.map +0 -1
  122. package/dist/translators/UnitsTranslator.d.ts +0 -40
  123. package/dist/translators/UnitsTranslator.d.ts.map +0 -1
  124. package/dist/translators/UnitsTranslator.js +0 -199
  125. package/dist/translators/UnitsTranslator.js.map +0 -1
  126. package/dist/translators/index.d.ts +0 -11
  127. package/dist/translators/index.d.ts.map +0 -1
  128. package/dist/translators/index.js +0 -23
  129. package/dist/translators/index.js.map +0 -1
  130. /package/dist/{AngleConverter.js → src/AngleConverter.js} +0 -0
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const HexBuffer_1 = require("../HexBuffer");
4
+ const W3Buffer_1 = require("../W3Buffer");
5
+ const CommonInterfaces_1 = require("../CommonInterfaces");
6
+ var TableType;
7
+ (function (TableType) {
8
+ TableType["original"] = "original";
9
+ TableType["custom"] = "custom";
10
+ })(TableType || (TableType = {}));
11
+ var ModificationType;
12
+ (function (ModificationType) {
13
+ ModificationType["int"] = "int";
14
+ ModificationType["real"] = "real";
15
+ ModificationType["unreal"] = "unreal";
16
+ ModificationType["string"] = "string";
17
+ })(ModificationType || (ModificationType = {}));
18
+ var ObjectType;
19
+ (function (ObjectType) {
20
+ ObjectType["Units"] = "units";
21
+ ObjectType["Items"] = "items";
22
+ ObjectType["Destructables"] = "destructables";
23
+ ObjectType["Doodads"] = "doodads";
24
+ ObjectType["Abilities"] = "abilities";
25
+ ObjectType["Buffs"] = "buffs";
26
+ ObjectType["Upgrades"] = "upgrades";
27
+ })(ObjectType || (ObjectType = {}));
28
+ ;
29
+ const varTypes = {
30
+ int: 0,
31
+ real: 1,
32
+ unreal: 2,
33
+ string: 3,
34
+ 0: 'int',
35
+ 1: 'real',
36
+ 2: 'unreal',
37
+ 3: 'string'
38
+ };
39
+ const destructableSkinFields = [
40
+ 'bnam', 'bsuf', 'bfil', 'blit',
41
+ 'btxi', 'btxf', 'buch', 'bvar',
42
+ 'bfxr', 'bsel', 'bmis', 'bmas',
43
+ 'bcpr', 'bmap', 'bmar', 'bptx',
44
+ 'bptd', 'bdsn', 'bsnd', 'bshd',
45
+ 'bsmm', 'bmmr', 'bmmg', 'bmmb',
46
+ 'bumm', 'bvcr', 'bvcg', 'bvcb',
47
+ 'bgsc', 'bgpm'
48
+ ];
49
+ class ObjectsTranslator extends CommonInterfaces_1.ITranslator {
50
+ static jsonToWar(type, json) {
51
+ const outBufferToWar = new HexBuffer_1.HexBuffer();
52
+ const outBufferSkin = new HexBuffer_1.HexBuffer();
53
+ outBufferToWar.addInt(3);
54
+ outBufferSkin.addInt(3);
55
+ const writeModification = (modification, tableType, objectId, buffer) => {
56
+ buffer.addChars(modification.id);
57
+ let modType = 0;
58
+ if (modification.type) {
59
+ modType = varTypes[modification.type];
60
+ }
61
+ else {
62
+ if (typeof modification.value === 'number') {
63
+ modType = varTypes.int;
64
+ }
65
+ else if (typeof modification.value === 'string') {
66
+ modType = varTypes.string;
67
+ }
68
+ else {
69
+ }
70
+ }
71
+ buffer.addInt(modType);
72
+ if (type === ObjectType.Doodads || type === ObjectType.Abilities || type === ObjectType.Upgrades) {
73
+ buffer.addInt(modification.level || modification.variation || 0);
74
+ buffer.addInt(modification.column || 0);
75
+ }
76
+ if (modType === varTypes.int && typeof modification.value === 'number') {
77
+ buffer.addInt(modification.value);
78
+ }
79
+ else if ((modType === varTypes.real || modType === varTypes.unreal) && typeof modification.value === 'number') {
80
+ buffer.addFloat(modification.value);
81
+ }
82
+ else if (modType === varTypes.string && typeof modification.value === 'string') {
83
+ buffer.addString(modification.value);
84
+ }
85
+ if (tableType === TableType.original) {
86
+ buffer.addChars(objectId);
87
+ }
88
+ else {
89
+ buffer.addByte(0);
90
+ buffer.addByte(0);
91
+ buffer.addByte(0);
92
+ buffer.addByte(0);
93
+ }
94
+ };
95
+ const writeObject = (object, buffer) => {
96
+ if (object.customId) {
97
+ buffer.addChars(object.originalId);
98
+ buffer.addChars(object.customId);
99
+ }
100
+ else {
101
+ buffer.addChars(object.originalId);
102
+ buffer.addByte(0);
103
+ buffer.addByte(0);
104
+ buffer.addByte(0);
105
+ buffer.addByte(0);
106
+ }
107
+ buffer.addInt(1);
108
+ buffer.addInt(0);
109
+ buffer.addInt(object.modifications.length);
110
+ for (const mod of object.modifications) {
111
+ writeModification(mod, object.customId ? TableType.custom : TableType.original, object.originalId, buffer);
112
+ }
113
+ };
114
+ const writeTable = (tableType, buffer, data) => {
115
+ const tableData = data[tableType];
116
+ buffer.addInt(Object.keys(tableData).length);
117
+ for (const objectId of Object.keys(tableData)) {
118
+ let originalId = '';
119
+ let customId = '';
120
+ if (objectId.indexOf(':') !== -1) {
121
+ [customId, originalId] = objectId.split(':');
122
+ }
123
+ else {
124
+ originalId = objectId;
125
+ }
126
+ writeObject({
127
+ originalId,
128
+ customId,
129
+ modifications: tableData[objectId]
130
+ }, buffer);
131
+ }
132
+ };
133
+ const splitObjectModificationTable = (input) => {
134
+ const original = {};
135
+ const originalSkin = {};
136
+ const custom = {};
137
+ const customSkin = {};
138
+ for (const table of [input.original, input.custom]) {
139
+ const isCustom = table === input.custom;
140
+ for (const objectId of Object.keys(table)) {
141
+ const regularFields = table[objectId].filter((d) => !destructableSkinFields.includes(d.id));
142
+ const skinFields = table[objectId].filter((d) => destructableSkinFields.includes(d.id));
143
+ if (regularFields.length)
144
+ (isCustom ? custom : original)[objectId] = regularFields;
145
+ if (skinFields.length)
146
+ (isCustom ? customSkin : originalSkin)[objectId] = skinFields;
147
+ }
148
+ }
149
+ return { original, custom, originalSkin, customSkin };
150
+ };
151
+ let usingSkinFile = false;
152
+ if (type === ObjectType.Destructables) {
153
+ const { original, custom, originalSkin, customSkin } = splitObjectModificationTable(json);
154
+ const jsonRegular = { original, custom };
155
+ writeTable(TableType.original, outBufferToWar, jsonRegular);
156
+ writeTable(TableType.custom, outBufferToWar, jsonRegular);
157
+ if (type === ObjectType.Destructables) {
158
+ const jsonSkin = { original: originalSkin, custom: customSkin };
159
+ usingSkinFile = Object.keys(jsonSkin.original).length > 0 || Object.keys(jsonSkin.custom).length > 0;
160
+ writeTable(TableType.original, outBufferSkin, jsonSkin);
161
+ writeTable(TableType.custom, outBufferSkin, jsonSkin);
162
+ }
163
+ }
164
+ else {
165
+ writeTable(TableType.original, outBufferToWar, json);
166
+ writeTable(TableType.custom, outBufferToWar, json);
167
+ }
168
+ return {
169
+ buffer: outBufferToWar.getBuffer(),
170
+ bufferSkin: (type === ObjectType.Destructables && usingSkinFile) ? outBufferSkin.getBuffer() : undefined
171
+ };
172
+ }
173
+ static warToJson(type, buffer, bufferSkin) {
174
+ const readModification = (buffer) => {
175
+ const id = buffer.readFourCC();
176
+ const valueType = Object.values(ModificationType)[buffer.readInt()];
177
+ let level = 0;
178
+ let column = 0;
179
+ if (type === ObjectType.Doodads || type === ObjectType.Abilities || type === ObjectType.Upgrades) {
180
+ level = buffer.readInt();
181
+ column = buffer.readInt();
182
+ }
183
+ let value = null;
184
+ if (valueType === 'int') {
185
+ value = buffer.readInt();
186
+ }
187
+ else if (valueType === 'real' || valueType === 'unreal') {
188
+ value = buffer.readFloat();
189
+ }
190
+ else {
191
+ value = buffer.readString();
192
+ }
193
+ buffer.readFourCC();
194
+ return { id, type: valueType, level, column, value };
195
+ };
196
+ const readObject = (buffer) => {
197
+ const originalId = buffer.readFourCC();
198
+ const customId = buffer.readFourCC();
199
+ buffer.readInt();
200
+ buffer.readInt();
201
+ const modificationCount = buffer.readInt();
202
+ const modifications = [];
203
+ for (let j = 0; j < modificationCount; j++) {
204
+ modifications.push(readModification(buffer));
205
+ }
206
+ return {
207
+ originalId,
208
+ customId,
209
+ modifications
210
+ };
211
+ };
212
+ const readTable = (tableType, buffer) => {
213
+ const numTableModifications = buffer.readInt();
214
+ const isOriginalTable = tableType === TableType.original;
215
+ for (let i = 0; i < numTableModifications; i++) {
216
+ const modifiedObject = readObject(buffer);
217
+ const idInTable = isOriginalTable ? modifiedObject.originalId : `${modifiedObject.customId}:${modifiedObject.originalId}`;
218
+ if (!(idInTable in result[tableType]))
219
+ result[tableType][idInTable] = [];
220
+ result[tableType][idInTable].push(...modifiedObject.modifications);
221
+ }
222
+ };
223
+ const result = { original: {}, custom: {} };
224
+ for (const buf of [buffer, bufferSkin]) {
225
+ if (!buf)
226
+ continue;
227
+ const outBufferToJSON = new W3Buffer_1.W3Buffer(buf);
228
+ (0, CommonInterfaces_1.expectVersion)(3, outBufferToJSON.readInt());
229
+ readTable(TableType.original, outBufferToJSON);
230
+ readTable(TableType.custom, outBufferToJSON);
231
+ }
232
+ return {
233
+ json: result
234
+ };
235
+ }
236
+ }
237
+ exports.default = ObjectsTranslator;
238
+ ObjectsTranslator.ObjectType = ObjectType;
239
+ //# sourceMappingURL=ObjectsTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectsTranslator.js","sourceRoot":"","sources":["../../../src/translators/ObjectsTranslator.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { WarResult, JsonResult } from '../CommonInterfaces';
2
+ /// <reference types="node" />
3
+ import { WarResult, JsonResult, ITranslator } from '../CommonInterfaces';
3
4
  interface Region {
4
5
  position: Rect;
5
6
  name: string;
6
7
  id: number;
7
- weatherEffect: string;
8
- ambientSound: string;
8
+ weatherEffect?: string;
9
+ ambientSound?: string;
9
10
  color: number[];
10
11
  }
11
12
  interface Rect {
@@ -14,7 +15,7 @@ interface Rect {
14
15
  right: number;
15
16
  top: number;
16
17
  }
17
- export declare abstract class RegionsTranslator {
18
+ export default abstract class RegionsTranslator extends ITranslator {
18
19
  static jsonToWar(regionsJson: Region[]): WarResult;
19
20
  static warToJson(buffer: Buffer): JsonResult<Region[]>;
20
21
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegionsTranslator.d.ts","sourceRoot":"","sources":["../../../src/translators/RegionsTranslator.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AAExF,UAAU,MAAM;IACZ,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,IAAI;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,iBAAkB,SAAQ,WAAW;WACjD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS;WAiD3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;CA4ChE"}
@@ -1,60 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RegionsTranslator = void 0;
4
3
  const HexBuffer_1 = require("../HexBuffer");
5
4
  const W3Buffer_1 = require("../W3Buffer");
6
- class RegionsTranslator {
5
+ const CommonInterfaces_1 = require("../CommonInterfaces");
6
+ class RegionsTranslator extends CommonInterfaces_1.ITranslator {
7
7
  static jsonToWar(regionsJson) {
8
8
  const outBufferToWar = new HexBuffer_1.HexBuffer();
9
- /*
10
- * Header
11
- */
12
- outBufferToWar.addInt(5); // file version
13
- outBufferToWar.addInt(regionsJson.length); // number of regions
14
- /*
15
- * Body
16
- */
17
- regionsJson.forEach((region) => {
18
- // Position
19
- // Note that the .w3x guide has these coords wrong - the guide swaps bottom and right, but this is incorrect; bottom should be written before right
9
+ outBufferToWar.addInt(5);
10
+ outBufferToWar.addInt(regionsJson.length);
11
+ for (const region of regionsJson) {
20
12
  outBufferToWar.addFloat(region.position.left);
21
13
  outBufferToWar.addFloat(region.position.bottom);
22
14
  outBufferToWar.addFloat(region.position.right);
23
15
  outBufferToWar.addFloat(region.position.top);
24
16
  outBufferToWar.addString(region.name);
25
17
  outBufferToWar.addInt(region.id);
26
- // Weather effect name - lookup necessary: char[4]
27
18
  if (region.weatherEffect) {
28
- outBufferToWar.addChars(region.weatherEffect); // Weather effect is optional - defaults to 0000 for "none"
19
+ outBufferToWar.addChars(region.weatherEffect);
29
20
  }
30
21
  else {
31
- // We can't put a string "0000", because ASCII 0's differ from 0x0 bytes
32
22
  outBufferToWar.addByte(0);
33
23
  outBufferToWar.addByte(0);
34
24
  outBufferToWar.addByte(0);
35
25
  outBufferToWar.addByte(0);
36
26
  }
37
- // Ambient sound - refer to names defined in .w3s file
38
- outBufferToWar.addString(region.ambientSound || ''); // May be empty string
39
- // Color of region used by editor
40
- // Careful! The order in .w3r is BB GG RR, whereas the JSON spec order is [RR, GG, BB]
41
- outBufferToWar.addByte(region.color[2]); // blue
42
- outBufferToWar.addByte(region.color[1]); // green
43
- outBufferToWar.addByte(region.color[0]); // red
44
- // End of structure - for some reason the .w3r needs this here;
45
- // Value is set to 0xff based on observing the .w3r file, but not sure if it could be something else
27
+ outBufferToWar.addString(region.ambientSound || '');
28
+ outBufferToWar.addByte(region.color[2]);
29
+ outBufferToWar.addByte(region.color[1]);
30
+ outBufferToWar.addByte(region.color[0]);
46
31
  outBufferToWar.addByte(0xff);
47
- });
32
+ }
48
33
  return {
49
- errors: [],
50
34
  buffer: outBufferToWar.getBuffer()
51
35
  };
52
36
  }
53
37
  static warToJson(buffer) {
54
38
  const result = [];
55
39
  const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer);
56
- const fileVersion = outBufferToJSON.readInt(), // File version
57
- numRegions = outBufferToJSON.readInt(); // # of regions
40
+ (0, CommonInterfaces_1.expectVersion)(5, outBufferToJSON.readInt());
41
+ const numRegions = outBufferToJSON.readInt();
58
42
  for (let i = 0; i < numRegions; i++) {
59
43
  const region = {
60
44
  name: '',
@@ -75,22 +59,21 @@ class RegionsTranslator {
75
59
  region.position.top = outBufferToJSON.readFloat();
76
60
  region.name = outBufferToJSON.readString();
77
61
  region.id = outBufferToJSON.readInt();
78
- region.weatherEffect = outBufferToJSON.readChars(4);
62
+ region.weatherEffect = outBufferToJSON.readChars(4, true);
79
63
  region.ambientSound = outBufferToJSON.readString();
80
64
  region.color = [
81
65
  outBufferToJSON.readByte(),
82
66
  outBufferToJSON.readByte(),
83
- outBufferToJSON.readByte() // blue
67
+ outBufferToJSON.readByte()
84
68
  ];
85
- region.color.reverse(); // json wants it in RGB, but .w3r file stores it as BB GG RR
86
- outBufferToJSON.readByte(); // end of region structure
69
+ region.color.reverse();
70
+ outBufferToJSON.readByte();
87
71
  result.push(region);
88
72
  }
89
73
  return {
90
- errors: [],
91
74
  json: result
92
75
  };
93
76
  }
94
77
  }
95
- exports.RegionsTranslator = RegionsTranslator;
78
+ exports.default = RegionsTranslator;
96
79
  //# sourceMappingURL=RegionsTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegionsTranslator.js","sourceRoot":"","sources":["../../../src/translators/RegionsTranslator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { WarResult, JsonResult, ITranslator } from '../CommonInterfaces';
4
+ declare enum EffectType {
5
+ Default = "DefaultEAXON",
6
+ Combat = "CombatSoundsEAX",
7
+ Drums = "KotoDrumsEAX",
8
+ Spells = "SpellsEAX",
9
+ Missiles = "MissilesEAX",
10
+ HeroSpeech = "HeroAcksEAX",
11
+ Doodads = "DoodadsEAX"
12
+ }
13
+ declare enum Channel {
14
+ General = 0,
15
+ UnitSelection = 1,
16
+ UnitAcknowledgement = 2,
17
+ UnitMovement = 3,
18
+ UnitReady = 4,
19
+ Combat = 5,
20
+ Error = 6,
21
+ Music = 7,
22
+ UserInterface = 8,
23
+ LoopingMovement = 9,
24
+ LoopingAmbient = 10,
25
+ Animations = 11,
26
+ Constructions = 12,
27
+ Birth = 13,
28
+ Fire = 14,
29
+ LegacyMidi = 15,
30
+ CinematicGeneral = 16,
31
+ CinematicAmbient = 17,
32
+ CinematicMusic = 18,
33
+ CinematicDialog = 19,
34
+ CinematicSFX1 = 20,
35
+ CinematicSFX2 = 21,
36
+ CinematicSFX3 = 22
37
+ }
38
+ interface Sound {
39
+ variableName: string;
40
+ internalName: string;
41
+ path: string;
42
+ effect?: EffectType;
43
+ flags: SoundFlags;
44
+ fadeRate: FadeRate;
45
+ volume?: number;
46
+ pitch: number;
47
+ channel?: number;
48
+ distance: Distance;
49
+ pitchVariance?: number;
50
+ priority?: number;
51
+ }
52
+ interface FadeRate {
53
+ in: number;
54
+ out: number;
55
+ }
56
+ interface SoundFlags {
57
+ looping: boolean;
58
+ '3dSound': boolean;
59
+ stopOutOfRange: boolean;
60
+ music: boolean;
61
+ imported: boolean;
62
+ }
63
+ interface Distance {
64
+ min: number;
65
+ max: number;
66
+ cutoff: number;
67
+ }
68
+ export default abstract class SoundsTranslator extends ITranslator {
69
+ static readonly EffectType: typeof EffectType;
70
+ static readonly Channel: typeof Channel;
71
+ static jsonToWar(soundsJson: Sound[]): WarResult;
72
+ static warToJson(buffer: Buffer): JsonResult<Sound[]>;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=SoundsTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoundsTranslator.d.ts","sourceRoot":"","sources":["../../../src/translators/SoundsTranslator.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AAExF,aAAK,UAAU;IACX,OAAO,iBAAiB;IACxB,MAAM,oBAAoB;IAC1B,KAAK,iBAAiB;IACtB,MAAM,cAAc;IACpB,QAAQ,gBAAgB;IACxB,UAAU,gBAAgB;IAC1B,OAAO,eAAe;CACzB;AAED,aAAK,OAAO;IACR,OAAO,IAAI;IACX,aAAa,IAAA;IACb,mBAAmB,IAAA;IACnB,YAAY,IAAA;IACZ,SAAS,IAAA;IACT,MAAM,IAAA;IACN,KAAK,IAAA;IACL,KAAK,IAAA;IACL,aAAa,IAAA;IACb,eAAe,IAAA;IACf,cAAc,KAAA;IACd,UAAU,KAAA;IACV,aAAa,KAAA;IACb,KAAK,KAAA;IACL,IAAI,KAAA;IACJ,UAAU,KAAA;IACV,gBAAgB,KAAA;IAChB,gBAAgB,KAAA;IAChB,cAAc,KAAA;IACd,eAAe,KAAA;IACf,aAAa,KAAA;IACb,aAAa,KAAA;IACb,aAAa,KAAA;CAChB;AAED,UAAU,KAAK;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,QAAQ;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,QAAQ;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAkBD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAiB,SAAQ,WAAW;IAC9D,gBAAuB,UAAU,oBAAc;IAC/C,gBAAuB,OAAO,iBAAW;WAE3B,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS;WAwFzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;CAmG/D"}