Simplify playtime extraction to scan_double_near

This commit is contained in:
2026-06-01 02:16:58 +02:00
parent 98bd109951
commit 03f2f6c789
2 changed files with 11 additions and 4 deletions
+9
View File
@@ -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('<I', d, i2-4)[0])
print('Expected:', len(b'Elapsed')+1)
+2 -4
View File
@@ -287,8 +287,7 @@ pub fn extract_full_metadata(path: &Path) -> Result<FullMetadata> {
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<SaveMetadata> {
};
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,