@etothepii/satisfactory-file-parser 0.4.13 → 0.4.15

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 (55) hide show
  1. package/LICENCE.md +1 -1
  2. package/README.md +64 -28
  3. package/build/parser/byte/binary-readable.interface.d.ts +0 -3
  4. package/build/parser/byte/binary-writable.interface.d.ts +20 -0
  5. package/build/parser/byte/binary-writable.interface.js +2 -0
  6. package/build/parser/byte/byte-reader.class.d.ts +0 -3
  7. package/build/parser/byte/byte-reader.class.js +0 -8
  8. package/build/parser/byte/byte-writer.class.d.ts +6 -3
  9. package/build/parser/byte/byte-writer.class.js +3 -1
  10. package/build/parser/satisfactory/blueprint/blueprint-reader.js +8 -8
  11. package/build/parser/satisfactory/edit/edit-constants.d.ts +2 -0
  12. package/build/parser/satisfactory/edit/edit-constants.js +82 -158
  13. package/build/parser/satisfactory/objects/DataFields.js +9 -9
  14. package/build/parser/satisfactory/objects/SaveObject.d.ts +1 -1
  15. package/build/parser/satisfactory/objects/SaveObject.js +1 -1
  16. package/build/parser/satisfactory/objects/property/generic/FloatProperty.js +1 -1
  17. package/build/parser/satisfactory/objects/property/generic/StructProperty.js +11 -4
  18. package/build/parser/satisfactory/save/level.class.d.ts +1 -2
  19. package/build/parser/satisfactory/save/level.class.js +10 -15
  20. package/build/parser/satisfactory/save/save-reader.js +8 -4
  21. package/build/parser/satisfactory/save/save.types.d.ts +0 -25
  22. package/build/parser/satisfactory/structs/util.types.js +8 -8
  23. package/build/parser/stream/reworked/readable-stream-parser.d.ts +1 -0
  24. package/build/parser/stream/reworked/readable-stream-parser.js +28 -3
  25. package/package.json +1 -1
  26. package/build/parser/satisfactory/objects/ObjectReference.d.ts +0 -10
  27. package/build/parser/satisfactory/objects/ObjectReference.js +0 -17
  28. package/build/parser/satisfactory/objects/Property.d.ts +0 -272
  29. package/build/parser/satisfactory/objects/Property.js +0 -1177
  30. package/build/parser/satisfactory/objects/ue/FMD5Hash.d.ts +0 -7
  31. package/build/parser/satisfactory/objects/ue/FMD5Hash.js +0 -19
  32. package/build/parser/satisfactory/objects/ue/GUID.d.ts +0 -6
  33. package/build/parser/satisfactory/objects/ue/GUID.js +0 -21
  34. package/build/parser/satisfactory/save/asynchronous-level.class.d.ts +0 -9
  35. package/build/parser/satisfactory/save/asynchronous-level.class.js +0 -66
  36. package/build/parser/stream/byte-stream-reader.class.d.ts +0 -57
  37. package/build/parser/stream/byte-stream-reader.class.js +0 -241
  38. package/build/parser/stream/json-stream-state-writer.d.ts +0 -12
  39. package/build/parser/stream/json-stream-state-writer.js +0 -18
  40. package/build/parser/stream/json-stream-writable.d.ts +0 -20
  41. package/build/parser/stream/json-stream-writable.js +0 -83
  42. package/build/parser/stream/json-stream-writer.d.ts +0 -22
  43. package/build/parser/stream/json-stream-writer.js +0 -127
  44. package/build/parser/stream/reworked/stream-parser.d.ts +0 -6
  45. package/build/parser/stream/reworked/stream-parser.js +0 -31
  46. package/build/parser/stream/save-stream-json-stringifier.d.ts +0 -6
  47. package/build/parser/stream/save-stream-json-stringifier.js +0 -35
  48. package/build/parser/stream/save-stream-reader.class.d.ts +0 -15
  49. package/build/parser/stream/save-stream-reader.class.js +0 -121
  50. package/build/parser/stream/save-stream-writer.class.d.ts +0 -25
  51. package/build/parser/stream/save-stream-writer.class.js +0 -119
  52. package/build/parser/stream/stream-level.class.d.ts +0 -12
  53. package/build/parser/stream/stream-level.class.js +0 -103
  54. package/build/parser/stream/stream-parser.d.ts +0 -40
  55. package/build/parser/stream/stream-parser.js +0 -225
@@ -1,87 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EDIT = void 0;
4
- const TYPE_PATH_MINERMK1 = '/Game/FactoryGame/Buildable/Factory/MinerMK1/Build_MinerMk1.Build_MinerMk1_C';
5
- const TYPE_PATH_MINERMK2 = '/Game/FactoryGame/Buildable/Factory/MinerMk2/Build_MinerMk2.Build_MinerMk2_C';
6
- const TYPE_PATH_MINERMK3 = '/Game/FactoryGame/Buildable/Factory/MinerMk3/Build_MinerMk3.Build_MinerMk3_C';
7
- const TYPE_PATH_WATER_EXTRACTOR = '/Game/FactoryGame/Buildable/Factory/WaterPump/Build_WaterPump.Build_WaterPump_C';
8
- const TYPE_PATH_OIL_EXTRACTOR = '/Game/FactoryGame/Buildable/Factory/OilPump/Build_OilPump.Build_OilPump_C';
9
- const TYPE_PATH_FRACKING_SMASHER = '/Game/FactoryGame/Buildable/Factory/FrackingSmasher/Build_FrackingSmasher.Build_FrackingSmasher_C';
10
- const TYPE_PATH_FRACKING_EXTRACTOR = '/Game/FactoryGame/Buildable/Factory/FrackingExtractor/Build_FrackingExtractor.Build_FrackingExtractor_C';
11
- const TYPE_PATH_TREE_GIFT_PRODUCER = '/Game/FactoryGame/Buildable/Factory/Holiday/Build_TreeGiftProducer/Build_TreeGiftProducer.Build_TreeGiftProducer_C';
12
- const TYPE_PATH_REFINERY = '/Game/FactoryGame/Buildable/Factory/OilRefinery/Build_OilRefinery.Build_OilRefinery_C';
13
- const TYPE_PATH_BLENDER = '/Game/FactoryGame/Buildable/Factory/Blender/Build_Blender.Build_Blender_C';
14
- const TYPE_PATH_SMELTER = '/Game/FactoryGame/Buildable/Factory/SmelterMk1/Build_SmelterMk1.Build_SmelterMk1_C';
15
- const TYPE_PATH_CONSTRUCTOR = '/Game/FactoryGame/Buildable/Factory/ConstructorMk1/Build_ConstructorMk1.Build_ConstructorMk1_C';
16
- const TYPE_PATH_ASSEMBLER = '/Game/FactoryGame/Buildable/Factory/AssemblerMk1/Build_AssemblerMk1.Build_AssemblerMk1_C';
17
- const TYPE_PATH_MANUFACTURER = '/Game/FactoryGame/Buildable/Factory/ManufacturerMk1/Build_ManufacturerMk1.Build_ManufacturerMk1_C';
18
- const TYPE_PATH_PARTICLE_ACCELERATOR = '/Game/FactoryGame/Buildable/Factory/HadronCollider/Build_HadronCollider.Build_HadronCollider_C';
19
- const TYPE_PATH_FOUNDRY = '/Game/FactoryGame/Buildable/Factory/FoundryMk1/Build_FoundryMk1.Build_FoundryMk1_C';
20
- const TYPE_PATH_PACKAGER = '/Game/FactoryGame/Buildable/Factory/Packager/Build_Packager.Build_Packager_C';
21
- const RECIPE_PACKAGER = '/Game/FactoryGame/Recipes/Buildings/Recipe_Packager.Recipe_Packager_C';
22
- const TYPE_PATH_CONTAINER_MK1 = '/Game/FactoryGame/Buildable/Factory/StorageContainerMk1/Build_StorageContainerMk1.Build_StorageContainerMk1_C';
23
- const CLASS_NAME_CONTAINER_MK1 = 'Build_StorageContainerMk1_C';
24
- const TYPE_PATH_CONTAINER_MK2 = '/Game/FactoryGame/Buildable/Factory/StorageContainerMk2/Build_StorageContainerMk2.Build_StorageContainerMk2_C';
25
- const CLASS_NAME_CONTAINER_MK2 = 'Build_StorageContainerMk2_C';
26
- const TYPE_PATH_FLUID_BUFFER_MK1 = '/Game/FactoryGame/Buildable/Factory/StorageTank/Build_PipeStorageTank.Build_PipeStorageTank_C';
27
- const CLASS_NAME_FLUID_BUFFER_MK1 = 'Build_PipeStorageTank_C';
28
- const RECIPE_FLUID_BUFFER_MK1 = '/Game/FactoryGame/Recipes/Buildings/Recipe_PipeStorageTank.Recipe_PipeStorageTank_C';
29
- const TYPE_PATH_FLUID_BUFFER_MK2 = '/Game/FactoryGame/Buildable/Factory/IndustrialFluidContainer/Build_IndustrialTank.Build_IndustrialTank_C';
30
- const CLASS_NAME_FLUID_BUFFER_MK2 = 'Build_IndustrialTank_C';
31
- const RECIPE_FLUID_BUFFER_MK2 = '/Game/FactoryGame/Recipes/Buildings/Recipe_IndustrialTank.Recipe_IndustrialTank_C';
32
- const TYPE_PATH_PLAYER_CRATE = '/Game/FactoryGame/-Shared/Crate/BP_Crate.BP_Crate_C';
33
- const CLASS_NAME_PLAYER_CRATE = 'BP_Crate_C';
34
- const TYPE_PATH_PLAYER_HAZARD_CRATE = '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageHazard.Build_StorageHazard_C';
35
- const CLASS_NAME_PLAYER_HAZARD_CRATE = 'Build_StorageHazard_C';
36
- const RECIPE_PLAYER_HAZARD_CRATE = '/Game/FactoryGame/Recipes/Buildings/Recipe_StorageHazard.Recipe_StorageHazard_C';
37
- const TYPE_PATH_PLAYER_STORAGE_CRATE_INTEGRATED = '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageIntegrated.Build_StorageIntegrated_C';
38
- const CLASS_NAME_PLAYER_STORAGE_CRATE_INTEGRATED = 'Build_StorageIntegrated_C';
39
- const TYPE_PATH_PLAYER_STORAGE_CRATE = '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StoragePlayer.Build_StoragePlayer_C';
40
- const CLASS_NAME_PLAYER_STORAGE_CRATE = 'Build_StoragePlayer_C';
41
- const TYPE_PATH_PLAYER_MEDICAL_CRATE = '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageMedkit.Build_StorageMedkit_C';
42
- const CLASS_NAME_PLAYER_MEDICAL_CRATE = 'Build_StorageMedkit_C';
43
- const RECIPE_WALL_GATE_8x4_01 = '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Gate_8x4_01.Recipe_Wall_Gate_8x4_01_C';
44
- const RECIPE_WALL_WINDOW_8x4_01 = '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Window_8x4_01.Recipe_Wall_Window_8x4_01_C';
45
- const TYPE_PATH_WALL_DOOR_8x4_01 = '/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Door_8x4_01.Build_Wall_Door_8x4_01_C';
46
- const CLASS_NAME_WALL_DOOR_8x4_01 = 'Build_Wall_Door_8x4_01_C';
47
- const RECIPE_WALL_DOOR_8x4_01 = '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Door_8x4_01.Recipe_Wall_Door_8x4_01_C';
48
- const TYPE_PATH_HEALTH_COMPONENT = '/Script/FactoryGame.FGHealthComponent';
49
- const TYPE_PATH_INVENTORY_COMPONENT = '/Script/FactoryGame.FGInventoryComponent';
50
- const TYPE_PATH_POWER_CONNECTION_COMPONENT = '/Script/FactoryGame.FGPowerConnectionComponent';
51
- const TYPE_PATH_RAILWAY_CONNECTION_COMPONENT = '/Script/FactoryGame.FGRailroadTrackConnectionComponent';
52
- const TYPE_PATH_FACTORY_CONNECTION_COMPONENT = '/Script/FactoryGame.FGFactoryConnectionComponent';
53
- const FACTORY_CONNECTION_ENUM_BASE = 'EFactoryConnectionDirection';
54
- const FACTORY_CONNECTION_ENUM_INPUT = FACTORY_CONNECTION_ENUM_BASE + '::FCD_INPUT';
55
- const FACTORY_CONNECTION_ENUM_OUTPUT = FACTORY_CONNECTION_ENUM_BASE + '::FCD_OUTPUT';
56
- const TYPE_PATH_LIZARD_DOGGO = '/Game/FactoryGame/Character/Creature/Wildlife/SpaceRabbit/Char_SpaceRabbit.Char_SpaceRabbit_C';
57
- const CLASS_NAME_LIZARD_DOGGO = 'Char_SpaceRabbit_C';
58
- const TYPE_PATH_SPACE_GIRAFFE = '/Game/FactoryGame/Character/Creature/Wildlife/SpaceGiraffe/Char_SpaceGiraffe.Char_SpaceGiraffe_C';
59
- const CLASS_NAME_SPACE_GIRAFFE = 'Char_SpaceGiraffe_C';
60
- const TYPE_PATH_BIRD = '/Game/FactoryGame/Character/Creature/Wildlife/NonFlyingBird/Char_NonFlyingBird.Char_NonFlyingBird_C';
61
- const CLASS_NAME_BIRD = 'Char_NonFlyingBird_C';
62
- const TYPE_PATH_SIGN_SMALL = '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Small.Build_StandaloneWidgetSign_Small_C';
63
- const CLASS_NAME_SIGN_SMALL = 'Build_StandaloneWidgetSign_Small_C';
64
- const RECIPE_SIGN_SMALL = '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_Small.Recipe_StandaloneWidgetSign_Small_C';
65
- const TYPE_PATH_SIGN_SMALL_WIDE = '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_SmallWide.Build_StandaloneWidgetSign_SmallWide_C';
66
- const CLASS_NAME_SIGN_SMALL_WIDE = 'Build_StandaloneWidgetSign_SmallWide_C';
67
- const PREFAB_LAYOUT_SIGN_4x1_1 = '/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign4x1_1.BPW_Sign4x1_1_C';
68
- const RECIPE_SIGN_SMALL_WIDE = '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_SmallWide.Recipe_StandaloneWidgetSign_SmallWide_C';
69
- const TYPE_PATH_SIGN_PORTRAIT = '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Portrait.Build_StandaloneWidgetSign_Portrait_C';
70
- const CLASS_NAME_SIGN_PORTRAIT = 'Build_StandaloneWidgetSign_Portrait_C';
71
- const PREFAB_LAYOUT_SIGN_PORTRAIT = '/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign2x3_0.BPW_Sign2x3_0_C';
72
- const RECIPE_SIGN_PORTRAIT = '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_Portrait.Recipe_StandaloneWidgetSign_Portrait_C';
73
- const TYPE_PATH_PIPE_NETWORK = '/Script/FactoryGame.FGPipeNetwork';
74
- const TYPE_PATH_RAILROADTRACK = '/Game/FactoryGame/Buildable/Factory/Train/Track/Build_RailroadTrack.Build_RailroadTrack_C';
75
- const CLASS_NAME_RAILROADTRACK = 'Build_RailroadTrack_C';
76
- const RECIPE_RAILROADTRACK = '/Game/FactoryGame/Recipes/Buildings/Recipe_RailroadTrack.Recipe_RailroadTrack_C';
77
- const TYPE_PATH_POWER_POLE_MK2 = '/Game/FactoryGame/Buildable/Factory/PowerPoleMk2/Build_PowerPoleMk2.Build_PowerPoleMk2_C';
78
- const CLASS_NAME_POLWER_POLE_MK2 = 'Build_PowerPoleMk2_C';
79
- const TYPE_PATH_POWERLINE = '/Game/FactoryGame/Buildable/Factory/PowerLine/Build_PowerLine.Build_PowerLine_C';
80
- const CLASS_NAME_POWERLINE = 'Build_PowerLine_C';
81
4
  const SWATCH_DESC_CONCRETE = '/Game/FactoryGame/Buildable/-Shared/Customization/Swatches/SwatchDesc_Concrete.SwatchDesc_Concrete_C';
82
5
  const SWATCH_SLOT_DEFAULT_0 = '/Game/FactoryGame/Buildable/-Shared/Customization/Swatches/SwatchDesc_Slot0.SwatchDesc_Slot0_C';
83
6
  const SWATCH_SLOT_DEFAULT_FOUNDATIONS = '/Game/FactoryGame/Buildable/-Shared/Customization/Swatches/SwatchDesc_Slot16.SwatchDesc_Slot16_C';
84
- const PATTERN_FULL_FACTORY_ZONE = '/Game/FactoryGame/Buildable/-Shared/Customization/Patterns/Zones/PatternDesc_ZoneFull.PatternDesc_ZoneFull_C';
85
7
  exports.EDIT = {
86
8
  ENTITIES: {
87
9
  FOUNDATION: {
@@ -1097,7 +1019,7 @@ exports.EDIT = {
1097
1019
  },
1098
1020
  GATE: {
1099
1021
  NORMAL_WALL_GATE: {
1100
- RECIPE: RECIPE_WALL_GATE_8x4_01,
1022
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Gate_8x4_01.Recipe_Wall_Gate_8x4_01_C',
1101
1023
  TYPE_PATH: '/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Gate_8x4_01.Build_Wall_Gate_8x4_01_C',
1102
1024
  CLASS_NAME: 'Build_Wall_Gate_8x4_01_C',
1103
1025
  },
@@ -1160,9 +1082,9 @@ exports.EDIT = {
1160
1082
  },
1161
1083
  DOOR: {
1162
1084
  NORMAL_CENTER: {
1163
- RECIPE: RECIPE_WALL_DOOR_8x4_01,
1164
- TYPE_PATH: TYPE_PATH_WALL_DOOR_8x4_01,
1165
- CLASS_NAME: CLASS_NAME_WALL_DOOR_8x4_01,
1085
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Door_8x4_01.Recipe_Wall_Door_8x4_01_C',
1086
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Door_8x4_01.Build_Wall_Door_8x4_01_C',
1087
+ CLASS_NAME: 'Build_Wall_Door_8x4_01_C',
1166
1088
  },
1167
1089
  NORMAL_SIDE: {
1168
1090
  TYPE_PATH: '/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Door_8x4_03.Build_Wall_Door_8x4_03_C',
@@ -1195,7 +1117,7 @@ exports.EDIT = {
1195
1117
  CLASS_NAME: 'Build_Wall_Window_Thin_8x4_02_C'
1196
1118
  },
1197
1119
  NORMAL_8x4_01: {
1198
- RECIPE: RECIPE_WALL_WINDOW_8x4_01,
1120
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Walls/Recipe_Wall_Window_8x4_01.Recipe_Wall_Window_8x4_01_C',
1199
1121
  TYPE_PATH: '/Game/FactoryGame/Buildable/Building/Wall/Build_Wall_Window_8x4_01.Build_Wall_Window_8x4_01_C',
1200
1122
  CLASS_NAME: 'Build_Wall_Window_8x4_01_C',
1201
1123
  },
@@ -1705,24 +1627,26 @@ exports.EDIT = {
1705
1627
  CLASS_NAME: 'Build_PowerPoleMk1_C',
1706
1628
  },
1707
1629
  POWER_POLE_MK2: {
1708
- TYPE_PATH: TYPE_PATH_POWER_POLE_MK2,
1709
- CLASS_NAME: CLASS_NAME_POLWER_POLE_MK2
1630
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleMk2/Build_PowerPoleMk2.Build_PowerPoleMk2_C',
1631
+ CLASS_NAME: 'Build_PowerPoleMk2_C'
1710
1632
  },
1711
1633
  POWER_POLE_MK3: {
1712
1634
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleMk3/Build_PowerPoleMk3.Build_PowerPoleMk3_C',
1713
1635
  CLASS_NAME: 'Build_PowerPoleMk3_C'
1714
1636
  },
1715
1637
  POWER_POLE_WALL_MK1: {
1716
- TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall.Build_PowerPoleWall_C'
1638
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall.Build_PowerPoleWall_C',
1639
+ CLASS_NAME: 'Build_PowerPoleWall_C'
1717
1640
  },
1718
1641
  POWER_POLE_WALL_MK2: {
1719
- TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall_Mk2.Build_PowerPoleWall_Mk2_C'
1642
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerPoleWall/Build_PowerPoleWall_Mk2.Build_PowerPoleWall_Mk2_C',
1643
+ CLASS_NAME: 'Build_PowerPoleWall_Mk2_C'
1720
1644
  },
1721
1645
  },
1722
1646
  POWER_LINE: {
1723
1647
  POWER_LINE: {
1724
- TYPE_PATH: TYPE_PATH_POWERLINE,
1725
- CLASS_NAME: CLASS_NAME_POWERLINE
1648
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PowerLine/Build_PowerLine.Build_PowerLine_C',
1649
+ CLASS_NAME: 'Build_PowerLine_C'
1726
1650
  },
1727
1651
  POWER_LINE_XMAS: {
1728
1652
  TYPE_PATH: '/Game/FactoryGame/Events/Christmas/Buildings/PowerLineLights/Build_XmassLightsLine.Build_XmassLightsLine_C',
@@ -1741,9 +1665,9 @@ exports.EDIT = {
1741
1665
  }
1742
1666
  },
1743
1667
  RAILROAD: {
1744
- TYPE_PATH: TYPE_PATH_RAILROADTRACK,
1745
- CLASS_NAME: CLASS_NAME_RAILROADTRACK,
1746
- RECIPE: RECIPE_RAILROADTRACK
1668
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/Train/Track/Build_RailroadTrack.Build_RailroadTrack_C',
1669
+ CLASS_NAME: 'Build_RailroadTrack_C',
1670
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_RailroadTrack.Recipe_RailroadTrack_C'
1747
1671
  },
1748
1672
  HUB_TERMINAL: {
1749
1673
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/HubTerminal/Build_HubTerminal.Build_HubTerminal_C',
@@ -1878,7 +1802,7 @@ exports.EDIT = {
1878
1802
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/PipelineMk2/Build_PipelineMK2.Build_PipelineMK2_C'
1879
1803
  },
1880
1804
  PIPELINE_NETWORK: {
1881
- TYPE_PATH: TYPE_PATH_PIPE_NETWORK
1805
+ TYPE_PATH: '/Script/FactoryGame.FGPipeNetwork'
1882
1806
  }
1883
1807
  },
1884
1808
  RADAR_TOWER: {
@@ -1891,57 +1815,57 @@ exports.EDIT = {
1891
1815
  },
1892
1816
  EXTRACTOR: {
1893
1817
  MINER_MK_1: {
1894
- TYPE_PATH: TYPE_PATH_MINERMK1
1818
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/MinerMK1/Build_MinerMk1.Build_MinerMk1_C'
1895
1819
  },
1896
1820
  MINER_MK_2: {
1897
- TYPE_PATH: TYPE_PATH_MINERMK2
1821
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/MinerMk2/Build_MinerMk2.Build_MinerMk2_C'
1898
1822
  },
1899
1823
  MINER_MK_3: {
1900
- TYPE_PATH: TYPE_PATH_MINERMK3
1824
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/MinerMk3/Build_MinerMk3.Build_MinerMk3_C'
1901
1825
  },
1902
1826
  WATER_EXTRACTOR: {
1903
- TYPE_PATH: TYPE_PATH_WATER_EXTRACTOR
1827
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/WaterPump/Build_WaterPump.Build_WaterPump_C'
1904
1828
  },
1905
1829
  OIL_EXTRACTOR: {
1906
- TYPE_PATH: TYPE_PATH_OIL_EXTRACTOR
1830
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/OilPump/Build_OilPump.Build_OilPump_C'
1907
1831
  },
1908
1832
  WELL_PRESSURIZER: {
1909
- TYPE_PATH: TYPE_PATH_FRACKING_SMASHER
1833
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/FrackingSmasher/Build_FrackingSmasher.Build_FrackingSmasher_C'
1910
1834
  },
1911
1835
  WELL_EXTRACTOR: {
1912
- TYPE_PATH: TYPE_PATH_FRACKING_EXTRACTOR
1836
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/FrackingExtractor/Build_FrackingExtractor.Build_FrackingExtractor_C'
1913
1837
  },
1914
1838
  GIFT_PRODUCER: {
1915
- TYPE_PATH: TYPE_PATH_TREE_GIFT_PRODUCER
1839
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/Holiday/Build_TreeGiftProducer/Build_TreeGiftProducer.Build_TreeGiftProducer_C'
1916
1840
  },
1917
1841
  },
1918
1842
  FACTORY: {
1919
1843
  CONSTRUCTOR: {
1920
- TYPE_PATH: TYPE_PATH_CONSTRUCTOR
1844
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/ConstructorMk1/Build_ConstructorMk1.Build_ConstructorMk1_C'
1921
1845
  },
1922
1846
  SMELTER: {
1923
- TYPE_PATH: TYPE_PATH_SMELTER
1847
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/SmelterMk1/Build_SmelterMk1.Build_SmelterMk1_C'
1924
1848
  },
1925
1849
  REFINERY: {
1926
- TYPE_PATH: TYPE_PATH_REFINERY
1850
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/OilRefinery/Build_OilRefinery.Build_OilRefinery_C'
1927
1851
  },
1928
1852
  BLENDER: {
1929
- TYPE_PATH: TYPE_PATH_BLENDER
1853
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/Blender/Build_Blender.Build_Blender_C'
1930
1854
  },
1931
1855
  ASSEMBLER: {
1932
- TYPE_PATH: TYPE_PATH_ASSEMBLER
1856
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/AssemblerMk1/Build_AssemblerMk1.Build_AssemblerMk1_C'
1933
1857
  },
1934
1858
  MANUFACTURER: {
1935
- TYPE_PATH: TYPE_PATH_MANUFACTURER
1859
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/ManufacturerMk1/Build_ManufacturerMk1.Build_ManufacturerMk1_C'
1936
1860
  },
1937
1861
  FOUNDRY: {
1938
- TYPE_PATH: TYPE_PATH_FOUNDRY
1862
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/FoundryMk1/Build_FoundryMk1.Build_FoundryMk1_C'
1939
1863
  },
1940
1864
  PACKAGER: {
1941
- TYPE_PATH: TYPE_PATH_PACKAGER
1865
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/Packager/Build_Packager.Build_Packager_C'
1942
1866
  },
1943
1867
  PARTICLE_ACCELERATOR: {
1944
- TYPE_PATH: TYPE_PATH_PARTICLE_ACCELERATOR
1868
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/HadronCollider/Build_HadronCollider.Build_HadronCollider_C'
1945
1869
  },
1946
1870
  CONVERTER: {
1947
1871
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/Converter/Build_Converter.Build_Converter_C'
@@ -1983,47 +1907,47 @@ exports.EDIT = {
1983
1907
  },
1984
1908
  STORAGE: {
1985
1909
  CONTAINER_MK_1: {
1986
- TYPE_PATH: TYPE_PATH_CONTAINER_MK1,
1987
- CLASS_NAME: CLASS_NAME_CONTAINER_MK1
1910
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StorageContainerMk1/Build_StorageContainerMk1.Build_StorageContainerMk1_C',
1911
+ CLASS_NAME: 'Build_StorageContainerMk1_C'
1988
1912
  },
1989
1913
  CONTAINER_MK_2: {
1990
- TYPE_PATH: TYPE_PATH_CONTAINER_MK2,
1991
- CLASS_NAME: CLASS_NAME_CONTAINER_MK2
1914
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StorageContainerMk2/Build_StorageContainerMk2.Build_StorageContainerMk2_C',
1915
+ CLASS_NAME: 'Build_StorageContainerMk2_C'
1992
1916
  },
1993
1917
  CENTRAL_STORAGE: {
1994
1918
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/CentralStorage/Build_CentralStorage.Build_CentralStorage_C',
1995
1919
  CLASS_NAME: 'Build_CentralStorage_C'
1996
1920
  },
1997
1921
  FLUID_BUFFER_MK_1: {
1998
- TYPE_PATH: TYPE_PATH_FLUID_BUFFER_MK1,
1999
- CLASS_NAME: CLASS_NAME_FLUID_BUFFER_MK1,
2000
- RECIPE: RECIPE_FLUID_BUFFER_MK1
1922
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StorageTank/Build_PipeStorageTank.Build_PipeStorageTank_C',
1923
+ CLASS_NAME: 'Build_PipeStorageTank_C',
1924
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_PipeStorageTank.Recipe_PipeStorageTank_C'
2001
1925
  },
2002
1926
  FLUID_BUFFER_MK_2: {
2003
- TYPE_PATH: TYPE_PATH_FLUID_BUFFER_MK2,
2004
- CLASS_NAME: CLASS_NAME_FLUID_BUFFER_MK2,
2005
- RECIPE: RECIPE_FLUID_BUFFER_MK2
1927
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/IndustrialFluidContainer/Build_IndustrialTank.Build_IndustrialTank_C',
1928
+ CLASS_NAME: 'Build_IndustrialTank_C',
1929
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_IndustrialTank.Recipe_IndustrialTank_C'
2006
1930
  },
2007
1931
  PLAYER_CRATE: {
2008
- TYPE_PATH: TYPE_PATH_PLAYER_CRATE,
2009
- CLASS_NAME: CLASS_NAME_PLAYER_CRATE
1932
+ TYPE_PATH: '/Game/FactoryGame/-Shared/Crate/BP_Crate.BP_Crate_C',
1933
+ CLASS_NAME: 'BP_Crate_C'
2010
1934
  },
2011
1935
  PLAYER_STORAGE_CRATE: {
2012
- TYPE_PATH: TYPE_PATH_PLAYER_STORAGE_CRATE,
2013
- CLASS_NAME: CLASS_NAME_PLAYER_STORAGE_CRATE
1936
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StoragePlayer.Build_StoragePlayer_C',
1937
+ CLASS_NAME: 'Build_StoragePlayer_C'
2014
1938
  },
2015
1939
  STORAGE_CRATE_INTEGRATED: {
2016
- TYPE_PATH: TYPE_PATH_PLAYER_STORAGE_CRATE_INTEGRATED,
2017
- CLASS_NAME: CLASS_NAME_PLAYER_STORAGE_CRATE_INTEGRATED
1940
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageIntegrated.Build_StorageIntegrated_C',
1941
+ CLASS_NAME: 'Build_StorageIntegrated_C'
2018
1942
  },
2019
1943
  PLAYER_HAZARD_CRATE: {
2020
- TYPE_PATH: TYPE_PATH_PLAYER_HAZARD_CRATE,
2021
- CLASS_NAME: CLASS_NAME_PLAYER_HAZARD_CRATE,
2022
- RECIPE: RECIPE_PLAYER_HAZARD_CRATE
1944
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageHazard.Build_StorageHazard_C',
1945
+ CLASS_NAME: 'Build_StorageHazard_C',
1946
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_StorageHazard.Recipe_StorageHazard_C'
2023
1947
  },
2024
1948
  PLAYER_MEDICAL_CRATE: {
2025
- TYPE_PATH: TYPE_PATH_PLAYER_MEDICAL_CRATE,
2026
- CLASS_NAME: CLASS_NAME_PLAYER_MEDICAL_CRATE
1949
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/StoragePlayer/Build_StorageMedkit.Build_StorageMedkit_C',
1950
+ CLASS_NAME: 'Build_StorageMedkit_C'
2027
1951
  },
2028
1952
  },
2029
1953
  POTTY: {
@@ -2040,16 +1964,16 @@ exports.EDIT = {
2040
1964
  CLASS_NAME: 'Build_StandaloneWidgetSign_Huge_C'
2041
1965
  },
2042
1966
  SMALL: {
2043
- TYPE_PATH: TYPE_PATH_SIGN_SMALL,
2044
- CLASS_NAME: CLASS_NAME_SIGN_SMALL,
2045
- RECIPE: RECIPE_SIGN_SMALL,
2046
- PREFAB_LAYOUT: PREFAB_LAYOUT_SIGN_4x1_1
1967
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Small.Build_StandaloneWidgetSign_Small_C',
1968
+ CLASS_NAME: 'Build_StandaloneWidgetSign_Small_C',
1969
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_Small.Recipe_StandaloneWidgetSign_Small_C',
1970
+ PREFAB_LAYOUT: '/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign4x1_1.BPW_Sign4x1_1_C'
2047
1971
  },
2048
1972
  SMALL_WIDE: {
2049
- TYPE_PATH: TYPE_PATH_SIGN_SMALL_WIDE,
2050
- CLASS_NAME: CLASS_NAME_SIGN_SMALL_WIDE,
2051
- RECIPE: RECIPE_SIGN_SMALL_WIDE,
2052
- PREFAB_LAYOUT: PREFAB_LAYOUT_SIGN_4x1_1
1973
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_SmallWide.Build_StandaloneWidgetSign_SmallWide_C',
1974
+ CLASS_NAME: 'Build_StandaloneWidgetSign_SmallWide_C',
1975
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_SmallWide.Recipe_StandaloneWidgetSign_SmallWide_C',
1976
+ PREFAB_LAYOUT: '/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign4x1_1.BPW_Sign4x1_1_C'
2053
1977
  },
2054
1978
  SMALL_VERY_WIDE: {
2055
1979
  TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_SmallVeryWide.Build_StandaloneWidgetSign_SmallVeryWide_C',
@@ -2072,10 +1996,10 @@ exports.EDIT = {
2072
1996
  CLASS_NAME: 'Build_StandaloneWidgetSign_Medium_C',
2073
1997
  },
2074
1998
  PORTRAIT: {
2075
- TYPE_PATH: TYPE_PATH_SIGN_PORTRAIT,
2076
- CLASS_NAME: CLASS_NAME_SIGN_PORTRAIT,
2077
- RECIPE: RECIPE_SIGN_PORTRAIT,
2078
- PREFAB_LAYOUT: PREFAB_LAYOUT_SIGN_PORTRAIT
1999
+ TYPE_PATH: '/Game/FactoryGame/Buildable/Factory/SignDigital/Build_StandaloneWidgetSign_Portrait.Build_StandaloneWidgetSign_Portrait_C',
2000
+ CLASS_NAME: 'Build_StandaloneWidgetSign_Portrait_C',
2001
+ RECIPE: '/Game/FactoryGame/Recipes/Buildings/Recipe_StandaloneWidgetSign_Portrait.Recipe_StandaloneWidgetSign_Portrait_C',
2002
+ PREFAB_LAYOUT: '/Game/FactoryGame/Interface/UI/InGame/Signs/SignLayouts/BPW_Sign2x3_0.BPW_Sign2x3_0_C'
2079
2003
  }
2080
2004
  },
2081
2005
  PLAYER: {
@@ -2177,20 +2101,20 @@ exports.EDIT = {
2177
2101
  },
2178
2102
  ANIMAL: {
2179
2103
  LIZARD_DOGGO: {
2180
- TYPE_PATH: TYPE_PATH_LIZARD_DOGGO,
2181
- CLASS_NAME: CLASS_NAME_LIZARD_DOGGO
2104
+ TYPE_PATH: '/Game/FactoryGame/Character/Creature/Wildlife/SpaceRabbit/Char_SpaceRabbit.Char_SpaceRabbit_C',
2105
+ CLASS_NAME: 'Char_SpaceRabbit_C'
2182
2106
  },
2183
2107
  BEETLE: {
2184
2108
  TYPE_PATH: '/Game/FactoryGame/Character/Creature/Wildlife/Beetle/Char_Beetle.Char_Beetle_C',
2185
2109
  CLASS_NAME: 'Char_Beetle_C'
2186
2110
  },
2187
2111
  SPACE_GIRAFFE: {
2188
- TYPE_PATH: TYPE_PATH_SPACE_GIRAFFE,
2189
- CLASS_NAME: CLASS_NAME_SPACE_GIRAFFE
2112
+ TYPE_PATH: '/Game/FactoryGame/Character/Creature/Wildlife/SpaceGiraffe/Char_SpaceGiraffe.Char_SpaceGiraffe_C',
2113
+ CLASS_NAME: 'Char_SpaceGiraffe_C'
2190
2114
  },
2191
2115
  BIRD: {
2192
- TYPE_PATH: TYPE_PATH_BIRD,
2193
- CLASS_NAME: CLASS_NAME_BIRD
2116
+ TYPE_PATH: '/Game/FactoryGame/Character/Creature/Wildlife/NonFlyingBird/Char_NonFlyingBird.Char_NonFlyingBird_C',
2117
+ CLASS_NAME: 'Char_NonFlyingBird_C'
2194
2118
  }
2195
2119
  },
2196
2120
  BUILDGUN_BP: {
@@ -2259,13 +2183,13 @@ exports.EDIT = {
2259
2183
  },
2260
2184
  COMPONENTS: {
2261
2185
  HEALTH_COMPONENT: {
2262
- TYPE_PATH: TYPE_PATH_HEALTH_COMPONENT
2186
+ TYPE_PATH: '/Script/FactoryGame.FGHealthComponent'
2263
2187
  },
2264
2188
  INVENTORY_COMPONENT: {
2265
- TYPE_PATH: TYPE_PATH_INVENTORY_COMPONENT
2189
+ TYPE_PATH: '/Script/FactoryGame.FGInventoryComponent'
2266
2190
  },
2267
2191
  POWER_CONNECTION_COMPONENT: {
2268
- TYPE_PATH: TYPE_PATH_POWER_CONNECTION_COMPONENT
2192
+ TYPE_PATH: '/Script/FactoryGame.FGPowerConnectionComponent'
2269
2193
  },
2270
2194
  POWER_INFO_COMPONENT: {
2271
2195
  TYPE_PATH: '/Script/FactoryGame.FGPowerInfoComponent'
@@ -2274,13 +2198,13 @@ exports.EDIT = {
2274
2198
  TYPE_PATH: '/Script/FactoryGame.FGPowerCircuit'
2275
2199
  },
2276
2200
  RAILWAY_CONNECTION_COMPONENT: {
2277
- TYPE_PATH: TYPE_PATH_RAILWAY_CONNECTION_COMPONENT
2201
+ TYPE_PATH: '/Script/FactoryGame.FGRailroadTrackConnectionComponent'
2278
2202
  },
2279
2203
  FACTORY_CONNECTION_COMPONENT: {
2280
- TYPE_PATH: TYPE_PATH_FACTORY_CONNECTION_COMPONENT,
2281
- ENUM_BASE: FACTORY_CONNECTION_ENUM_BASE,
2282
- ENUM_INPUT: FACTORY_CONNECTION_ENUM_INPUT,
2283
- ENUM_OUTPUT: FACTORY_CONNECTION_ENUM_OUTPUT,
2204
+ TYPE_PATH: '/Script/FactoryGame.FGFactoryConnectionComponent',
2205
+ ENUM_BASE: 'EFactoryConnectionDirection',
2206
+ ENUM_INPUT: 'EFactoryConnectionDirection' + '::FCD_INPUT',
2207
+ ENUM_OUTPUT: 'EFactoryConnectionDirection' + '::FCD_OUTPUT',
2284
2208
  },
2285
2209
  HYPERTUBE_CONNECTION_COMPONENT: {
2286
2210
  TYPE_PATH: '/Script/FactoryGame.FGPipeConnectionComponentHyper'
@@ -2297,7 +2221,7 @@ exports.EDIT = {
2297
2221
  },
2298
2222
  PATTERNS: {
2299
2223
  FULL_FACTORY_ZONE: {
2300
- TYPE_PATH: PATTERN_FULL_FACTORY_ZONE
2224
+ TYPE_PATH: '/Game/FactoryGame/Buildable/-Shared/Customization/Patterns/Zones/PatternDesc_ZoneFull.PatternDesc_ZoneFull_C'
2301
2225
  }
2302
2226
  },
2303
2227
  EMOTES: {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataFields = void 0;
4
+ const parser_error_1 = require("../../error/parser.error");
4
5
  const util_types_1 = require("../structs/util.types");
5
6
  const ArrayProperty_1 = require("./property/generic/ArrayProperty");
6
7
  const BoolProperty_1 = require("./property/generic/BoolProperty");
@@ -29,6 +30,7 @@ class DataFields {
29
30
  const start = reader.getBufferPosition();
30
31
  obj.properties = {};
31
32
  if (length === 0) {
33
+ console.warn(`properties length for object ${obj.instanceName} was indicated as 0. Which is suspicious. Skipping object properties.`);
32
34
  return;
33
35
  }
34
36
  let propertyName = reader.readString();
@@ -45,18 +47,16 @@ class DataFields {
45
47
  }
46
48
  propertyName = reader.readString();
47
49
  }
48
- let padding = reader.readInt32();
49
- if (padding !== 0) {
50
- }
50
+ reader.readInt32();
51
51
  const remainingLen = length - (reader.getBufferPosition() - start);
52
52
  obj.specialProperties = DataFields.ParseAdditionalSpecialProperties(reader, typePath, remainingLen);
53
53
  const end = reader.getBufferPosition();
54
- const newWayOfCalculatingReminingSize = length - (end - start);
55
- if (newWayOfCalculatingReminingSize > 0) {
56
- obj.trailingData = Array.from(reader.readBytes(newWayOfCalculatingReminingSize));
54
+ const remainingSize = length - (end - start);
55
+ if (remainingSize > 0) {
56
+ obj.trailingData = Array.from(reader.readBytes(remainingSize));
57
57
  }
58
- else if (newWayOfCalculatingReminingSize < 0) {
59
- throw new Error(`Unexpected. Read more bytes than are indicated for this etity. bytes left to read is ${newWayOfCalculatingReminingSize}`);
58
+ else if (remainingSize < 0) {
59
+ throw new parser_error_1.ParserError('ParserError', `Unexpected. Read more bytes than are indicated for entity ${obj.instanceName}. bytes left to read is ${remainingSize}`);
60
60
  }
61
61
  }
62
62
  static ParseAdditionalSpecialProperties(reader, typePath, remainingLen) {
@@ -290,7 +290,7 @@ class DataFields {
290
290
  const readBytes = reader.getBufferPosition() - before - overhead;
291
291
  if (readBytes !== binarySize) {
292
292
  console.warn(`possibly corrupt. Read ${readBytes} for ${propertyType} ${propertyName}, but ${binarySize} were indicated.`);
293
- throw new Error(`possibly corrupt. Read ${readBytes} for ${propertyType} ${propertyName}, but ${binarySize} were indicated.`);
293
+ throw new parser_error_1.ParserError('ParserError', `possibly corrupt. Read ${readBytes} bytes for ${propertyType} ${propertyName}, but ${binarySize} bytes were indicated.`);
294
294
  }
295
295
  return currentProperty;
296
296
  }
@@ -14,7 +14,7 @@ export declare abstract class SaveObject implements SaveObjectHeader {
14
14
  properties: PropertiesMap;
15
15
  specialProperties: SpecialAnyProperty;
16
16
  trailingData: number[];
17
- saveOrBlueprintIndicator: number;
17
+ objectVersion: number;
18
18
  unknownType2: number;
19
19
  constructor(typePath: string, rootObject: string, instanceName: string);
20
20
  protected static ParseHeader(reader: BinaryReadable, obj: SaveObject): void;
@@ -10,7 +10,7 @@ class SaveObject {
10
10
  this.properties = {};
11
11
  this.specialProperties = {};
12
12
  this.trailingData = [];
13
- this.saveOrBlueprintIndicator = 0;
13
+ this.objectVersion = 0;
14
14
  this.unknownType2 = 0;
15
15
  }
16
16
  static ParseHeader(reader, obj) {
@@ -24,7 +24,7 @@ class FloatProperty extends BasicProperty_1.BasicProperty {
24
24
  FloatProperty.SerializeValue(writer, property.value);
25
25
  }
26
26
  static SerializeValue(writer, value) {
27
- writer.writeFloat(value);
27
+ writer.writeFloat32(value);
28
28
  }
29
29
  }
30
30
  exports.FloatProperty = FloatProperty;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SerializeFINLuaProcessorStateStorage = exports.ReadFINLuaProcessorStateStorage = exports.SerializeFINNetworkTrace = exports.ReadFINNetworkTrace = exports.SerializeDynamicStructData = exports.ParseDynamicStructData = exports.StructProperty = void 0;
4
+ const parser_error_1 = require("../../../../error/parser.error");
4
5
  const util_types_1 = require("../../../structs/util.types");
5
6
  const DataFields_1 = require("../../DataFields");
6
7
  const ObjectReference_1 = require("../../values/ObjectReference");
@@ -96,6 +97,7 @@ class StructProperty extends BasicProperty_1.AbstractBaseProperty {
96
97
  value = { id, clientUnk1, clientUnk2, clientHashSize, someClientHash };
97
98
  break;
98
99
  case 'InventoryItem':
100
+ const before = reader.getBufferPosition();
99
101
  value = {
100
102
  unk1: reader.readInt32(),
101
103
  itemName: reader.readString(),
@@ -113,6 +115,12 @@ class StructProperty extends BasicProperty_1.AbstractBaseProperty {
113
115
  itemStateRaw: itemStateRaw
114
116
  };
115
117
  }
118
+ const bytesLeft = size - (reader.getBufferPosition() - before);
119
+ if (bytesLeft === 0 || (bytesLeft === 4 && reader.readInt32() === 0)) {
120
+ }
121
+ else {
122
+ throw new parser_error_1.CorruptSaveError(`save may be corrupt. InventoryItem has weird format that was not seen so far and therefore not implemented. Could be that the save is ported from way before U8.`);
123
+ }
116
124
  break;
117
125
  case 'FluidBox':
118
126
  value = {
@@ -188,8 +196,8 @@ class StructProperty extends BasicProperty_1.AbstractBaseProperty {
188
196
  value = value;
189
197
  writer.writeString(value.root);
190
198
  writer.writeString(value.instanceName);
191
- writer.writeFloat(value.offset);
192
- writer.writeFloat(value.forward);
199
+ writer.writeFloat32(value.offset);
200
+ writer.writeFloat32(value.forward);
193
201
  break;
194
202
  case 'TimerHandle':
195
203
  value = value;
@@ -219,10 +227,9 @@ class StructProperty extends BasicProperty_1.AbstractBaseProperty {
219
227
  writer.writeBytesArray(value.itemState.itemStateRaw);
220
228
  }
221
229
  break;
222
- break;
223
230
  case 'FluidBox':
224
231
  value = value;
225
- writer.writeFloat(value.value);
232
+ writer.writeFloat32(value.value);
226
233
  break;
227
234
  case 'SlateBrush':
228
235
  value = value;
@@ -9,7 +9,6 @@ export declare class Level {
9
9
  name: string;
10
10
  objects: (SaveEntity | SaveComponent)[];
11
11
  collectables: ObjectReference[];
12
- remainingStuffAfterHeaders: Uint8Array;
13
12
  constructor(name: string);
14
13
  static SerializeObjectHeaders(writer: ByteWriter, objects: (SaveEntity | SaveComponent)[]): void;
15
14
  static WriteLevel(writer: ByteWriter, level: Level, buildVersion: number): void;
@@ -18,5 +17,5 @@ export declare class Level {
18
17
  static ReadObjectContents(levelName: string, reader: BinaryReadable, objectsList: SaveObject[], buildVersion: number, onProgressCallback: (progress: number, msg?: string) => void): Promise<void>;
19
18
  static ReadLevel(reader: SaveReader, levelName: string, buildVersion: number): Level;
20
19
  static SerializeCollectablesList(writer: ByteWriter, collectables: ObjectReference[]): void;
21
- static ReadCollectablesList(reader: BinaryReadable, printSmthWhenItsCollectables?: string | undefined): ObjectReference[];
20
+ static ReadCollectablesList(reader: BinaryReadable): ObjectReference[];
22
21
  }