@etothepii/satisfactory-file-parser 0.1.12 → 0.1.14
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.
package/README.md
CHANGED
|
@@ -13,13 +13,13 @@ The version support of the packages is indicated below.
|
|
|
13
13
|
|
|
14
14
|
Game Version Files of U5 and below are NOT supported.
|
|
15
15
|
|
|
16
|
-
U8 has
|
|
16
|
+
U8 has read and write support for blueprints, but only read support for saves. More coming soon.
|
|
17
17
|
|
|
18
18
|
| Game Version | Package |
|
|
19
19
|
|:--------------:|:-----------------------------|
|
|
20
20
|
| <= U5 | ❌ |
|
|
21
21
|
| U6 + U7 | ✅ 0.0.1 - 0.0.34 |
|
|
22
|
-
| U8 | ⚠️ >= 0.1.
|
|
22
|
+
| U8 | ⚠️ >= 0.1.14 (readig for both saves and blueprints, writing only for blueprints) |
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
## Installation via npm
|
|
@@ -23,8 +23,9 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
static ReadHeader(reader) {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
26
|
+
const blueprintTypeOrWhat = reader.readBytes(4);
|
|
27
|
+
const versionThing = reader.readBytes(2 * 4);
|
|
28
|
+
const probablyDimensions = (0, util_types_1.ParseVec3f)(reader);
|
|
28
29
|
let itemTypeCount = reader.readInt32();
|
|
29
30
|
const itemCosts = new Array(itemTypeCount).fill(['', 0]);
|
|
30
31
|
for (let i = 0; i < itemTypeCount; i++) {
|
|
@@ -104,7 +105,6 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
|
|
|
104
105
|
const suomeChecksumThing = reader.readInt32();
|
|
105
106
|
BlueprintReader.ReadBlueprintObjectContents('', reader, objects, 0);
|
|
106
107
|
const pos = reader.getBufferPosition();
|
|
107
|
-
console.log(pos, reader.getBufferLength(), reader.getBufferProgress());
|
|
108
108
|
return objects;
|
|
109
109
|
}
|
|
110
110
|
static ReadBlueprintObjectContents(levelName, reader, objectsList, buildVersion) {
|
|
@@ -13,8 +13,8 @@ class BlueprintWriter extends byte_writer_class_1.ByteWriter {
|
|
|
13
13
|
}
|
|
14
14
|
static SerializeHeader(writer, header) {
|
|
15
15
|
writer.writeInt32(2);
|
|
16
|
-
writer.writeInt32(
|
|
17
|
-
writer.writeInt32(
|
|
16
|
+
writer.writeInt32(42);
|
|
17
|
+
writer.writeInt32(249836);
|
|
18
18
|
writer.writeInt32(4);
|
|
19
19
|
writer.writeInt32(4);
|
|
20
20
|
writer.writeInt32(4);
|
|
@@ -518,28 +518,24 @@ class StructProperty extends AbstractBaseProperty {
|
|
|
518
518
|
value = (0, util_types_1.ParseCol4RGBA)(reader);
|
|
519
519
|
break;
|
|
520
520
|
case 'Vector':
|
|
521
|
-
value = (size === 12) ? (0, util_types_1.ParseVec3f)(reader) : (0, util_types_1.ParseVec3)(reader);
|
|
522
|
-
break;
|
|
523
521
|
case 'Rotator':
|
|
524
522
|
case 'Vector2D':
|
|
525
|
-
value = (0, util_types_1.ParseVec3f)(reader);
|
|
523
|
+
value = (size === 12) ? (0, util_types_1.ParseVec3f)(reader) : (0, util_types_1.ParseVec3)(reader);
|
|
526
524
|
break;
|
|
527
525
|
case 'Quat':
|
|
528
|
-
value = value = (size === 16) ? (0, util_types_1.ParseVec4f)(reader) : (0, util_types_1.ParseVec4)(reader);
|
|
529
|
-
break;
|
|
530
526
|
case 'Vector4':
|
|
531
527
|
case 'Vector4D':
|
|
532
|
-
value = (0, util_types_1.ParseVec4f)(reader);
|
|
528
|
+
value = (size === 16) ? (0, util_types_1.ParseVec4f)(reader) : (0, util_types_1.ParseVec4)(reader);
|
|
533
529
|
break;
|
|
534
530
|
case 'Box':
|
|
535
|
-
|
|
536
|
-
other1: (0, util_types_1.ParseVec3f)(reader),
|
|
537
|
-
other2: (0, util_types_1.ParseVec3f)(reader)
|
|
538
|
-
};
|
|
539
|
-
value = {
|
|
531
|
+
value = (size === 25) ? {
|
|
540
532
|
min: (0, util_types_1.ParseVec3f)(reader),
|
|
541
533
|
max: (0, util_types_1.ParseVec3f)(reader),
|
|
542
534
|
isValid: reader.readByte() >= 1
|
|
535
|
+
} : {
|
|
536
|
+
min: (0, util_types_1.ParseVec3)(reader),
|
|
537
|
+
max: (0, util_types_1.ParseVec3)(reader),
|
|
538
|
+
isValid: reader.readByte() >= 1
|
|
543
539
|
};
|
|
544
540
|
break;
|
|
545
541
|
case 'RailroadTrackPosition':
|
|
@@ -621,18 +617,18 @@ class StructProperty extends AbstractBaseProperty {
|
|
|
621
617
|
case 'Rotator':
|
|
622
618
|
case 'Vector2D':
|
|
623
619
|
value = value;
|
|
624
|
-
(0, util_types_1.
|
|
620
|
+
(0, util_types_1.SerializeVec3)(writer, value);
|
|
625
621
|
break;
|
|
626
622
|
case 'Quat':
|
|
627
623
|
case 'Vector4':
|
|
628
624
|
case 'Vector4D':
|
|
629
625
|
value = value;
|
|
630
|
-
(0, util_types_1.
|
|
626
|
+
(0, util_types_1.SerializeVec4)(writer, value);
|
|
631
627
|
break;
|
|
632
628
|
case 'Box':
|
|
633
629
|
value = value;
|
|
634
|
-
(0, util_types_1.
|
|
635
|
-
(0, util_types_1.
|
|
630
|
+
(0, util_types_1.SerializeVec3)(writer, value.min);
|
|
631
|
+
(0, util_types_1.SerializeVec3)(writer, value.max);
|
|
636
632
|
writer.writeByte(value.isValid ? 1 : 0);
|
|
637
633
|
break;
|
|
638
634
|
case 'RailroadTrackPosition':
|
|
@@ -920,7 +916,7 @@ class MapProperty extends BasicProperty {
|
|
|
920
916
|
reader.skipBytes(12);
|
|
921
917
|
}
|
|
922
918
|
else {
|
|
923
|
-
key = (0, exports.ParseDynamicStructData)(reader, 0,
|
|
919
|
+
key = (0, exports.ParseDynamicStructData)(reader, 0, property.keyType);
|
|
924
920
|
}
|
|
925
921
|
break;
|
|
926
922
|
case 'ObjectProperty':
|
|
@@ -945,7 +941,7 @@ class MapProperty extends BasicProperty {
|
|
|
945
941
|
}
|
|
946
942
|
switch (property.valueType) {
|
|
947
943
|
case 'StructProperty':
|
|
948
|
-
value = (0, exports.ParseDynamicStructData)(reader, 0,
|
|
944
|
+
value = (0, exports.ParseDynamicStructData)(reader, 0, property.valueType);
|
|
949
945
|
break;
|
|
950
946
|
case 'ObjectProperty':
|
|
951
947
|
value = ObjectProperty.ReadValue(reader);
|
|
@@ -1007,8 +1003,8 @@ const ParseDynamicStructData = (reader, buildVersion, type) => {
|
|
|
1007
1003
|
exports.ParseDynamicStructData = ParseDynamicStructData;
|
|
1008
1004
|
const SerializeDynamicStructData = (writer, buildVersion, data) => {
|
|
1009
1005
|
for (const key in data.properties) {
|
|
1010
|
-
writer.writeString(key);
|
|
1011
1006
|
for (const prop of (Array.isArray(data.properties[key]) ? data.properties[key] : [data.properties[key]])) {
|
|
1007
|
+
writer.writeString(key);
|
|
1012
1008
|
DataFields_1.DataFields.SerializeProperty(writer, prop, key, buildVersion);
|
|
1013
1009
|
}
|
|
1014
1010
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etothepii/satisfactory-file-parser",
|
|
3
3
|
"author": "etothepii",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.14",
|
|
5
5
|
"description": "A file parser for satisfactory files. Includes save files and blueprint files.",
|
|
6
6
|
"types": "./build/index.d.ts",
|
|
7
7
|
"main": "./build/index.js",
|