DIRECTOR: LINGO: Implement Director-specific rounding (tested with D3-5)

This commit is contained in:
Eugene Sandulenko 2020-08-03 17:55:32 +02:00
parent 12a35cda57
commit db508e9875
2 changed files with 29 additions and 5 deletions

View File

@ -20,8 +20,6 @@
*
*/
#include <math.h>
#include "common/file.h"
#include "common/config-manager.h"
@ -854,10 +852,11 @@ int Datum::asInt() const {
res = u.i;
break;
case FLOAT:
if (g_director->getVersion() < 4)
if (g_director->getVersion() < 5) {
res = (int)(u.f + 0.5); // Yes, +0.5 even for negative numbers
} else {
res = round(u.f);
else
res = (int)u.f;
}
break;
default:
warning("Incorrect operation asInt() for type: %s", type2str());

View File

@ -22,3 +22,28 @@ put (1024/4096)*100.0 -- 0.0
put ((1024*1.0)/4096)*100.0 -- 25.0
put the sqrt of 9
-- Testing rounding
set save to the scummvmVersion
set the scummvmVersion to 3
scummvmAssertEqual(integer(2.5), 3)
scummvmAssertEqual(integer(2.49), 2)
scummvmAssertEqual(integer(2.1), 2)
scummvmAssertEqual(integer(2.0), 2)
scummvmAssertEqual(integer(1.9), 2)
scummvmAssertEqual(integer(1.5), 2)
scummvmAssertEqual(integer(1.49), 1)
scummvmAssertEqual(integer(1.0), 1)
scummvmAssertEqual(integer(0.0), 0)
scummvmAssertEqual(integer(-0.49), 0)
scummvmAssertEqual(integer(-0.5), 0)
scummvmAssertEqual(integer(-1.0), 0)
scummvmAssertEqual(integer(-1.49), 0)
scummvmAssertEqual(integer(-1.5), -1)
scummvmAssertEqual(integer(-1.9), -1)
scummvmAssertEqual(integer(-2.0), -1)
scummvmAssertEqual(integer(-2.1), -1)
scummvmAssertEqual(integer(-2.49), -1)
scummvmAssertEqual(integer(-2.5), -2)
set the scummvmVersion to save