@etothepii/satisfactory-file-parser 0.0.32 → 0.0.34
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/build/index.js +41 -51
- package/build/parser/byte/alignment.enum.js +8 -18
- package/build/parser/byte/binary-operable.interface.js +2 -12
- package/build/parser/byte/binary-readable.interface.js +2 -12
- package/build/parser/byte/byte-reader.class.js +122 -132
- package/build/parser/byte/byte-writer.class.js +133 -143
- package/build/parser/error/parser.error.js +40 -50
- package/build/parser/file.types.js +2 -12
- package/build/parser/parser.d.ts +0 -9
- package/build/parser/parser.js +84 -192
- package/build/parser/satisfactory/blueprint/blueprint-reader.js +109 -119
- package/build/parser/satisfactory/blueprint/blueprint-writer.js +56 -66
- package/build/parser/satisfactory/blueprint/blueprint.types.js +2 -12
- package/build/parser/satisfactory/objects/DataFields.js +297 -307
- package/build/parser/satisfactory/objects/ObjectReference.js +14 -24
- package/build/parser/satisfactory/objects/Property.js +967 -977
- package/build/parser/satisfactory/objects/SaveComponent.js +28 -38
- package/build/parser/satisfactory/objects/SaveEntity.js +65 -75
- package/build/parser/satisfactory/objects/SaveObject.js +26 -36
- package/build/parser/satisfactory/save/asynchronous-level.class.js +60 -70
- package/build/parser/satisfactory/save/level.class.js +122 -133
- package/build/parser/satisfactory/save/satisfactory-save.js +10 -20
- package/build/parser/satisfactory/save/save-reader.js +158 -168
- package/build/parser/satisfactory/save/save-writer.js +97 -107
- package/build/parser/satisfactory/save/save.types.js +2 -12
- package/build/parser/satisfactory/structs/util.types.js +89 -99
- package/build/parser/stream/byte-stream-reader.class.js +217 -227
- package/build/parser/stream/json-stream-state-writer.js +15 -25
- package/build/parser/stream/json-stream-writable.js +72 -82
- package/build/parser/stream/json-stream-writer.js +122 -132
- package/build/parser/stream/save-stream-json-stringifier.js +29 -39
- package/build/parser/stream/save-stream-reader.class.js +106 -116
- package/build/parser/stream/save-stream-writer.class.js +90 -100
- package/build/parser/stream/stream-level.class.js +93 -103
- package/package.json +1 -1
|
@@ -1,149 +1,138 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Level = void 0;
|
|
4
|
+
const ObjectReference_1 = require("../objects/ObjectReference");
|
|
5
|
+
const SaveComponent_1 = require("../objects/SaveComponent");
|
|
6
|
+
const SaveEntity_1 = require("../objects/SaveEntity");
|
|
7
|
+
class Level {
|
|
8
|
+
constructor(name) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.objects = [];
|
|
11
|
+
this.collectables = [];
|
|
5
12
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
static SerializeObjectHeaders(writer, objects) {
|
|
23
|
-
writer.writeInt32(objects.length);
|
|
24
|
-
for (const obj of objects) {
|
|
25
|
-
switch (obj.type) {
|
|
26
|
-
case 'SaveEntity':
|
|
27
|
-
writer.writeInt32(SaveEntity_1.SaveEntity.TypeID);
|
|
28
|
-
SaveEntity_1.SaveEntity.SerializeHeader(writer, obj);
|
|
29
|
-
break;
|
|
30
|
-
case 'SaveComponent':
|
|
31
|
-
writer.writeInt32(SaveComponent_1.SaveComponent.TypeID);
|
|
32
|
-
SaveComponent_1.SaveComponent.SerializeHeader(writer, obj);
|
|
33
|
-
break;
|
|
34
|
-
default:
|
|
35
|
-
console.log('Unknown object type', obj);
|
|
36
|
-
break;
|
|
37
|
-
}
|
|
13
|
+
static SerializeObjectHeaders(writer, objects) {
|
|
14
|
+
writer.writeInt32(objects.length);
|
|
15
|
+
for (const obj of objects) {
|
|
16
|
+
switch (obj.type) {
|
|
17
|
+
case 'SaveEntity':
|
|
18
|
+
writer.writeInt32(SaveEntity_1.SaveEntity.TypeID);
|
|
19
|
+
SaveEntity_1.SaveEntity.SerializeHeader(writer, obj);
|
|
20
|
+
break;
|
|
21
|
+
case 'SaveComponent':
|
|
22
|
+
writer.writeInt32(SaveComponent_1.SaveComponent.TypeID);
|
|
23
|
+
SaveComponent_1.SaveComponent.SerializeHeader(writer, obj);
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
console.log('Unknown object type', obj);
|
|
27
|
+
break;
|
|
38
28
|
}
|
|
39
29
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
30
|
+
}
|
|
31
|
+
static WriteLevel(writer, level, buildVersion) {
|
|
32
|
+
const lenIndicatorHeaderAndCollectableSize = writer.getBufferPosition();
|
|
33
|
+
writer.writeInt32(0);
|
|
34
|
+
Level.SerializeObjectHeaders(writer, level.objects);
|
|
35
|
+
Level.SerializeCollectablesList(writer, level.collectables);
|
|
36
|
+
writer.writeBinarySizeFromPosition(lenIndicatorHeaderAndCollectableSize, lenIndicatorHeaderAndCollectableSize + 4);
|
|
37
|
+
Level.SerializeObjectContents(writer, level.objects, buildVersion, level.name);
|
|
38
|
+
Level.SerializeCollectablesList(writer, level.collectables);
|
|
39
|
+
}
|
|
40
|
+
static SerializeObjectContents(writer, objects, buildVersion, levelName) {
|
|
41
|
+
const lenIndicatorEntities = writer.getBufferPosition();
|
|
42
|
+
writer.writeInt32(0);
|
|
43
|
+
writer.writeInt32(objects.length);
|
|
44
|
+
for (const obj of objects) {
|
|
45
|
+
const lenReplacementPosition = writer.getBufferPosition();
|
|
51
46
|
writer.writeInt32(0);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
SaveEntity_1.SaveEntity.SerializeData(writer, obj, buildVersion);
|
|
58
|
-
}
|
|
59
|
-
else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
|
|
60
|
-
SaveComponent_1.SaveComponent.SerializeData(writer, obj, buildVersion);
|
|
61
|
-
}
|
|
62
|
-
writer.writeBinarySizeFromPosition(lenReplacementPosition, lenReplacementPosition + 4);
|
|
47
|
+
if ((0, SaveEntity_1.isSaveEntity)(obj)) {
|
|
48
|
+
SaveEntity_1.SaveEntity.SerializeData(writer, obj, buildVersion);
|
|
49
|
+
}
|
|
50
|
+
else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
|
|
51
|
+
SaveComponent_1.SaveComponent.SerializeData(writer, obj, buildVersion);
|
|
63
52
|
}
|
|
64
|
-
writer.writeBinarySizeFromPosition(
|
|
53
|
+
writer.writeBinarySizeFromPosition(lenReplacementPosition, lenReplacementPosition + 4);
|
|
65
54
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
55
|
+
writer.writeBinarySizeFromPosition(lenIndicatorEntities, lenIndicatorEntities + 4);
|
|
56
|
+
}
|
|
57
|
+
static ReadObjectHeaders(reader, objectsList, onProgressCallback) {
|
|
58
|
+
let countObjectHeaders = reader.readInt32();
|
|
59
|
+
for (let i = 0; i < countObjectHeaders; i++) {
|
|
60
|
+
if (i % 1000 === 0) {
|
|
61
|
+
onProgressCallback(reader.getBufferProgress());
|
|
62
|
+
}
|
|
63
|
+
let objectType = reader.readInt32();
|
|
64
|
+
switch (objectType) {
|
|
65
|
+
case SaveEntity_1.SaveEntity.TypeID:
|
|
66
|
+
let object = new SaveEntity_1.SaveEntity('', '', '', '');
|
|
67
|
+
SaveEntity_1.SaveEntity.ParseHeader(reader, object);
|
|
68
|
+
objectsList.push(object);
|
|
69
|
+
break;
|
|
70
|
+
case SaveComponent_1.SaveComponent.TypeID:
|
|
71
|
+
let component = new SaveComponent_1.SaveComponent('', '', '', '');
|
|
72
|
+
SaveComponent_1.SaveComponent.ParseHeader(reader, component);
|
|
73
|
+
objectsList.push(component);
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
console.log('Unknown object type', objectType);
|
|
77
|
+
break;
|
|
88
78
|
}
|
|
89
79
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
}
|
|
81
|
+
static async ReadObjectContents(reader, objectsList, buildVersion, onProgressCallback) {
|
|
82
|
+
const binarySize = reader.readInt32();
|
|
83
|
+
const posBefore = reader.getBufferPosition();
|
|
84
|
+
const countEntities = reader.readInt32();
|
|
85
|
+
if (countEntities !== objectsList.length) {
|
|
86
|
+
throw new Error(`possibly corrupt. entity content count ${countEntities} does not equal object count of ${objectsList.length}`);
|
|
87
|
+
}
|
|
88
|
+
for (let i = 0; i < countEntities; i++) {
|
|
89
|
+
if (i % 1000 === 0) {
|
|
90
|
+
onProgressCallback(reader.getBufferProgress());
|
|
96
91
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const before = reader.getBufferPosition();
|
|
103
|
-
const obj = objectsList[i];
|
|
104
|
-
if ((0, SaveEntity_1.isSaveEntity)(obj)) {
|
|
105
|
-
SaveEntity_1.SaveEntity.ParseData(obj, len, reader, buildVersion, obj.typePath);
|
|
106
|
-
}
|
|
107
|
-
else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
|
|
108
|
-
SaveComponent_1.SaveComponent.ParseData(obj, len, reader, buildVersion, obj.typePath);
|
|
109
|
-
}
|
|
110
|
-
const after = reader.getBufferPosition();
|
|
111
|
-
if (after - before !== len) {
|
|
112
|
-
console.warn('entity may be corrupt', this.name, i);
|
|
113
|
-
}
|
|
92
|
+
const len = reader.readInt32();
|
|
93
|
+
const before = reader.getBufferPosition();
|
|
94
|
+
const obj = objectsList[i];
|
|
95
|
+
if ((0, SaveEntity_1.isSaveEntity)(obj)) {
|
|
96
|
+
SaveEntity_1.SaveEntity.ParseData(obj, len, reader, buildVersion, obj.typePath);
|
|
114
97
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
98
|
+
else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
|
|
99
|
+
SaveComponent_1.SaveComponent.ParseData(obj, len, reader, buildVersion, obj.typePath);
|
|
100
|
+
}
|
|
101
|
+
const after = reader.getBufferPosition();
|
|
102
|
+
if (after - before !== len) {
|
|
103
|
+
console.warn('entity may be corrupt', this.name, i);
|
|
118
104
|
}
|
|
119
105
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Level.ReadObjectHeaders(reader, level.objects, reader.onProgressCallback);
|
|
124
|
-
reader.onProgressCallback(reader.getBufferProgress());
|
|
125
|
-
level.collectables = Level.ReadCollectablesList(reader);
|
|
126
|
-
console.log(`before object contents buffer pos ${reader.getBufferPosition()}`);
|
|
127
|
-
Level.ReadObjectContents(reader, level.objects, buildVersion, reader.onProgressCallback);
|
|
128
|
-
reader.onProgressCallback(reader.getBufferProgress());
|
|
129
|
-
Level.ReadCollectablesList(reader);
|
|
130
|
-
return level;
|
|
106
|
+
const posAfter = reader.getBufferPosition();
|
|
107
|
+
if (posAfter - posBefore !== binarySize) {
|
|
108
|
+
console.warn('save seems corrupt.', this.name);
|
|
131
109
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
110
|
+
}
|
|
111
|
+
static ReadLevel(reader, levelName, buildVersion) {
|
|
112
|
+
const level = new Level(levelName);
|
|
113
|
+
reader.readInt32();
|
|
114
|
+
Level.ReadObjectHeaders(reader, level.objects, reader.onProgressCallback);
|
|
115
|
+
reader.onProgressCallback(reader.getBufferProgress());
|
|
116
|
+
level.collectables = Level.ReadCollectablesList(reader);
|
|
117
|
+
Level.ReadObjectContents(reader, level.objects, buildVersion, reader.onProgressCallback);
|
|
118
|
+
reader.onProgressCallback(reader.getBufferProgress());
|
|
119
|
+
Level.ReadCollectablesList(reader);
|
|
120
|
+
return level;
|
|
121
|
+
}
|
|
122
|
+
static SerializeCollectablesList(writer, collectables) {
|
|
123
|
+
writer.writeInt32(collectables.length);
|
|
124
|
+
for (const collectable of collectables) {
|
|
125
|
+
ObjectReference_1.ObjectReference.Serialize(writer, collectable);
|
|
137
126
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return collected;
|
|
127
|
+
}
|
|
128
|
+
static ReadCollectablesList(reader) {
|
|
129
|
+
let countCollected = reader.readInt32();
|
|
130
|
+
const collected = [];
|
|
131
|
+
for (let i = 0; i < countCollected; i++) {
|
|
132
|
+
const collectable = ObjectReference_1.ObjectReference.Parse(reader);
|
|
133
|
+
collected.push(collectable);
|
|
146
134
|
}
|
|
135
|
+
return collected;
|
|
147
136
|
}
|
|
148
|
-
|
|
149
|
-
|
|
137
|
+
}
|
|
138
|
+
exports.Level = Level;
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SatisfactorySave = void 0;
|
|
4
|
+
class SatisfactorySave {
|
|
5
|
+
constructor(header) {
|
|
6
|
+
this.levels = [];
|
|
7
|
+
this.trailingCollectedObjects = [];
|
|
8
|
+
this.header = header;
|
|
5
9
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SatisfactorySave = void 0;
|
|
13
|
-
class SatisfactorySave {
|
|
14
|
-
constructor(header) {
|
|
15
|
-
this.levels = [];
|
|
16
|
-
this.trailingCollectedObjects = [];
|
|
17
|
-
this.header = header;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.SatisfactorySave = SatisfactorySave;
|
|
21
|
-
});
|
|
10
|
+
}
|
|
11
|
+
exports.SatisfactorySave = SatisfactorySave;
|