WINTERMUTE: Get rid of rand/srand.

This commit is contained in:
Einar Johan Trøan Sømåen 2012-06-15 19:19:09 +02:00
parent 3d49eb1605
commit 850e237d31
6 changed files with 23 additions and 21 deletions

View File

@ -25,7 +25,7 @@
* http://dead-code.org/redir.php?target=wmelite
* Copyright (c) 2011 Jan Nedoma
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_rand
#include "engines/wintermute/dcgf.h"
#include "engines/wintermute/dctypes.h"
#include "engines/wintermute/persistent.h"
@ -48,7 +48,7 @@
#include "engines/wintermute/Base/scriptables/ScStack.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/PlatformSDL.h"
#include <math.h>
#include "engines/wintermute/wintermute.h"
namespace WinterMute {
@ -1159,7 +1159,7 @@ CBSprite *CAdActor::GetTalkStance(const char *Stance) {
}
if (TalkAnims.GetSize() > 0) {
int rnd = rand() % TalkAnims.GetSize();
int rnd = g_wintermute->randInt(0, TalkAnims.GetSize() - 1);
Ret = TalkAnims[rnd]->GetSprite(_dir);
} else {
if (_standSprite) Ret = _standSprite->GetSprite(_dir);
@ -1200,7 +1200,7 @@ CBSprite *CAdActor::GetTalkStanceOld(const char *Stance) {
if (_talkSprites.GetSize() < 1) ret = _standSprite->GetSprite(_dir);
else {
// TODO: remember last
int rnd = rand() % _talkSprites.GetSize();
int rnd = g_wintermute->randInt(0, _talkSprites.GetSize() - 1);
ret = _talkSprites[rnd]->GetSprite(_dir);
}
}

View File

@ -26,7 +26,6 @@
* Copyright (c) 2011 Jan Nedoma
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_rand
#include "engines/wintermute/dcgf.h"
#include "engines/wintermute/Ad/AdTalkHolder.h"
#include "engines/wintermute/Base/BDynBuffer.h"
@ -36,6 +35,7 @@
#include "engines/wintermute/Base/BGame.h"
#include "engines/wintermute/Base/BSprite.h"
#include "engines/wintermute/PlatformSDL.h"
#include "engines/wintermute/wintermute.h"
#include "common/str.h"
namespace WinterMute {
@ -106,7 +106,7 @@ CBSprite *CAdTalkHolder::GetTalkStance(const char *Stance) {
if (_talkSprites.GetSize() < 1) ret = _sprite;
else {
// TODO: remember last
int rnd = rand() % _talkSprites.GetSize();
int rnd = g_wintermute->randInt(0, _talkSprites.GetSize() - 1);
ret = _talkSprites[rnd];
}
}

View File

@ -26,8 +26,6 @@
* Copyright (c) 2011 Jan Nedoma
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_srand
#include "engines/wintermute/dcgf.h"
#include "engines/wintermute/Base/BGame.h"
#include "engines/wintermute/Base/BFader.h"
@ -148,8 +146,6 @@ CBGame::CBGame(): CBObject(this) {
_useD3D = false;
srand(g_system->getMillis());
_registry = new CBRegistry(this);
_stringTable = new CBStringTable(this);

View File

@ -26,8 +26,6 @@
* Copyright (c) 2011 Jan Nedoma
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_rand
#include "engines/wintermute/dcgf.h"
#include "utils.h"
#include "engines/wintermute/PlatformSDL.h"
@ -36,6 +34,7 @@
#include "engines/wintermute/Base/BGame.h"
#include "common/str.h"
#include "common/textconsole.h"
#include "wintermute.h"
namespace WinterMute {
@ -164,19 +163,21 @@ char *CBUtils::StrEntry(int Entry, const char *Str, const char Delim) {
}
//////////////////////////////////////////////////////////////////////////
int CBUtils::RandomInt(int From, int To) {
if (To < From) {
int i = To;
To = From;
From = i;
int CBUtils::RandomInt(int from, int to) {
if (to < from) {
int i = to;
to = from;
from = i;
}
return (rand() % (To - From + 1)) + From;
return g_wintermute->randInt(from, to);
// return (rand() % (to - from + 1)) + from;
}
//////////////////////////////////////////////////////////////////////////
float CBUtils::RandomFloat(float From, float To) {
float RandNum = (float)rand() / (float)RAND_MAX;
return From + (To - From) * RandNum;
float CBUtils::RandomFloat(float from, float to) {
const uint32 randMax = RAND_MAX;
float randNum = (float)g_wintermute->randInt(0, randMax) / (float)randMax;
return from + (to - from) * randNum;
}
//////////////////////////////////////////////////////////////////////////

View File

@ -294,4 +294,8 @@ int WinterMuteEngine::messageLoop() {
return 0;
}
uint32 WinterMuteEngine::randInt(int from, int to) {
return _rnd->getRandomNumberRng(from, to);
}
} // End of namespace WinterMute

View File

@ -46,6 +46,7 @@ public:
virtual Common::Error run();
uint32 randInt(int from, int to);
private:
int init();
int messageLoop();