mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-15 08:41:59 +00:00
Added static RNGseed control
This commit is contained in:
parent
940794929c
commit
d6af8dc352
4 changed files with 53 additions and 2 deletions
|
@ -1993,7 +1993,14 @@ static void D_DoomInit()
|
|||
|
||||
SetLanguageIDs ();
|
||||
|
||||
rngseed = I_MakeRNGSeed();
|
||||
const char *v = Args->CheckValue("-rngseed");
|
||||
if (v)
|
||||
{
|
||||
rngseed = staticrngseed = atoi(v);
|
||||
use_staticrng = true;
|
||||
}
|
||||
else
|
||||
rngseed = I_MakeRNGSeed();
|
||||
FRandom::StaticClearRandom ();
|
||||
|
||||
Printf ("M_LoadDefaults: Load system defaults.\n");
|
||||
|
|
|
@ -408,7 +408,11 @@ void G_InitNew (const char *mapname, bool bTitleLevel)
|
|||
|
||||
if (!savegamerestore)
|
||||
{
|
||||
if (!netgame)
|
||||
if (use_staticrng)
|
||||
{
|
||||
rngseed = staticrngseed;
|
||||
}
|
||||
else if (!netgame)
|
||||
{ // [RH] Change the random seed for each new single player game
|
||||
rngseed = rngseed + 1;
|
||||
}
|
||||
|
|
|
@ -96,6 +96,42 @@ FRandom M_Random;
|
|||
// Global seed. This is modified predictably to initialize every RNG.
|
||||
DWORD rngseed;
|
||||
|
||||
// Static RNG marker. This is only used when the RNG is set for each new game.
|
||||
DWORD staticrngseed;
|
||||
bool use_staticrng;
|
||||
|
||||
// Allows checking or staticly setting the global seed.
|
||||
CCMD(rngseed)
|
||||
{
|
||||
if (argv.argc() == 1)
|
||||
{
|
||||
Printf("Usage: rngseed get|set|clear\n");
|
||||
return;
|
||||
}
|
||||
if (stricmp(argv[1], "get") == 0)
|
||||
{
|
||||
Printf("rngseed is %d\n", rngseed);
|
||||
}
|
||||
else if (stricmp(argv[1], "set") == 0)
|
||||
{
|
||||
if (argv.argc() == 2)
|
||||
{
|
||||
Printf("You need to specify a value to set\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
staticrngseed = atoi(argv[2]);
|
||||
use_staticrng = true;
|
||||
Printf("Static rngseed %d will be set for next game\n", staticrngseed);
|
||||
}
|
||||
}
|
||||
else if (stricmp(argv[1], "clear") == 0)
|
||||
{
|
||||
use_staticrng = false;
|
||||
Printf("Static rngseed cleared\n");
|
||||
}
|
||||
}
|
||||
|
||||
// PRIVATE DATA DEFINITIONS ------------------------------------------------
|
||||
|
||||
FRandom *FRandom::RNGList;
|
||||
|
|
|
@ -215,6 +215,10 @@ private:
|
|||
|
||||
extern DWORD rngseed; // The starting seed (not part of state)
|
||||
|
||||
extern DWORD staticrngseed; // Static rngseed that can be set by the user
|
||||
extern bool use_staticrng;
|
||||
|
||||
|
||||
// M_Random can be used for numbers that do not affect gameplay
|
||||
extern FRandom M_Random;
|
||||
|
||||
|
|
Loading…
Reference in a new issue