From 160a8d96d943c878a1c8bed742507d540d51a15d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 2 Jul 2011 13:49:27 +1000 Subject: TSAGE: Fixed problem with saving double values --- engines/tsage/saveload.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'engines/tsage/saveload.cpp') diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp index b184e59c9e..40444cd630 100644 --- a/engines/tsage/saveload.cpp +++ b/engines/tsage/saveload.cpp @@ -103,6 +103,19 @@ void Serializer::validate(int v, Common::Serializer::Version minVersion, error("Savegame is corrupt"); } +#define DOUBLE_PRECISION 1000000000 + +void Serializer::syncAsDouble(double &v) { + int32 num = (int32)(v); + uint32 fraction = (uint32)((v - (int32)v) * DOUBLE_PRECISION); + + syncAsSint32LE(num); + syncAsUint32LE(fraction); + + if (isLoading()) + v = num + (double)fraction / DOUBLE_PRECISION; +} + /*--------------------------------------------------------------------------*/ Common::Error Saver::save(int slot, const Common::String &saveName) { -- cgit v1.2.3