@etothepii/satisfactory-file-parser 0.4.3 → 0.4.5
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 +1 -1
- package/build/parser/satisfactory/edit/edit-constants.d.ts +9 -0
- package/build/parser/satisfactory/edit/edit-constants.js +9 -0
- package/build/parser/satisfactory/objects/DataFields.d.ts +14 -2
- package/build/parser/satisfactory/objects/DataFields.js +60 -0
- package/build/parser/satisfactory/objects/Property.d.ts +0 -3
- package/build/parser/satisfactory/objects/SaveEntity.js +2 -2
- package/build/parser/satisfactory/structs/util.types.d.ts +2 -0
- package/build/parser/satisfactory/structs/util.types.js +13 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1885,6 +1885,15 @@ export declare const EDIT: {
|
|
|
1885
1885
|
};
|
|
1886
1886
|
};
|
|
1887
1887
|
readonly SUBSYSTEMS_AND_MANAGERS: {
|
|
1888
|
+
readonly WORLD_SETTINGS: {
|
|
1889
|
+
readonly TYPE_PATH: "/Script/FactoryGame.FGWorldSettings";
|
|
1890
|
+
};
|
|
1891
|
+
readonly LIGHTWEIGHT_BUILDABLE_SUBSYSTEM: {
|
|
1892
|
+
readonly TYPE_PATH: "/Script/FactoryGame.FGLightweightBuildableSubsystem";
|
|
1893
|
+
};
|
|
1894
|
+
readonly BUILDABLE_SUBSYSTEM: {
|
|
1895
|
+
readonly TYPE_PATH: "/Game/FactoryGame/-Shared/Blueprint/BP_BuildableSubsystem.BP_BuildableSubsystem_C";
|
|
1896
|
+
};
|
|
1888
1897
|
readonly FOLIAGE_REMOVAL_SUBSYSTEM: {
|
|
1889
1898
|
readonly TYPE_PATH: "/Script/FactoryGame.FGFoliageRemovalSubsystem";
|
|
1890
1899
|
};
|
|
@@ -1969,6 +1969,15 @@ exports.EDIT = {
|
|
|
1969
1969
|
}
|
|
1970
1970
|
},
|
|
1971
1971
|
SUBSYSTEMS_AND_MANAGERS: {
|
|
1972
|
+
WORLD_SETTINGS: {
|
|
1973
|
+
TYPE_PATH: '/Script/FactoryGame.FGWorldSettings',
|
|
1974
|
+
},
|
|
1975
|
+
LIGHTWEIGHT_BUILDABLE_SUBSYSTEM: {
|
|
1976
|
+
TYPE_PATH: '/Script/FactoryGame.FGLightweightBuildableSubsystem'
|
|
1977
|
+
},
|
|
1978
|
+
BUILDABLE_SUBSYSTEM: {
|
|
1979
|
+
TYPE_PATH: '/Game/FactoryGame/-Shared/Blueprint/BP_BuildableSubsystem.BP_BuildableSubsystem_C'
|
|
1980
|
+
},
|
|
1972
1981
|
FOLIAGE_REMOVAL_SUBSYSTEM: {
|
|
1973
1982
|
TYPE_PATH: '/Script/FactoryGame.FGFoliageRemovalSubsystem'
|
|
1974
1983
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BinaryReadable } from "../../byte/binary-readable.interface";
|
|
2
2
|
import { ByteWriter } from '../../byte/byte-writer.class';
|
|
3
3
|
import { SaveWriter } from "../save/save-writer";
|
|
4
|
-
import { vec3 } from
|
|
4
|
+
import { Transform, vec3, vec4 } from '../structs/util.types';
|
|
5
5
|
import { AbstractBaseProperty } from "./Property";
|
|
6
6
|
import { SaveObject } from "./SaveObject";
|
|
7
7
|
import { ObjectReference } from "./values/ObjectReference";
|
|
8
|
-
export type SpecialAnyProperty = {} | PowerLineSpecialProperty | PlayerSpecialProperty;
|
|
8
|
+
export type SpecialAnyProperty = {} | PowerLineSpecialProperty | PlayerSpecialProperty | ConveyorSpecialProperty | BuildableSubsystemSpecialProperty;
|
|
9
9
|
export type PowerLineSpecialProperty = {
|
|
10
10
|
num: number;
|
|
11
11
|
source: ObjectReference;
|
|
@@ -27,6 +27,18 @@ export type ItemSpecialProperty = {
|
|
|
27
27
|
export type ConveyorSpecialProperty = {
|
|
28
28
|
items: ItemSpecialProperty[];
|
|
29
29
|
};
|
|
30
|
+
export type BuildableSubsystemSpecialProperty = {
|
|
31
|
+
buildables: {
|
|
32
|
+
typePath: string;
|
|
33
|
+
instances: {
|
|
34
|
+
transform: Transform;
|
|
35
|
+
unknownUseNumbers: [vec4, vec3];
|
|
36
|
+
swatchSlotTypePath: string;
|
|
37
|
+
paintFinishPath: string;
|
|
38
|
+
recipeTypePath: string;
|
|
39
|
+
}[];
|
|
40
|
+
}[];
|
|
41
|
+
};
|
|
30
42
|
export declare class DataFields {
|
|
31
43
|
constructor();
|
|
32
44
|
static ParseProperties(obj: SaveObject, length: number, reader: BinaryReadable, buildVersion: number, typePath: string): void;
|
|
@@ -81,6 +81,43 @@ class DataFields {
|
|
|
81
81
|
break;
|
|
82
82
|
}
|
|
83
83
|
break;
|
|
84
|
+
case '/Script/FactoryGame.FGLightweightBuildableSubsystem':
|
|
85
|
+
property = { buildables: [] };
|
|
86
|
+
const entriesCount = reader.readInt32();
|
|
87
|
+
if (entriesCount > 0) {
|
|
88
|
+
for (let i = 0; i < entriesCount; i++) {
|
|
89
|
+
reader.readInt32();
|
|
90
|
+
const typePath = reader.readString();
|
|
91
|
+
const count = reader.readInt32();
|
|
92
|
+
const instances = [];
|
|
93
|
+
for (let j = 0; j < count; j++) {
|
|
94
|
+
const transform = util_types_1.Transform.Parse(reader);
|
|
95
|
+
reader.readInt32();
|
|
96
|
+
const swatchSlotTypePath = reader.readString();
|
|
97
|
+
const zeroes = util_types_1.vec4.Parse(reader);
|
|
98
|
+
const oneZeroOne = util_types_1.vec3.Parse(reader);
|
|
99
|
+
const unknownUseNumbers = [zeroes, oneZeroOne];
|
|
100
|
+
reader.readInt32();
|
|
101
|
+
const paintFinishPath = reader.readString();
|
|
102
|
+
reader.readInt32();
|
|
103
|
+
reader.readBytes(1);
|
|
104
|
+
const recipeTypePath = reader.readString();
|
|
105
|
+
reader.readInt64();
|
|
106
|
+
instances.push({
|
|
107
|
+
transform,
|
|
108
|
+
unknownUseNumbers,
|
|
109
|
+
swatchSlotTypePath,
|
|
110
|
+
paintFinishPath,
|
|
111
|
+
recipeTypePath,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
property.buildables.push({
|
|
115
|
+
typePath,
|
|
116
|
+
instances
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
84
121
|
default:
|
|
85
122
|
property = {};
|
|
86
123
|
break;
|
|
@@ -219,6 +256,29 @@ class DataFields {
|
|
|
219
256
|
break;
|
|
220
257
|
}
|
|
221
258
|
break;
|
|
259
|
+
case '/Script/FactoryGame.FGLightweightBuildableSubsystem':
|
|
260
|
+
writer.writeInt32(property.buildables.length);
|
|
261
|
+
if (property.buildables.length > 0) {
|
|
262
|
+
for (const buildable of property.buildables) {
|
|
263
|
+
writer.writeInt32(0);
|
|
264
|
+
writer.writeString(buildable.typePath);
|
|
265
|
+
writer.writeInt32(buildable.instances.length);
|
|
266
|
+
for (const instance of buildable.instances) {
|
|
267
|
+
util_types_1.Transform.Serialize(writer, instance.transform);
|
|
268
|
+
writer.writeInt32(0);
|
|
269
|
+
writer.writeString(instance.swatchSlotTypePath);
|
|
270
|
+
util_types_1.vec4.Serialize(writer, instance.unknownUseNumbers[0]);
|
|
271
|
+
util_types_1.vec3.Serialize(writer, instance.unknownUseNumbers[1]);
|
|
272
|
+
writer.writeInt32(0);
|
|
273
|
+
writer.writeString(instance.paintFinishPath);
|
|
274
|
+
writer.writeInt32(0);
|
|
275
|
+
writer.writeByte(0);
|
|
276
|
+
writer.writeString(instance.recipeTypePath);
|
|
277
|
+
writer.writeInt64(0n);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
break;
|
|
222
282
|
}
|
|
223
283
|
}
|
|
224
284
|
static SerializeProperty(writer, property, propertyName, buildVersion) {
|
|
@@ -20,9 +20,6 @@ export declare abstract class BasicProperty extends AbstractBaseProperty {
|
|
|
20
20
|
guidInfo: GUIDInfo;
|
|
21
21
|
constructor(type: string, ueType: string, guidInfo: GUIDInfo, index?: number);
|
|
22
22
|
}
|
|
23
|
-
export type OverheadResult = {
|
|
24
|
-
overhead: number;
|
|
25
|
-
};
|
|
26
23
|
export declare class BoolProperty extends BasicProperty {
|
|
27
24
|
value: boolean;
|
|
28
25
|
constructor(value: boolean, ueType?: string, guidInfo?: GUIDInfo, index?: number);
|
|
@@ -30,7 +30,7 @@ class SaveEntity extends SaveObject_1.SaveObject {
|
|
|
30
30
|
static ParseHeader(reader, obj) {
|
|
31
31
|
SaveObject_1.SaveObject.ParseHeader(reader, obj);
|
|
32
32
|
obj.needTransform = reader.readInt32() == 1;
|
|
33
|
-
obj.transform = util_types_1.Transform.
|
|
33
|
+
obj.transform = util_types_1.Transform.ParseF(reader);
|
|
34
34
|
obj.wasPlacedInLevel = reader.readInt32() == 1;
|
|
35
35
|
}
|
|
36
36
|
static ParseData(entity, length, reader, buildVersion, typePath) {
|
|
@@ -48,7 +48,7 @@ class SaveEntity extends SaveObject_1.SaveObject {
|
|
|
48
48
|
static SerializeHeader(writer, entity) {
|
|
49
49
|
SaveObject_1.SaveObject.SerializeHeader(writer, entity);
|
|
50
50
|
writer.writeInt32(entity.needTransform ? 1 : 0);
|
|
51
|
-
util_types_1.Transform.
|
|
51
|
+
util_types_1.Transform.SerializeF(writer, entity.transform);
|
|
52
52
|
writer.writeInt32(entity.wasPlacedInLevel ? 1 : 0);
|
|
53
53
|
}
|
|
54
54
|
static SerializeData(writer, entity, buildVersion) {
|
|
@@ -53,6 +53,8 @@ export type Transform = {
|
|
|
53
53
|
scale3d: vec3;
|
|
54
54
|
};
|
|
55
55
|
export declare namespace Transform {
|
|
56
|
+
const ParseF: (reader: BinaryReadable) => Transform;
|
|
56
57
|
const Parse: (reader: BinaryReadable) => Transform;
|
|
57
58
|
const Serialize: (writer: ByteWriter, transform: Transform) => void;
|
|
59
|
+
const SerializeF: (writer: ByteWriter, transform: Transform) => void;
|
|
58
60
|
}
|
|
@@ -120,14 +120,26 @@ var vec2;
|
|
|
120
120
|
})(vec2 || (exports.vec2 = vec2 = {}));
|
|
121
121
|
var Transform;
|
|
122
122
|
(function (Transform) {
|
|
123
|
-
Transform.
|
|
123
|
+
Transform.ParseF = (reader) => {
|
|
124
124
|
return {
|
|
125
125
|
rotation: vec4.ParseF(reader),
|
|
126
126
|
translation: vec3.ParseF(reader),
|
|
127
127
|
scale3d: vec3.ParseF(reader),
|
|
128
128
|
};
|
|
129
129
|
};
|
|
130
|
+
Transform.Parse = (reader) => {
|
|
131
|
+
return {
|
|
132
|
+
rotation: vec4.Parse(reader),
|
|
133
|
+
translation: vec3.Parse(reader),
|
|
134
|
+
scale3d: vec3.Parse(reader),
|
|
135
|
+
};
|
|
136
|
+
};
|
|
130
137
|
Transform.Serialize = (writer, transform) => {
|
|
138
|
+
vec4.Serialize(writer, transform.rotation);
|
|
139
|
+
vec3.Serialize(writer, transform.translation);
|
|
140
|
+
vec3.Serialize(writer, transform.scale3d);
|
|
141
|
+
};
|
|
142
|
+
Transform.SerializeF = (writer, transform) => {
|
|
131
143
|
vec4.SerializeF(writer, transform.rotation);
|
|
132
144
|
vec3.SerializeF(writer, transform.translation);
|
|
133
145
|
vec3.SerializeF(writer, transform.scale3d);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etothepii/satisfactory-file-parser",
|
|
3
3
|
"author": "etothepii",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.5",
|
|
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",
|