wc3maptranslator 4.0.0 → 4.0.2

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 (118) hide show
  1. package/LICENSE.md +23 -23
  2. package/dist/AngleConverter.d.ts +3 -0
  3. package/dist/AngleConverter.d.ts.map +1 -0
  4. package/dist/AngleConverter.js +12 -0
  5. package/dist/AngleConverter.js.map +1 -0
  6. package/dist/CommonInterfaces.d.ts +17 -0
  7. package/dist/CommonInterfaces.d.ts.map +1 -0
  8. package/dist/CommonInterfaces.js +3 -0
  9. package/dist/CommonInterfaces.js.map +1 -0
  10. package/dist/HexBuffer.d.ts +15 -0
  11. package/dist/HexBuffer.d.ts.map +1 -0
  12. package/{lib/HexBuffer.ts → dist/HexBuffer.js} +71 -81
  13. package/dist/HexBuffer.js.map +1 -0
  14. package/dist/W3Buffer.d.ts +14 -0
  15. package/dist/W3Buffer.d.ts.map +1 -0
  16. package/{lib/W3Buffer.ts → dist/W3Buffer.js} +63 -69
  17. package/dist/W3Buffer.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/{index.js → dist/index.js} +1 -1
  21. package/dist/index.js.map +1 -0
  22. package/dist/translators/CamerasTranslator.d.ts +23 -0
  23. package/dist/translators/CamerasTranslator.d.ts.map +1 -0
  24. package/{lib/translators/CamerasTranslator.ts → dist/translators/CamerasTranslator.js} +76 -101
  25. package/dist/translators/CamerasTranslator.js.map +1 -0
  26. package/dist/translators/DoodadsTranslator.d.ts +23 -0
  27. package/dist/translators/DoodadsTranslator.d.ts.map +1 -0
  28. package/{lib/translators/DoodadsTranslator.ts → dist/translators/DoodadsTranslator.js} +146 -178
  29. package/dist/translators/DoodadsTranslator.js.map +1 -0
  30. package/dist/translators/ImportsTranslator.d.ts +16 -0
  31. package/dist/translators/ImportsTranslator.d.ts.map +1 -0
  32. package/{lib/translators/ImportsTranslator.ts → dist/translators/ImportsTranslator.js} +62 -78
  33. package/dist/translators/ImportsTranslator.js.map +1 -0
  34. package/dist/translators/InfoTranslator.d.ts +124 -0
  35. package/dist/translators/InfoTranslator.d.ts.map +1 -0
  36. package/{lib/translators/InfoTranslator.ts → dist/translators/InfoTranslator.js} +422 -584
  37. package/dist/translators/InfoTranslator.js.map +1 -0
  38. package/dist/translators/ObjectsTranslator.d.ts +23 -0
  39. package/dist/translators/ObjectsTranslator.d.ts.map +1 -0
  40. package/{lib/translators/ObjectsTranslator.ts → dist/translators/ObjectsTranslator.js} +91 -125
  41. package/dist/translators/ObjectsTranslator.js.map +1 -0
  42. package/dist/translators/RegionsTranslator.d.ts +22 -0
  43. package/dist/translators/RegionsTranslator.d.ts.map +1 -0
  44. package/{lib/translators/RegionsTranslator.ts → dist/translators/RegionsTranslator.js} +96 -123
  45. package/dist/translators/RegionsTranslator.js.map +1 -0
  46. package/dist/translators/SoundsTranslator.d.ts +35 -0
  47. package/dist/translators/SoundsTranslator.d.ts.map +1 -0
  48. package/{lib/translators/SoundsTranslator.ts → dist/translators/SoundsTranslator.js} +183 -237
  49. package/dist/translators/SoundsTranslator.js.map +1 -0
  50. package/dist/translators/StringsTranslator.d.ts +7 -0
  51. package/dist/translators/StringsTranslator.d.ts.map +1 -0
  52. package/{lib/translators/StringsTranslator.ts → dist/translators/StringsTranslator.js} +44 -49
  53. package/dist/translators/StringsTranslator.js.map +1 -0
  54. package/dist/translators/TerrainTranslator.d.ts +33 -0
  55. package/dist/translators/TerrainTranslator.d.ts.map +1 -0
  56. package/{lib/translators/TerrainTranslator.ts → dist/translators/TerrainTranslator.js} +221 -276
  57. package/dist/translators/TerrainTranslator.js.map +1 -0
  58. package/dist/translators/UnitsTranslator.d.ts +40 -0
  59. package/dist/translators/UnitsTranslator.d.ts.map +1 -0
  60. package/{lib/translators/UnitsTranslator.ts → dist/translators/UnitsTranslator.js} +199 -261
  61. package/dist/translators/UnitsTranslator.js.map +1 -0
  62. package/{lib/translators/index.ts → dist/translators/index.d.ts} +11 -10
  63. package/dist/translators/index.d.ts.map +1 -0
  64. package/dist/translators/index.js +23 -0
  65. package/dist/translators/index.js.map +1 -0
  66. package/package.json +4 -2
  67. package/.codeclimate.yml +0 -12
  68. package/.editorconfig +0 -8
  69. package/.eslintignore +0 -5
  70. package/.eslintrc +0 -55
  71. package/.github/workflows/codeql-analysis.yml +0 -54
  72. package/.nycrc +0 -18
  73. package/.travis.yml +0 -23
  74. package/CHANGELOG.md +0 -73
  75. package/index.ts +0 -14
  76. package/lib/AngleConverter.ts +0 -7
  77. package/lib/CommonInterfaces.ts +0 -22
  78. package/test/.mocharc.json +0 -4
  79. package/test/AngleConverterTest.ts +0 -18
  80. package/test/HexBufferTest.ts +0 -170
  81. package/test/TranslatorReversion.ts +0 -218
  82. package/test/W3BufferTest.ts +0 -50
  83. package/test/data/cameras.json +0 -16
  84. package/test/data/doodads.json +0 -2730
  85. package/test/data/imports.json +0 -386
  86. package/test/data/info.json +0 -250
  87. package/test/data/obj-abilities.json +0 -4892
  88. package/test/data/obj-buffs.json +0 -38
  89. package/test/data/obj-destructables.json +0 -31
  90. package/test/data/obj-doodads.json +0 -38
  91. package/test/data/obj-items.json +0 -31
  92. package/test/data/obj-units.json +0 -40
  93. package/test/data/obj-upgrades.json +0 -38
  94. package/test/data/regions.json +0 -206
  95. package/test/data/sounds.json +0 -50
  96. package/test/data/strings.json +0 -115
  97. package/test/data/terrain.json +0 -1
  98. package/test/data/units.json +0 -452
  99. package/test/data/war3map.doo +0 -0
  100. package/test/data/war3map.imp +0 -0
  101. package/test/data/war3map.j +0 -3442
  102. package/test/data/war3map.shd +0 -0
  103. package/test/data/war3map.w3a +0 -0
  104. package/test/data/war3map.w3b +0 -0
  105. package/test/data/war3map.w3c +0 -0
  106. package/test/data/war3map.w3d +0 -0
  107. package/test/data/war3map.w3e +0 -0
  108. package/test/data/war3map.w3h +0 -0
  109. package/test/data/war3map.w3i +0 -0
  110. package/test/data/war3map.w3q +0 -0
  111. package/test/data/war3map.w3r +0 -0
  112. package/test/data/war3map.w3s +0 -0
  113. package/test/data/war3map.w3t +0 -0
  114. package/test/data/war3map.w3u +0 -0
  115. package/test/data/war3map.wts +0 -631
  116. package/test/data/war3mapUnits.doo +0 -0
  117. package/tsconfig.json +0 -25
  118. package/tslint.json +0 -47
@@ -1,237 +1,183 @@
1
- import { HexBuffer } from '../HexBuffer';
2
- import { W3Buffer } from '../W3Buffer';
3
- import { WarResult, JsonResult } from '../CommonInterfaces'
4
-
5
- interface Sound {
6
- name: string;
7
- variableName: string;
8
- path: string;
9
- eax: string;
10
- flags: SoundFlags;
11
- fadeRate: FadeRate;
12
- volume: number;
13
- pitch: number;
14
- channel: number;
15
- distance: Distance;
16
- }
17
-
18
- interface FadeRate {
19
- in: number;
20
- out: number;
21
- }
22
-
23
- interface SoundFlags {
24
- looping: boolean; // 0x00000001=looping
25
- '3dSound': boolean; // 0x00000002=3D sound
26
- stopOutOfRange: boolean; // 0x00000004=stop when out of range
27
- music: boolean; // 0x00000008=music
28
- }
29
-
30
- interface Distance {
31
- min: number;
32
- max: number;
33
- cutoff: number;
34
- }
35
-
36
- export abstract class SoundsTranslator {
37
-
38
- public static jsonToWar(soundsJson: Sound[]): WarResult {
39
- const outBufferToWar = new HexBuffer();
40
-
41
- /*
42
- * Header
43
- */
44
- outBufferToWar.addInt(3); // file version
45
- outBufferToWar.addInt(soundsJson.length); // number of sounds
46
-
47
- /*
48
- * Body
49
- */
50
- soundsJson.forEach((sound) => {
51
- outBufferToWar.addString(sound.name); // e.g. gg_snd_HumanGlueScreenLoop1
52
- outBufferToWar.addString(sound.path); // e.g. Sound\Ambient\HumanGlueScreenLoop1.wav
53
-
54
- // EAX effects enum (e.g. missiles, speech, etc)
55
- /*
56
- default = DefaultEAXON
57
- combat = CombatSoundsEAX
58
- drums = KotoDrumsEAX
59
- spells = SpellsEAX
60
- missiles = MissilesEAX
61
- hero speech = HeroAcksEAX
62
- doodads = DoodadsEAX
63
- */
64
- outBufferToWar.addString(sound.eax || 'DefaultEAXON'); // defaults to "DefaultEAXON"
65
-
66
- // Flags, if present (optional)
67
- let flags = 0;
68
- if (sound.flags) {
69
- if (sound.flags.looping) flags |= 0x1;
70
- if (sound.flags['3dSound']) flags |= 0x2;
71
- if (sound.flags.stopOutOfRange) flags |= 0x4;
72
- if (sound.flags.music) flags |= 0x8;
73
- }
74
- outBufferToWar.addInt(flags);
75
-
76
- // Fade in and out rate (optional)
77
- outBufferToWar.addInt(sound.fadeRate ? sound.fadeRate.in || 10 : 10); // default to 10
78
- outBufferToWar.addInt(sound.fadeRate ? sound.fadeRate.out || 10 : 10); // default to 10
79
-
80
- // Volume (optional)
81
- outBufferToWar.addInt(sound.volume || -1); // default to -1 (for normal volume)
82
-
83
- // Pitch (optional)
84
- outBufferToWar.addFloat(sound.pitch || 1.0); // default to 1.0 for normal pitch
85
-
86
- // Mystery numbers... their use is unknown by the w3x documentation, but they must be present
87
- outBufferToWar.addFloat(0);
88
- outBufferToWar.addInt(8); // or -1?
89
-
90
- // Which channel to use? Use the lookup table for more details (optional)
91
- /*
92
- 0=General
93
- 1=Unit Selection
94
- 2=Unit Acknowledgement
95
- 3=Unit Movement
96
- 4=Unit Ready
97
- 5=Combat
98
- 6=Error
99
- 7=Music
100
- 8=User Interface
101
- 9=Looping Movement
102
- 10=Looping Ambient
103
- 11=Animations
104
- 12=Constructions
105
- 13=Birth
106
- 14=Fire
107
- */
108
- outBufferToWar.addInt(sound.channel || 0); // default to 0
109
-
110
- // Distance fields
111
- outBufferToWar.addFloat(sound.distance.min);
112
- outBufferToWar.addFloat(sound.distance.max);
113
- outBufferToWar.addFloat(sound.distance.cutoff);
114
-
115
- // More mystery numbers...
116
- outBufferToWar.addFloat(0);
117
- outBufferToWar.addFloat(0);
118
- outBufferToWar.addFloat(127); // or -1?
119
- outBufferToWar.addFloat(0);
120
- outBufferToWar.addFloat(0);
121
- outBufferToWar.addFloat(0);
122
-
123
- outBufferToWar.addString(sound.variableName);
124
- outBufferToWar.addString('');
125
- outBufferToWar.addString(sound.path);
126
-
127
- // More unknowns
128
- outBufferToWar.addFloat(0);
129
- outBufferToWar.addByte(0);
130
- outBufferToWar.addFloat(0);
131
- outBufferToWar.addFloat(0);
132
- outBufferToWar.addFloat(0);
133
- outBufferToWar.addByte(0);
134
- outBufferToWar.addFloat(0);
135
- });
136
-
137
- return {
138
- errors: [],
139
- buffer: outBufferToWar.getBuffer()
140
- };
141
- }
142
-
143
- public static warToJson(buffer: Buffer): JsonResult<Sound[]> {
144
- const result = [];
145
- const outBufferToJSON = new W3Buffer(buffer);
146
-
147
- const fileVersion = outBufferToJSON.readInt(), // File version
148
- numSounds = outBufferToJSON.readInt(); // # of sounds
149
-
150
- for (let i = 0; i < numSounds; i++) {
151
- const sound: Sound = {
152
- name: '',
153
- variableName: '',
154
- path: '',
155
- eax: '',
156
- volume: 0,
157
- pitch: 0,
158
- channel: 0,
159
- flags: {
160
- 'looping': true, // 0x00000001=looping
161
- '3dSound': true, // 0x00000002=3D sound
162
- 'stopOutOfRange': true, // 0x00000004=stop when out of range
163
- 'music': true // 0x00000008=music},
164
- },
165
- fadeRate: {
166
- in: 0,
167
- out: 0
168
- },
169
- distance: {
170
- min: 0,
171
- max: 0,
172
- cutoff: 0
173
- }
174
- };
175
-
176
- sound.name = outBufferToJSON.readString();
177
- sound.path = outBufferToJSON.readString();
178
- sound.eax = outBufferToJSON.readString();
179
-
180
- const flags = outBufferToJSON.readInt();
181
- sound.flags = {
182
- 'looping': !!(flags & 0b1), // 0x00000001=looping
183
- '3dSound': !!(flags & 0b10), // 0x00000002=3D sound
184
- 'stopOutOfRange': !!(flags & 0b100), // 0x00000004=stop when out of range
185
- 'music': !!(flags & 0b1000) // 0x00000008=music
186
- };
187
-
188
- sound.fadeRate = {
189
- in: outBufferToJSON.readInt(),
190
- out: outBufferToJSON.readInt()
191
- };
192
-
193
- sound.volume = outBufferToJSON.readInt();
194
- sound.pitch = outBufferToJSON.readFloat();
195
-
196
- // Unknown values
197
- outBufferToJSON.readFloat();
198
- outBufferToJSON.readInt();
199
-
200
- sound.channel = outBufferToJSON.readInt();
201
-
202
- sound.distance = {
203
- min: outBufferToJSON.readFloat(),
204
- max: outBufferToJSON.readFloat(),
205
- cutoff: outBufferToJSON.readFloat()
206
- };
207
-
208
- // Unknown values
209
- outBufferToJSON.readFloat();
210
- outBufferToJSON.readFloat();
211
- outBufferToJSON.readFloat();
212
- outBufferToJSON.readFloat();
213
- outBufferToJSON.readFloat();
214
- outBufferToJSON.readFloat();
215
-
216
- sound.variableName = outBufferToJSON.readString();
217
-
218
- // Unknown values
219
- outBufferToJSON.readString();
220
- outBufferToJSON.readString();
221
- outBufferToJSON.readChars(4);
222
- outBufferToJSON.readChars(1);
223
- outBufferToJSON.readChars(4);
224
- outBufferToJSON.readChars(4);
225
- outBufferToJSON.readChars(4);
226
- outBufferToJSON.readChars(1);
227
- outBufferToJSON.readChars(4);
228
-
229
- result.push(sound);
230
- }
231
-
232
- return {
233
- errors: [],
234
- json: result
235
- };
236
- }
237
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SoundsTranslator = void 0;
4
+ const HexBuffer_1 = require("../HexBuffer");
5
+ const W3Buffer_1 = require("../W3Buffer");
6
+ class SoundsTranslator {
7
+ static jsonToWar(soundsJson) {
8
+ const outBufferToWar = new HexBuffer_1.HexBuffer();
9
+ /*
10
+ * Header
11
+ */
12
+ outBufferToWar.addInt(3); // file version
13
+ outBufferToWar.addInt(soundsJson.length); // number of sounds
14
+ /*
15
+ * Body
16
+ */
17
+ soundsJson.forEach((sound) => {
18
+ outBufferToWar.addString(sound.name); // e.g. gg_snd_HumanGlueScreenLoop1
19
+ outBufferToWar.addString(sound.path); // e.g. Sound\Ambient\HumanGlueScreenLoop1.wav
20
+ // EAX effects enum (e.g. missiles, speech, etc)
21
+ /*
22
+ default = DefaultEAXON
23
+ combat = CombatSoundsEAX
24
+ drums = KotoDrumsEAX
25
+ spells = SpellsEAX
26
+ missiles = MissilesEAX
27
+ hero speech = HeroAcksEAX
28
+ doodads = DoodadsEAX
29
+ */
30
+ outBufferToWar.addString(sound.eax || 'DefaultEAXON'); // defaults to "DefaultEAXON"
31
+ // Flags, if present (optional)
32
+ let flags = 0;
33
+ if (sound.flags) {
34
+ if (sound.flags.looping)
35
+ flags |= 0x1;
36
+ if (sound.flags['3dSound'])
37
+ flags |= 0x2;
38
+ if (sound.flags.stopOutOfRange)
39
+ flags |= 0x4;
40
+ if (sound.flags.music)
41
+ flags |= 0x8;
42
+ }
43
+ outBufferToWar.addInt(flags);
44
+ // Fade in and out rate (optional)
45
+ outBufferToWar.addInt(sound.fadeRate ? sound.fadeRate.in || 10 : 10); // default to 10
46
+ outBufferToWar.addInt(sound.fadeRate ? sound.fadeRate.out || 10 : 10); // default to 10
47
+ // Volume (optional)
48
+ outBufferToWar.addInt(sound.volume || -1); // default to -1 (for normal volume)
49
+ // Pitch (optional)
50
+ outBufferToWar.addFloat(sound.pitch || 1.0); // default to 1.0 for normal pitch
51
+ // Mystery numbers... their use is unknown by the w3x documentation, but they must be present
52
+ outBufferToWar.addFloat(0);
53
+ outBufferToWar.addInt(8); // or -1?
54
+ // Which channel to use? Use the lookup table for more details (optional)
55
+ /*
56
+ 0=General
57
+ 1=Unit Selection
58
+ 2=Unit Acknowledgement
59
+ 3=Unit Movement
60
+ 4=Unit Ready
61
+ 5=Combat
62
+ 6=Error
63
+ 7=Music
64
+ 8=User Interface
65
+ 9=Looping Movement
66
+ 10=Looping Ambient
67
+ 11=Animations
68
+ 12=Constructions
69
+ 13=Birth
70
+ 14=Fire
71
+ */
72
+ outBufferToWar.addInt(sound.channel || 0); // default to 0
73
+ // Distance fields
74
+ outBufferToWar.addFloat(sound.distance.min);
75
+ outBufferToWar.addFloat(sound.distance.max);
76
+ outBufferToWar.addFloat(sound.distance.cutoff);
77
+ // More mystery numbers...
78
+ outBufferToWar.addFloat(0);
79
+ outBufferToWar.addFloat(0);
80
+ outBufferToWar.addFloat(127); // or -1?
81
+ outBufferToWar.addFloat(0);
82
+ outBufferToWar.addFloat(0);
83
+ outBufferToWar.addFloat(0);
84
+ outBufferToWar.addString(sound.variableName);
85
+ outBufferToWar.addString('');
86
+ outBufferToWar.addString(sound.path);
87
+ // More unknowns
88
+ outBufferToWar.addFloat(0);
89
+ outBufferToWar.addByte(0);
90
+ outBufferToWar.addFloat(0);
91
+ outBufferToWar.addFloat(0);
92
+ outBufferToWar.addFloat(0);
93
+ outBufferToWar.addByte(0);
94
+ outBufferToWar.addFloat(0);
95
+ });
96
+ return {
97
+ errors: [],
98
+ buffer: outBufferToWar.getBuffer()
99
+ };
100
+ }
101
+ static warToJson(buffer) {
102
+ const result = [];
103
+ const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer);
104
+ const fileVersion = outBufferToJSON.readInt(), // File version
105
+ numSounds = outBufferToJSON.readInt(); // # of sounds
106
+ for (let i = 0; i < numSounds; i++) {
107
+ const sound = {
108
+ name: '',
109
+ variableName: '',
110
+ path: '',
111
+ eax: '',
112
+ volume: 0,
113
+ pitch: 0,
114
+ channel: 0,
115
+ flags: {
116
+ 'looping': true,
117
+ '3dSound': true,
118
+ 'stopOutOfRange': true,
119
+ 'music': true // 0x00000008=music},
120
+ },
121
+ fadeRate: {
122
+ in: 0,
123
+ out: 0
124
+ },
125
+ distance: {
126
+ min: 0,
127
+ max: 0,
128
+ cutoff: 0
129
+ }
130
+ };
131
+ sound.name = outBufferToJSON.readString();
132
+ sound.path = outBufferToJSON.readString();
133
+ sound.eax = outBufferToJSON.readString();
134
+ const flags = outBufferToJSON.readInt();
135
+ sound.flags = {
136
+ 'looping': !!(flags & 0b1),
137
+ '3dSound': !!(flags & 0b10),
138
+ 'stopOutOfRange': !!(flags & 0b100),
139
+ 'music': !!(flags & 0b1000) // 0x00000008=music
140
+ };
141
+ sound.fadeRate = {
142
+ in: outBufferToJSON.readInt(),
143
+ out: outBufferToJSON.readInt()
144
+ };
145
+ sound.volume = outBufferToJSON.readInt();
146
+ sound.pitch = outBufferToJSON.readFloat();
147
+ // Unknown values
148
+ outBufferToJSON.readFloat();
149
+ outBufferToJSON.readInt();
150
+ sound.channel = outBufferToJSON.readInt();
151
+ sound.distance = {
152
+ min: outBufferToJSON.readFloat(),
153
+ max: outBufferToJSON.readFloat(),
154
+ cutoff: outBufferToJSON.readFloat()
155
+ };
156
+ // Unknown values
157
+ outBufferToJSON.readFloat();
158
+ outBufferToJSON.readFloat();
159
+ outBufferToJSON.readFloat();
160
+ outBufferToJSON.readFloat();
161
+ outBufferToJSON.readFloat();
162
+ outBufferToJSON.readFloat();
163
+ sound.variableName = outBufferToJSON.readString();
164
+ // Unknown values
165
+ outBufferToJSON.readString();
166
+ outBufferToJSON.readString();
167
+ outBufferToJSON.readChars(4);
168
+ outBufferToJSON.readChars(1);
169
+ outBufferToJSON.readChars(4);
170
+ outBufferToJSON.readChars(4);
171
+ outBufferToJSON.readChars(4);
172
+ outBufferToJSON.readChars(1);
173
+ outBufferToJSON.readChars(4);
174
+ result.push(sound);
175
+ }
176
+ return {
177
+ errors: [],
178
+ json: result
179
+ };
180
+ }
181
+ }
182
+ exports.SoundsTranslator = SoundsTranslator;
183
+ //# sourceMappingURL=SoundsTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoundsTranslator.js","sourceRoot":"","sources":["../../src/translators/SoundsTranslator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { WarResult, JsonResult } from '../CommonInterfaces';
3
+ export declare abstract class StringsTranslator {
4
+ static jsonToWar(stringsJson: object): WarResult;
5
+ static warToJson(buffer: Buffer): JsonResult<object>;
6
+ }
7
+ //# sourceMappingURL=StringsTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringsTranslator.d.ts","sourceRoot":"","sources":["../../src/translators/StringsTranslator.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE3D,8BAAsB,iBAAiB;WAErB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;WAwBzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;CAmB9D"}
@@ -1,49 +1,44 @@
1
- import { HexBuffer } from '../HexBuffer';
2
- import { WarResult, JsonResult } from '../CommonInterfaces'
3
-
4
- export abstract class StringsTranslator {
5
-
6
- public static jsonToWar(stringsJson: object): WarResult {
7
- const outBufferToWar = new HexBuffer();
8
-
9
- /*
10
- * Strings
11
- */
12
- Object.keys(stringsJson).forEach((key) => {
13
- outBufferToWar.addChars('STRING ' + key);
14
- outBufferToWar.addNewLine();
15
- outBufferToWar.addChars('{');
16
- outBufferToWar.addNewLine();
17
- outBufferToWar.addChars(stringsJson[key]);
18
- outBufferToWar.addNewLine();
19
- outBufferToWar.addChars('}');
20
- outBufferToWar.addNewLine();
21
- outBufferToWar.addNewLine();
22
- });
23
-
24
- return {
25
- errors: [],
26
- buffer: outBufferToWar.getBuffer()
27
- };
28
- }
29
-
30
- public static warToJson(buffer: Buffer): JsonResult<object> {
31
- const wts = buffer.toString().replace(/\r\n/g, '\n'), // may contain Windows linebreaks (\r\n), but below regex just assumes \n
32
- matchStringDefinitionBlock = new RegExp('STRING ([0-9]+)\n?(?:.*\n)?\{\n((?:.|\n)*?)\n}', 'g'); // see: https://regexr.com/3r572
33
-
34
- const result = {}; // stores the json form of strings file
35
- let match; // stores individual matches as input is read
36
-
37
- // tslint:disable-next-line: no-conditional-assignment
38
- while ((match = matchStringDefinitionBlock.exec(wts)) !== null) {
39
- const num = match[1],
40
- body = match[2];
41
- result[num] = body;
42
- }
43
-
44
- return {
45
- errors: [],
46
- json: result
47
- };
48
- }
49
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringsTranslator = void 0;
4
+ const HexBuffer_1 = require("../HexBuffer");
5
+ class StringsTranslator {
6
+ static jsonToWar(stringsJson) {
7
+ const outBufferToWar = new HexBuffer_1.HexBuffer();
8
+ /*
9
+ * Strings
10
+ */
11
+ Object.keys(stringsJson).forEach((key) => {
12
+ outBufferToWar.addChars('STRING ' + key);
13
+ outBufferToWar.addNewLine();
14
+ outBufferToWar.addChars('{');
15
+ outBufferToWar.addNewLine();
16
+ outBufferToWar.addChars(stringsJson[key]);
17
+ outBufferToWar.addNewLine();
18
+ outBufferToWar.addChars('}');
19
+ outBufferToWar.addNewLine();
20
+ outBufferToWar.addNewLine();
21
+ });
22
+ return {
23
+ errors: [],
24
+ buffer: outBufferToWar.getBuffer()
25
+ };
26
+ }
27
+ static warToJson(buffer) {
28
+ const wts = buffer.toString().replace(/\r\n/g, '\n'), // may contain Windows linebreaks (\r\n), but below regex just assumes \n
29
+ matchStringDefinitionBlock = new RegExp('STRING ([0-9]+)\n?(?:.*\n)?\{\n((?:.|\n)*?)\n}', 'g'); // see: https://regexr.com/3r572
30
+ const result = {}; // stores the json form of strings file
31
+ let match; // stores individual matches as input is read
32
+ // tslint:disable-next-line: no-conditional-assignment
33
+ while ((match = matchStringDefinitionBlock.exec(wts)) !== null) {
34
+ const num = match[1], body = match[2];
35
+ result[num] = body;
36
+ }
37
+ return {
38
+ errors: [],
39
+ json: result
40
+ };
41
+ }
42
+ }
43
+ exports.StringsTranslator = StringsTranslator;
44
+ //# sourceMappingURL=StringsTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringsTranslator.js","sourceRoot":"","sources":["../../src/translators/StringsTranslator.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAGzC,MAAsB,iBAAiB;IAE5B,MAAM,CAAC,SAAS,CAAC,WAAmB;QACvC,MAAM,cAAc,GAAG,IAAI,qBAAS,EAAE,CAAC;QAEvC;;WAEG;QACH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACrC,cAAc,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;YACzC,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,cAAc,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE;SACrC,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAc;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,yEAAyE;QAC3H,0BAA0B,GAAG,IAAI,MAAM,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC,CAAC,gCAAgC;QAEpI,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,uCAAuC;QAC1D,IAAI,KAAK,CAAC,CAAC,6CAA6C;QAExD,sDAAsD;QACtD,OAAO,CAAC,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;YAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAChB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACtB;QAED,OAAO;YACH,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,MAAM;SACf,CAAC;IACN,CAAC;CACJ;AA7CD,8CA6CC"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { WarResult, JsonResult } from '../CommonInterfaces';
3
+ interface Terrain {
4
+ tileset: string;
5
+ customTileset: boolean;
6
+ tilePalette: string[];
7
+ cliffTilePalette: string[];
8
+ map: Map;
9
+ groundHeight: number[];
10
+ waterHeight: number[];
11
+ boundaryFlag: boolean[];
12
+ flags: number[];
13
+ groundTexture: number[];
14
+ groundVariation: number[];
15
+ cliffVariation: number[];
16
+ cliffTexture: number[];
17
+ layerHeight: number[];
18
+ }
19
+ interface Map {
20
+ width: number;
21
+ height: number;
22
+ offset: Offset;
23
+ }
24
+ interface Offset {
25
+ x: number;
26
+ y: number;
27
+ }
28
+ export declare abstract class TerrainTranslator {
29
+ static jsonToWar(terrainJson: Terrain): WarResult;
30
+ static warToJson(buffer: Buffer): JsonResult<Terrain>;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=TerrainTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerrainTranslator.d.ts","sourceRoot":"","sources":["../../src/translators/TerrainTranslator.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE3D,UAAU,OAAO;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,GAAG,EAAE,GAAG,CAAC;IAET,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,UAAU,GAAG;IACT,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,MAAM;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAUD,8BAAsB,iBAAiB;WAErB,SAAS,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS;WA+F1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;CAyI/D"}