[Scummvm-git-logs] scummvm master -> 2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2
aquadran
noreply at scummvm.org
Thu Aug 14 19:47:10 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
2830455a7b WINTERMUTE: Restore original save/restore float/double in save game.
Commit: 2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2
https://github.com/scummvm/scummvm/commit/2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-08-14T21:47:04+02:00
Commit Message:
WINTERMUTE: Restore original save/restore float/double in save game.
Changed paths:
engines/wintermute/base/base_persistence_manager.cpp
engines/wintermute/dcgf.h
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index f12f9c5586f..32b2789d30a 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -556,47 +556,51 @@ TimeDate BasePersistenceManager::getTimeDate() {
}
void BasePersistenceManager::putFloat(float val) {
- int exponent = 0;
- float significand = frexp(val, &exponent);
- Common::String str = Common::String::format("FS%f", significand);
- putString(str.c_str());
- _saveStream->writeSint32LE(exponent);
+ if (checkVersion(1, 8, 1)) {
+ _saveStream->writeFloatLE(val);
+ }
}
float BasePersistenceManager::getFloat() {
- char *str = getString();
- float value = 0.0f;
- float significand = 0.0f;
- int32 exponent = _loadStream->readSint32LE();
- int ret = sscanf(str, "FS%f", &significand);
- value = ldexp(significand, exponent);
- if (ret != 1) {
- warning("%s not parsed as float", str);
+ if (checkVersion(1, 8, 1)) {
+ return _loadStream->readFloatLE();
+ } else {
+ char *str = getString();
+ float value = 0.0f;
+ float significand = 0.0f;
+ int32 exponent = _loadStream->readSint32LE();
+ int ret = sscanf(str, "FS%f", &significand);
+ value = ldexp(significand, exponent);
+ if (ret != 1) {
+ warning("%s not parsed as float", str);
+ }
+ delete[] str;
+ return value;
}
- delete[] str;
- return value;
}
void BasePersistenceManager::putDouble(double val) {
- int exponent = 0;
- double significand = frexp(val, &exponent);
- Common::String str = Common::String::format("DS%f", significand);
- putString(str.c_str());
- _saveStream->writeSint32LE(exponent);
+ if (checkVersion(1, 8, 1)) {
+ _saveStream->writeDoubleLE(val);
+ }
}
double BasePersistenceManager::getDouble() {
- char *str = getString();
- double value = 0.0f;
- float significand = 0.0f;
- int32 exponent = _loadStream->readSint32LE();
- int ret = sscanf(str, "DS%f", &significand);
- value = ldexp(significand, exponent);
- if (ret != 1) {
- warning("%s not parsed as double", str);
- }
- delete[] str;
- return value;
+ if (checkVersion(1, 8, 1)) {
+ return _loadStream->readDoubleLE();
+ } else {
+ char *str = getString();
+ double value = 0.0f;
+ float significand = 0.0f;
+ int32 exponent = _loadStream->readSint32LE();
+ int ret = sscanf(str, "DS%f", &significand);
+ value = ldexp(significand, exponent);
+ if (ret != 1) {
+ warning("%s not parsed as double", str);
+ }
+ delete[] str;
+ return value;
+ }
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h
index d2bd46e1cef..b3d4d13e490 100644
--- a/engines/wintermute/dcgf.h
+++ b/engines/wintermute/dcgf.h
@@ -31,7 +31,7 @@
//////////////////////////////////////////////////////////////////////////
#define DCGF_VER_MAJOR 1
-#define DCGF_VER_MINOR 7
+#define DCGF_VER_MINOR 8
#define DCGF_VER_BUILD 1
#define DCGF_VER_SUFFIX "ScummVM"
#define DCGF_VER_BETA true
More information about the Scummvm-git-logs
mailing list