wc3maptranslator 4.0.3 → 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 (77) hide show
  1. package/README.md +62 -43
  2. package/dist/src/AngleConverter.d.ts +3 -2
  3. package/dist/src/AngleConverter.d.ts.map +1 -1
  4. package/dist/src/AngleConverter.js.map +1 -1
  5. package/dist/src/CommonInterfaces.d.ts +12 -8
  6. package/dist/src/CommonInterfaces.d.ts.map +1 -1
  7. package/dist/src/CommonInterfaces.js +17 -0
  8. package/dist/src/CommonInterfaces.js.map +1 -1
  9. package/dist/src/HexBuffer.d.ts +5 -2
  10. package/dist/src/HexBuffer.d.ts.map +1 -1
  11. package/dist/src/HexBuffer.js +34 -34
  12. package/dist/src/HexBuffer.js.map +1 -1
  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/src/W3Buffer.d.ts +4 -1
  22. package/dist/src/W3Buffer.d.ts.map +1 -1
  23. package/dist/src/W3Buffer.js +13 -9
  24. package/dist/src/W3Buffer.js.map +1 -1
  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 +10 -1
  30. package/dist/src/index.d.ts.map +1 -1
  31. package/dist/src/index.js +23 -11
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/translators/CamerasTranslator.d.ts +9 -4
  34. package/dist/src/translators/CamerasTranslator.d.ts.map +1 -1
  35. package/dist/src/translators/CamerasTranslator.js +25 -24
  36. package/dist/src/translators/CamerasTranslator.js.map +1 -1
  37. package/dist/src/translators/DoodadsTranslator.d.ts +22 -9
  38. package/dist/src/translators/DoodadsTranslator.d.ts.map +1 -1
  39. package/dist/src/translators/DoodadsTranslator.js +101 -109
  40. package/dist/src/translators/DoodadsTranslator.js.map +1 -1
  41. package/dist/src/translators/ImportsTranslator.d.ts +5 -13
  42. package/dist/src/translators/ImportsTranslator.d.ts.map +1 -1
  43. package/dist/src/translators/ImportsTranslator.js +15 -41
  44. package/dist/src/translators/ImportsTranslator.js.map +1 -1
  45. package/dist/src/translators/InfoTranslator.d.ts +98 -10
  46. package/dist/src/translators/InfoTranslator.d.ts.map +1 -1
  47. package/dist/src/translators/InfoTranslator.js +263 -164
  48. package/dist/src/translators/InfoTranslator.js.map +1 -1
  49. package/dist/src/translators/ObjectsTranslator.d.ts +23 -7
  50. package/dist/src/translators/ObjectsTranslator.d.ts.map +1 -1
  51. package/dist/src/translators/ObjectsTranslator.js +193 -162
  52. package/dist/src/translators/ObjectsTranslator.js.map +1 -1
  53. package/dist/src/translators/RegionsTranslator.d.ts +5 -4
  54. package/dist/src/translators/RegionsTranslator.d.ts.map +1 -1
  55. package/dist/src/translators/RegionsTranslator.js +18 -35
  56. package/dist/src/translators/RegionsTranslator.js.map +1 -1
  57. package/dist/src/translators/SoundsTranslator.d.ts +46 -6
  58. package/dist/src/translators/SoundsTranslator.d.ts.map +1 -1
  59. package/dist/src/translators/SoundsTranslator.js +127 -108
  60. package/dist/src/translators/SoundsTranslator.js.map +1 -1
  61. package/dist/src/translators/StringsTranslator.d.ts +10 -4
  62. package/dist/src/translators/StringsTranslator.d.ts.map +1 -1
  63. package/dist/src/translators/StringsTranslator.js +19 -20
  64. package/dist/src/translators/StringsTranslator.js.map +1 -1
  65. package/dist/src/translators/TerrainTranslator.d.ts +24 -2
  66. package/dist/src/translators/TerrainTranslator.d.ts.map +1 -1
  67. package/dist/src/translators/TerrainTranslator.js +74 -99
  68. package/dist/src/translators/TerrainTranslator.js.map +1 -1
  69. package/dist/src/translators/UnitsTranslator.d.ts +76 -14
  70. package/dist/src/translators/UnitsTranslator.d.ts.map +1 -1
  71. package/dist/src/translators/UnitsTranslator.js +235 -139
  72. package/dist/src/translators/UnitsTranslator.js.map +1 -1
  73. package/package.json +28 -25
  74. package/dist/src/translators/index.d.ts +0 -11
  75. package/dist/src/translators/index.d.ts.map +0 -1
  76. package/dist/src/translators/index.js +0 -23
  77. package/dist/src/translators/index.js.map +0 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"RegionsTranslator.js","sourceRoot":"","sources":["../../../src/translators/RegionsTranslator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegionsTranslator.js","sourceRoot":"","sources":["../../../src/translators/RegionsTranslator.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,53 @@
1
1
  /// <reference types="node" />
2
- import { WarResult, JsonResult } from '../CommonInterfaces';
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
+ }
3
38
  interface Sound {
4
- name: string;
5
39
  variableName: string;
40
+ internalName: string;
6
41
  path: string;
7
- eax: string;
42
+ effect?: EffectType;
8
43
  flags: SoundFlags;
9
44
  fadeRate: FadeRate;
10
- volume: number;
45
+ volume?: number;
11
46
  pitch: number;
12
- channel: number;
47
+ channel?: number;
13
48
  distance: Distance;
49
+ pitchVariance?: number;
50
+ priority?: number;
14
51
  }
15
52
  interface FadeRate {
16
53
  in: number;
@@ -21,13 +58,16 @@ interface SoundFlags {
21
58
  '3dSound': boolean;
22
59
  stopOutOfRange: boolean;
23
60
  music: boolean;
61
+ imported: boolean;
24
62
  }
25
63
  interface Distance {
26
64
  min: number;
27
65
  max: number;
28
66
  cutoff: number;
29
67
  }
30
- export declare abstract class SoundsTranslator {
68
+ export default abstract class SoundsTranslator extends ITranslator {
69
+ static readonly EffectType: typeof EffectType;
70
+ static readonly Channel: typeof Channel;
31
71
  static jsonToWar(soundsJson: Sound[]): WarResult;
32
72
  static warToJson(buffer: Buffer): JsonResult<Sound[]>;
33
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SoundsTranslator.d.ts","sourceRoot":"","sources":["../../../src/translators/SoundsTranslator.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE3D,UAAU,KAAK;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACtB;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;CAClB;AAED,UAAU,QAAQ;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,8BAAsB,gBAAgB;WAEpB,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS;WAyGzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;CA8F/D"}
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"}
@@ -1,34 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SoundsTranslator = void 0;
4
3
  const HexBuffer_1 = require("../HexBuffer");
5
4
  const W3Buffer_1 = require("../W3Buffer");
6
- class SoundsTranslator {
5
+ const CommonInterfaces_1 = require("../CommonInterfaces");
6
+ var EffectType;
7
+ (function (EffectType) {
8
+ EffectType["Default"] = "DefaultEAXON";
9
+ EffectType["Combat"] = "CombatSoundsEAX";
10
+ EffectType["Drums"] = "KotoDrumsEAX";
11
+ EffectType["Spells"] = "SpellsEAX";
12
+ EffectType["Missiles"] = "MissilesEAX";
13
+ EffectType["HeroSpeech"] = "HeroAcksEAX";
14
+ EffectType["Doodads"] = "DoodadsEAX";
15
+ })(EffectType || (EffectType = {}));
16
+ var Channel;
17
+ (function (Channel) {
18
+ Channel[Channel["General"] = 0] = "General";
19
+ Channel[Channel["UnitSelection"] = 1] = "UnitSelection";
20
+ Channel[Channel["UnitAcknowledgement"] = 2] = "UnitAcknowledgement";
21
+ Channel[Channel["UnitMovement"] = 3] = "UnitMovement";
22
+ Channel[Channel["UnitReady"] = 4] = "UnitReady";
23
+ Channel[Channel["Combat"] = 5] = "Combat";
24
+ Channel[Channel["Error"] = 6] = "Error";
25
+ Channel[Channel["Music"] = 7] = "Music";
26
+ Channel[Channel["UserInterface"] = 8] = "UserInterface";
27
+ Channel[Channel["LoopingMovement"] = 9] = "LoopingMovement";
28
+ Channel[Channel["LoopingAmbient"] = 10] = "LoopingAmbient";
29
+ Channel[Channel["Animations"] = 11] = "Animations";
30
+ Channel[Channel["Constructions"] = 12] = "Constructions";
31
+ Channel[Channel["Birth"] = 13] = "Birth";
32
+ Channel[Channel["Fire"] = 14] = "Fire";
33
+ Channel[Channel["LegacyMidi"] = 15] = "LegacyMidi";
34
+ Channel[Channel["CinematicGeneral"] = 16] = "CinematicGeneral";
35
+ Channel[Channel["CinematicAmbient"] = 17] = "CinematicAmbient";
36
+ Channel[Channel["CinematicMusic"] = 18] = "CinematicMusic";
37
+ Channel[Channel["CinematicDialog"] = 19] = "CinematicDialog";
38
+ Channel[Channel["CinematicSFX1"] = 20] = "CinematicSFX1";
39
+ Channel[Channel["CinematicSFX2"] = 21] = "CinematicSFX2";
40
+ Channel[Channel["CinematicSFX3"] = 22] = "CinematicSFX3";
41
+ })(Channel || (Channel = {}));
42
+ const effectTypeLookup = {
43
+ [EffectType.Combat]: EffectType.Combat,
44
+ [EffectType.Default]: EffectType.Default,
45
+ [EffectType.Doodads]: EffectType.Doodads,
46
+ [EffectType.Drums]: EffectType.Drums,
47
+ [EffectType.HeroSpeech]: EffectType.HeroSpeech,
48
+ [EffectType.Missiles]: EffectType.Missiles,
49
+ [EffectType.Spells]: EffectType.Spells
50
+ };
51
+ const MYSTERY_NUM_1 = 1333788672;
52
+ const MYSTERY_NUM_2 = -1;
53
+ class SoundsTranslator extends CommonInterfaces_1.ITranslator {
7
54
  static jsonToWar(soundsJson) {
55
+ var _a, _b;
8
56
  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)
57
+ outBufferToWar.addInt(3);
58
+ outBufferToWar.addInt(soundsJson.length);
59
+ for (const sound of soundsJson) {
60
+ const isImportedSound = sound.path.startsWith('war3mapImported/');
61
+ outBufferToWar.addString('gg_snd_' + sound.variableName);
62
+ outBufferToWar.addString(sound.path);
63
+ outBufferToWar.addString(sound.effect || EffectType.Default);
32
64
  let flags = 0;
33
65
  if (sound.flags) {
34
66
  if (sound.flags.looping)
@@ -39,84 +71,71 @@ class SoundsTranslator {
39
71
  flags |= 0x4;
40
72
  if (sound.flags.music)
41
73
  flags |= 0x8;
74
+ if (sound.flags.imported)
75
+ flags |= 0x10;
42
76
  }
43
77
  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('');
78
+ outBufferToWar.addInt(((_a = sound.fadeRate) === null || _a === void 0 ? void 0 : _a.in) || 0);
79
+ outBufferToWar.addInt(((_b = sound.fadeRate) === null || _b === void 0 ? void 0 : _b.out) || 0);
80
+ outBufferToWar.addInt(sound.volume || 127);
81
+ if (isImportedSound || sound.pitch !== 1.0) {
82
+ outBufferToWar.addFloat(sound.pitch);
83
+ }
84
+ else {
85
+ outBufferToWar.addInt(MYSTERY_NUM_1);
86
+ }
87
+ if (sound.pitchVariance && sound.pitchVariance === 4294967296) {
88
+ outBufferToWar.addInt(MYSTERY_NUM_1);
89
+ }
90
+ else {
91
+ outBufferToWar.addFloat(sound.pitchVariance || 0);
92
+ }
93
+ outBufferToWar.addInt(sound.priority || 100);
94
+ outBufferToWar.addInt(sound.channel || Channel.General);
95
+ outBufferToWar.addInt(sound.distance.min);
96
+ outBufferToWar.addInt(sound.distance.max);
97
+ outBufferToWar.addInt(sound.distance.cutoff);
98
+ outBufferToWar.addInt(isImportedSound ? 0 : MYSTERY_NUM_1);
99
+ outBufferToWar.addInt(isImportedSound ? 0 : MYSTERY_NUM_1);
100
+ outBufferToWar.addInt(isImportedSound ? 127 : MYSTERY_NUM_2);
101
+ outBufferToWar.addInt(isImportedSound ? 0 : MYSTERY_NUM_1);
102
+ outBufferToWar.addInt(isImportedSound ? 0 : MYSTERY_NUM_1);
103
+ outBufferToWar.addInt(isImportedSound ? 0 : MYSTERY_NUM_1);
104
+ outBufferToWar.addString('gg_snd_' + sound.variableName);
105
+ outBufferToWar.addString(sound.internalName);
86
106
  outBufferToWar.addString(sound.path);
87
- // More unknowns
88
- outBufferToWar.addFloat(0);
107
+ outBufferToWar.addInt(MYSTERY_NUM_2);
89
108
  outBufferToWar.addByte(0);
90
- outBufferToWar.addFloat(0);
91
- outBufferToWar.addFloat(0);
92
- outBufferToWar.addFloat(0);
109
+ outBufferToWar.addInt(MYSTERY_NUM_2);
110
+ outBufferToWar.addInt(0);
111
+ outBufferToWar.addInt(0);
93
112
  outBufferToWar.addByte(0);
94
- outBufferToWar.addFloat(0);
95
- });
113
+ outBufferToWar.addInt(1);
114
+ }
96
115
  return {
97
- errors: [],
98
116
  buffer: outBufferToWar.getBuffer()
99
117
  };
100
118
  }
101
119
  static warToJson(buffer) {
102
120
  const result = [];
103
121
  const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer);
104
- const fileVersion = outBufferToJSON.readInt(), // File version
105
- numSounds = outBufferToJSON.readInt(); // # of sounds
122
+ (0, CommonInterfaces_1.expectVersion)(3, outBufferToJSON.readInt());
123
+ const numSounds = outBufferToJSON.readInt();
106
124
  for (let i = 0; i < numSounds; i++) {
107
125
  const sound = {
108
- name: '',
109
126
  variableName: '',
127
+ internalName: '',
110
128
  path: '',
111
- eax: '',
112
129
  volume: 0,
113
130
  pitch: 0,
114
- channel: 0,
131
+ pitchVariance: 0,
132
+ priority: 100,
115
133
  flags: {
116
- 'looping': true,
134
+ looping: true,
117
135
  '3dSound': true,
118
- 'stopOutOfRange': true,
119
- 'music': true // 0x00000008=music},
136
+ stopOutOfRange: true,
137
+ music: true,
138
+ imported: false
120
139
  },
121
140
  fadeRate: {
122
141
  in: 0,
@@ -128,41 +147,40 @@ class SoundsTranslator {
128
147
  cutoff: 0
129
148
  }
130
149
  };
131
- sound.name = outBufferToJSON.readString();
150
+ sound.variableName = outBufferToJSON.readString().replace('gg_snd_', '');
132
151
  sound.path = outBufferToJSON.readString();
133
- sound.eax = outBufferToJSON.readString();
152
+ sound.effect = effectTypeLookup[outBufferToJSON.readString()];
134
153
  const flags = outBufferToJSON.readInt();
135
154
  sound.flags = {
136
- 'looping': !!(flags & 0b1),
137
- '3dSound': !!(flags & 0b10),
138
- 'stopOutOfRange': !!(flags & 0b100),
139
- 'music': !!(flags & 0b1000) // 0x00000008=music
155
+ looping: !!(flags & 0x1),
156
+ '3dSound': !!(flags & 0x2),
157
+ stopOutOfRange: !!(flags & 0x4),
158
+ music: !!(flags & 0x8),
159
+ imported: !!(flags & 0x10)
140
160
  };
141
161
  sound.fadeRate = {
142
162
  in: outBufferToJSON.readInt(),
143
163
  out: outBufferToJSON.readInt()
144
164
  };
145
165
  sound.volume = outBufferToJSON.readInt();
146
- sound.pitch = outBufferToJSON.readFloat();
147
- // Unknown values
148
- outBufferToJSON.readFloat();
149
- outBufferToJSON.readInt();
166
+ const pitch = outBufferToJSON.readFloat();
167
+ sound.pitch = pitch === 4294967296 ? 1.0 : pitch;
168
+ sound.pitchVariance = outBufferToJSON.readFloat();
169
+ sound.priority = outBufferToJSON.readInt();
150
170
  sound.channel = outBufferToJSON.readInt();
151
171
  sound.distance = {
152
- min: outBufferToJSON.readFloat(),
153
- max: outBufferToJSON.readFloat(),
154
- cutoff: outBufferToJSON.readFloat()
172
+ min: outBufferToJSON.readInt(),
173
+ max: outBufferToJSON.readInt(),
174
+ cutoff: outBufferToJSON.readInt()
155
175
  };
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
176
+ outBufferToJSON.readInt();
177
+ outBufferToJSON.readInt();
178
+ outBufferToJSON.readInt();
179
+ outBufferToJSON.readInt();
180
+ outBufferToJSON.readInt();
181
+ outBufferToJSON.readInt();
165
182
  outBufferToJSON.readString();
183
+ sound.internalName = outBufferToJSON.readString();
166
184
  outBufferToJSON.readString();
167
185
  outBufferToJSON.readChars(4);
168
186
  outBufferToJSON.readChars(1);
@@ -170,14 +188,15 @@ class SoundsTranslator {
170
188
  outBufferToJSON.readChars(4);
171
189
  outBufferToJSON.readChars(4);
172
190
  outBufferToJSON.readChars(1);
173
- outBufferToJSON.readChars(4);
191
+ outBufferToJSON.readInt();
174
192
  result.push(sound);
175
193
  }
176
194
  return {
177
- errors: [],
178
195
  json: result
179
196
  };
180
197
  }
181
198
  }
182
- exports.SoundsTranslator = SoundsTranslator;
199
+ exports.default = SoundsTranslator;
200
+ SoundsTranslator.EffectType = EffectType;
201
+ SoundsTranslator.Channel = Channel;
183
202
  //# sourceMappingURL=SoundsTranslator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SoundsTranslator.js","sourceRoot":"","sources":["../../../src/translators/SoundsTranslator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SoundsTranslator.js","sourceRoot":"","sources":["../../../src/translators/SoundsTranslator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
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>;
2
+ /// <reference types="node" />
3
+ import { WarResult, JsonResult, ITranslator } from '../CommonInterfaces';
4
+ interface StringRecord {
5
+ comment?: string;
6
+ value: string;
7
+ }
8
+ export default abstract class StringsTranslator extends ITranslator {
9
+ static jsonToWar(stringsJson: Record<string, StringRecord>): WarResult;
10
+ static warToJson(buffer: Buffer): JsonResult<Record<string, StringRecord>>;
6
11
  }
12
+ export {};
7
13
  //# sourceMappingURL=StringsTranslator.d.ts.map
@@ -1 +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
+ {"version":3,"file":"StringsTranslator.d.ts","sourceRoot":"","sources":["../../../src/translators/StringsTranslator.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEzE,UAAU,YAAY;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,iBAAkB,SAAQ,WAAW;WACjD,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,SAAS;WA4B/D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAcpF"}
@@ -1,44 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StringsTranslator = void 0;
4
3
  const HexBuffer_1 = require("../HexBuffer");
5
- class StringsTranslator {
4
+ const CommonInterfaces_1 = require("../CommonInterfaces");
5
+ const matchStringDefinitionBlock = /STRING ([0-9]+)\r?\n?(\/\/.*\r?\n?)?{\r?\n((?:.|\r?\n)*?)\r?\n}/g;
6
+ class StringsTranslator extends CommonInterfaces_1.ITranslator {
6
7
  static jsonToWar(stringsJson) {
7
8
  const outBufferToWar = new HexBuffer_1.HexBuffer();
8
- /*
9
- * Strings
10
- */
11
- Object.keys(stringsJson).forEach((key) => {
12
- outBufferToWar.addChars('STRING ' + key);
9
+ for (const stringId of Object.keys(stringsJson)) {
10
+ const w3String = stringsJson[stringId];
11
+ outBufferToWar.addChars('STRING ' + stringId);
13
12
  outBufferToWar.addNewLine();
13
+ if (w3String.comment) {
14
+ outBufferToWar.addChars(w3String.comment);
15
+ }
14
16
  outBufferToWar.addChars('{');
15
17
  outBufferToWar.addNewLine();
16
- outBufferToWar.addChars(stringsJson[key]);
18
+ outBufferToWar.addChars(w3String.value);
17
19
  outBufferToWar.addNewLine();
18
20
  outBufferToWar.addChars('}');
19
21
  outBufferToWar.addNewLine();
20
22
  outBufferToWar.addNewLine();
21
- });
23
+ }
22
24
  return {
23
- errors: [],
24
25
  buffer: outBufferToWar.getBuffer()
25
26
  };
26
27
  }
27
28
  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;
29
+ const result = {};
30
+ let match;
31
+ while ((match = matchStringDefinitionBlock.exec(buffer.toString('utf8'))) !== null) {
32
+ const [, num, comment, value] = match;
33
+ result[num] = { value };
34
+ if (comment)
35
+ result[num].comment = comment;
36
36
  }
37
37
  return {
38
- errors: [],
39
38
  json: result
40
39
  };
41
40
  }
42
41
  }
43
- exports.StringsTranslator = StringsTranslator;
42
+ exports.default = StringsTranslator;
44
43
  //# sourceMappingURL=StringsTranslator.js.map