diff --git a/_scan_test.py b/_scan_test.py new file mode 100644 index 0000000..ecea1b5 --- /dev/null +++ b/_scan_test.py @@ -0,0 +1,9 @@ +import struct +d = open('samples/savegame_0.sav','rb').read() +i = d.find(b'ElapsedTimeDouble') +print('ElapsedTimeDouble found at:', i) +i2 = d.find(b'Elapsed') +print('Elapsed found at:', i2) +# Check FName encoding at position i2-4 +print('u32 at i2-4:', struct.unpack_from(' Result { saves_count: extract_int_property(&data, "SavesCount"), latest_version: extract_int_property(&data, "LatestVersion"), data_version: extract_int_property(&data, "DataVersion"), - playtime_seconds: extract_double_property(&data, "ElapsedTimeDouble") - .or_else(|| scan_double_near(&data, b"Elapsed")), + playtime_seconds: scan_double_near(&data, b"Elapsed"), }) } @@ -329,8 +328,7 @@ pub fn extract_metadata(path: &Path) -> Result { }; let is_online = extract_bool_property(&data, "bIsMultiplayerSave").unwrap_or(false); - let playtime_seconds = extract_double_property(&data, "ElapsedTimeDouble") - .or_else(|| scan_double_near(&data, b"Elapsed")); + let playtime_seconds = scan_double_near(&data, b"Elapsed"); Ok(SaveMetadata { slot_name, display_name,