Reworked FRandom constructors

Removes ambiguity while keeping old constructor syntax in check for better overall portability.
This commit is contained in:
Boondorl 2024-11-06 22:41:26 -05:00 committed by Ricardo Luís Vaz Silva
parent a1a4a97dcd
commit 3ea5be1ea7
42 changed files with 129 additions and 118 deletions

View file

@ -169,7 +169,7 @@ static const char *TelefragSounds[] =
#endif
static int LastAnnounceTime;
static FRandom pr_bbannounce ("BBAnnounce", true);
static FCRandom pr_bbannounce ("BBAnnounce");
// CODE --------------------------------------------------------------------

View file

@ -61,7 +61,7 @@ enum
{
DEFAULT_PITCH = 128,
};
static FRandom pr_soundpitch ("SoundPitch", true);
static FCRandom pr_soundpitch ("SoundPitch");
SoundEngine* soundEngine;
//==========================================================================

View file

@ -79,11 +79,11 @@
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
FRandom pr_exrandom("EX_Random", false);
FRandom pr_exrandom("EX_Random");
// PUBLIC DATA DEFINITIONS -------------------------------------------------
FRandom M_Random(true);
FCRandom M_Random;
// Global seed. This is modified predictably to initialize every RNG.
uint32_t rngseed;
@ -145,7 +145,7 @@ FRandom::FRandom (bool client)
#ifndef NDEBUG
Name = NULL;
#endif
if (client)
if (bClient)
{
Next = CRNGList;
CRNGList = this;
@ -178,7 +178,7 @@ FRandom::FRandom (const char *name, bool client) : bClient(client)
#endif
// Insert the RNG in the list, sorted by CRC
FRandom **prev = (client ? &CRNGList : &RNGList), * probe = (client ? CRNGList : RNGList);
FRandom **prev = (bClient ? &CRNGList : &RNGList), * probe = (bClient ? CRNGList : RNGList);
while (probe != NULL && probe->NameCRC < NameCRC)
{

View file

@ -44,9 +44,9 @@ class FSerializer;
class FRandom : public SFMTObj
{
public:
FRandom (bool client);
FRandom (const char *name, bool client);
~FRandom ();
FRandom() : FRandom(false) {}
FRandom(const char* name) : FRandom(name, false) {}
~FRandom();
int Seed() const
{
@ -178,6 +178,10 @@ public:
static void StaticPrintSeeds ();
#endif
protected:
FRandom(bool client);
FRandom(const char* name, bool client);
private:
#ifndef NDEBUG
const char *Name;
@ -189,6 +193,13 @@ private:
static FRandom *RNGList, *CRNGList;
};
class FCRandom : public FRandom
{
public:
FCRandom() : FRandom(true) {}
FCRandom(const char* name) : FRandom(name, true) {}
};
extern uint32_t rngseed; // The starting seed (not part of state)
extern uint32_t staticrngseed; // Static rngseed that can be set by the user
@ -196,6 +207,6 @@ extern bool use_staticrng;
// M_Random can be used for numbers that do not affect gameplay
extern FRandom M_Random;
extern FCRandom M_Random;
#endif

View file

@ -52,7 +52,7 @@
#include "gstrings.h"
#include "g_game.h"
static FRandom pr_pickteam ("PickRandomTeam", false);
static FRandom pr_pickteam ("PickRandomTeam");
CVAR (Float, autoaim, 35.f, CVAR_USERINFO | CVAR_ARCHIVE);
CVAR (String, name, "Player", CVAR_USERINFO | CVAR_ARCHIVE);

View file

@ -93,8 +93,8 @@
#include "fs_findfile.h"
static FRandom pr_dmspawn ("DMSpawn", false);
static FRandom pr_pspawn ("PlayerSpawn", false);
static FRandom pr_dmspawn ("DMSpawn");
static FRandom pr_pspawn ("PlayerSpawn");
extern int startpos, laststartpos;

View file

@ -175,7 +175,7 @@ ELightMode getRealLightmode(FLevelLocals* Level, bool for3d)
CVAR(Int, sv_alwaystally, 0, CVAR_SERVERINFO)
static FRandom pr_classchoice ("RandomPlayerClassChoice", false);
static FRandom pr_classchoice ("RandomPlayerClassChoice");
extern level_info_t TheDefaultLevelInfo;
extern bool timingdemo;

View file

@ -3225,9 +3225,9 @@ class CommandDrawGem : public SBarInfoCommand
int goalValue;
private:
int chainWiggle;
static FRandom pr_chainwiggle;
static FCRandom pr_chainwiggle;
};
FRandom CommandDrawGem::pr_chainwiggle(true); //use the same method of chain wiggling as heretic.
FCRandom CommandDrawGem::pr_chainwiggle; //use the same method of chain wiggling as heretic.
////////////////////////////////////////////////////////////////////////////////

View file

@ -60,8 +60,8 @@ static TArray<uint8_t> DecalTranslations;
// Sometimes two machines in a game will disagree on the state of
// decals. I do not know why.
static FRandom pr_decalchoice ("DecalChoice", true);
static FRandom pr_decal ("Decal", true);
static FCRandom pr_decalchoice ("DecalChoice");
static FCRandom pr_decal ("Decal");
class FDecalGroup : public FDecalBase
{

View file

@ -61,7 +61,7 @@ extern void InitBotStuff();
extern void ClearStrifeTypes();
TArray<PClassActor *> PClassActor::AllActorClasses;
FRandom FState::pr_statetics("StateTics", false);
FRandom FState::pr_statetics("StateTics");
cycle_t ActionCycles;

View file

@ -56,7 +56,7 @@ FTextureAnimator TexAnim;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
static FRandom pr_animatepictures ("AnimatePics", true);
static FCRandom pr_animatepictures ("AnimatePics");
// CODE --------------------------------------------------------------------

View file

@ -62,7 +62,7 @@
#include "doommenu.h"
#include "g_game.h"
static FRandom pr_randomspeech("RandomSpeech", true);
static FCRandom pr_randomspeech("RandomSpeech");
static int ConversationMenuY;

View file

@ -67,7 +67,7 @@
static FMemArena DynLightArena(sizeof(FDynamicLight) * 200);
static TArray<FDynamicLight*> FreeList;
static FRandom randLight(true);
static FCRandom randLight;
extern TArray<FLightDefaults *> StateLights;

View file

@ -39,7 +39,7 @@
#include "a_pickups.h"
#include "vm.h"
static FRandom pr_spot ("SpecialSpot", false);
static FRandom pr_spot ("SpecialSpot");
IMPLEMENT_CLASS(DSpotState, false, false)

View file

@ -54,7 +54,7 @@
#include "p_checkposition.h"
#include "actorinlines.h"
static FRandom pr_botdofire ("BotDoFire", false);
static FRandom pr_botdofire ("BotDoFire");
//Checks TRUE reachability from bot to a looker.

View file

@ -98,7 +98,7 @@ Everything that is changed is marked (maybe commented) with "Added by MC"
#include "i_system.h" // for SHARE_DIR
#endif // !_WIN32 && !__APPLE__
static FRandom pr_botspawn ("BotSpawn", false);
static FRandom pr_botspawn ("BotSpawn");
cycle_t BotThinkCycles, BotSupportCycles;
int BotWTG;

View file

@ -53,9 +53,9 @@
#include "p_checkposition.h"
#include "actorinlines.h"
static FRandom pr_botopendoor ("BotOpenDoor", false);
static FRandom pr_bottrywalk ("BotTryWalk", false);
static FRandom pr_botnewchasedir ("BotNewChaseDir", false);
static FRandom pr_botopendoor ("BotOpenDoor");
static FRandom pr_bottrywalk ("BotTryWalk");
static FRandom pr_botnewchasedir ("BotNewChaseDir");
// borrow some tables from p_enemy.cpp
extern dirtype_t opposite[9];

View file

@ -52,7 +52,7 @@
#include "d_player.h"
#include "actorinlines.h"
static FRandom pr_botmove ("BotMove", false);
static FRandom pr_botmove ("BotMove");
//This function is called each tic for each bot,
//so this is what the bot does.

View file

@ -56,7 +56,7 @@
using namespace FileSys;
static FRandom pr_script("FScript", false);
static FRandom pr_script("FScript");
// functions. FParser::SF_ means Script Function not, well.. heh, me

View file

@ -38,7 +38,7 @@
#include "gi.h"
#include <vm.h>
static FRandom pr_lightning ("Lightning", false);
static FRandom pr_lightning ("Lightning");
IMPLEMENT_CLASS(DLightningThinker, false, false)

View file

@ -43,10 +43,10 @@
// State.
#include "serializer.h"
static FRandom pr_flicker ("Flicker", true);
static FRandom pr_lightflash ("LightFlash", true);
static FRandom pr_strobeflash ("StrobeFlash", true);
static FRandom pr_fireflicker ("FireFlicker", true);
static FCRandom pr_flicker ("Flicker");
static FCRandom pr_lightflash ("LightFlash");
static FCRandom pr_strobeflash ("StrobeFlash");
static FCRandom pr_fireflicker ("FireFlicker");
//-----------------------------------------------------------------------------

View file

@ -37,7 +37,7 @@
#include "p_spec.h"
#include "g_levellocals.h"
static FRandom pr_doplat ("DoPlat", false);
static FRandom pr_doplat ("DoPlat");
IMPLEMENT_CLASS(DPlat, false, false)

View file

@ -36,7 +36,7 @@
#include "actorinlines.h"
#include <p_maputl.h>
static FRandom pr_quake ("Quake", true);
static FCRandom pr_quake ("Quake");
IMPLEMENT_CLASS(DEarthquake, false, true)

View file

@ -540,7 +540,7 @@
FRandom pr_acs ("ACS", false);
FRandom pr_acs ("ACS");
// I imagine this much stack space is probably overkill, but it could
// potentially get used with recursive functions.

View file

@ -73,19 +73,19 @@
#include "shadowinlines.h"
#include "i_time.h"
static FRandom pr_camissile ("CustomActorfire", false);
static FRandom pr_cabullet ("CustomBullet", false);
static FRandom pr_cwjump ("CustomWpJump", false);
static FRandom pr_cwpunch ("CustomWpPunch", false);
static FRandom pr_grenade ("ThrowGrenade", false);
FRandom pr_crailgun ("CustomRailgun", false);
static FRandom pr_spawndebris ("SpawnDebris", false);
static FRandom pr_spawnitemex ("SpawnItemEx", false);
static FRandom pr_burst ("Burst", false);
static FRandom pr_monsterrefire ("MonsterRefire", false);
static FRandom pr_teleport("A_Teleport", false);
static FRandom pr_bfgselfdamage("BFGSelfDamage", false);
FRandom pr_cajump("CustomJump", false);
static FRandom pr_camissile ("CustomActorfire");
static FRandom pr_cabullet ("CustomBullet");
static FRandom pr_cwjump ("CustomWpJump");
static FRandom pr_cwpunch ("CustomWpPunch");
static FRandom pr_grenade ("ThrowGrenade");
FRandom pr_crailgun ("CustomRailgun");
static FRandom pr_spawndebris ("SpawnDebris");
static FRandom pr_spawnitemex ("SpawnItemEx");
static FRandom pr_burst ("Burst");
static FRandom pr_monsterrefire ("MonsterRefire");
static FRandom pr_teleport("A_Teleport");
static FRandom pr_bfgselfdamage("BFGSelfDamage");
FRandom pr_cajump("CustomJump");
//==========================================================================
//
@ -746,7 +746,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_StopSoundEx)
// Generic seeker missile function
//
//==========================================================================
static FRandom pr_seekermissile ("SeekerMissile", false);
static FRandom pr_seekermissile ("SeekerMissile");
enum
{
SMF_LOOK = 1,

View file

@ -65,7 +65,7 @@ CVAR (Int, r_rail_trailsparsity, 1, CVAR_ARCHIVE);
CVAR (Bool, r_particles, true, 0);
EXTERN_CVAR(Int, r_maxparticles);
FRandom pr_railtrail("RailTrail", true);
FCRandom pr_railtrail("RailTrail");
#define FADEFROMTTL(a) (1.f/(a))

View file

@ -54,26 +54,26 @@
#include "gi.h"
static FRandom pr_checkmissilerange ("CheckMissileRange", false);
static FRandom pr_opendoor ("OpenDoor", false);
static FRandom pr_trywalk ("TryWalk", false);
static FRandom pr_newchasedir ("NewChaseDir", false);
static FRandom pr_lookformonsters ("LookForMonsters", false);
static FRandom pr_lookforplayers ("LookForPlayers", false);
static FRandom pr_scaredycat ("Anubis", false);
FRandom pr_chase ("Chase", false);
FRandom pr_facetarget ("FaceTarget", false);
FRandom pr_railface ("RailFace", false);
static FRandom pr_look2 ("LookyLooky", false);
static FRandom pr_look3 ("IGotHooky", false);
static FRandom pr_slook ("SlooK", false);
static FRandom pr_dropoff ("Dropoff", false);
static FRandom pr_defect ("Defect", false);
static FRandom pr_avoidcrush("AvoidCrush", false);
static FRandom pr_stayonlift("StayOnLift", false);
static FRandom pr_checkmissilerange ("CheckMissileRange");
static FRandom pr_opendoor ("OpenDoor");
static FRandom pr_trywalk ("TryWalk");
static FRandom pr_newchasedir ("NewChaseDir");
static FRandom pr_lookformonsters ("LookForMonsters");
static FRandom pr_lookforplayers ("LookForPlayers");
static FRandom pr_scaredycat ("Anubis");
FRandom pr_chase ("Chase");
FRandom pr_facetarget ("FaceTarget");
FRandom pr_railface ("RailFace");
static FRandom pr_look2 ("LookyLooky");
static FRandom pr_look3 ("IGotHooky");
static FRandom pr_slook ("SlooK");
static FRandom pr_dropoff ("Dropoff");
static FRandom pr_defect ("Defect");
static FRandom pr_avoidcrush("AvoidCrush");
static FRandom pr_stayonlift("StayOnLift");
static FRandom pr_skiptarget("SkipTarget", false);
static FRandom pr_enemystrafe("EnemyStrafe", false);
static FRandom pr_skiptarget("SkipTarget");
static FRandom pr_enemystrafe("EnemyStrafe");
// movement interpolation is fine for objects that are moved by their own
// velocity. But for monsters it is problematic.

View file

@ -63,12 +63,12 @@
#include "actorinlines.h"
#include "d_main.h"
static FRandom pr_botrespawn ("BotRespawn", false);
static FRandom pr_killmobj ("ActorDie", false);
FRandom pr_damagemobj ("ActorTakeDamage", false);
static FRandom pr_lightning ("LightningDamage", false);
static FRandom pr_poison ("PoisonDamage", false);
static FRandom pr_switcher ("SwitchTarget", false);
static FRandom pr_botrespawn ("BotRespawn");
static FRandom pr_killmobj ("ActorDie");
FRandom pr_damagemobj ("ActorTakeDamage");
static FRandom pr_lightning ("LightningDamage");
static FRandom pr_poison ("PoisonDamage");
static FRandom pr_switcher ("SwitchTarget");
CVAR (Bool, cl_showsprees, true, CVAR_ARCHIVE)
CVAR (Bool, cl_showmultikills, true, CVAR_ARCHIVE)

View file

@ -95,7 +95,7 @@ static DCeiling::ECrushMode CRUSHTYPE(int a, bool withslowdown)
return withslowdown? DCeiling::ECrushMode::crushSlowdown : DCeiling::ECrushMode::crushDoom;
}
static FRandom pr_glass ("GlassBreak", false);
static FRandom pr_glass ("GlassBreak");
// There are aliases for the ACS specials that take names instead of numbers.
// This table maps them onto the real number-based specials.

View file

@ -103,10 +103,10 @@ static void CheckForPushSpecial(line_t *line, int side, AActor *mobj, DVector2 *
static void SpawnShootDecal(AActor *t1, AActor *defaults, const FTraceResults &trace);
static void SpawnDeepSplash(AActor *t1, const FTraceResults &trace, AActor *puff);
static FRandom pr_tracebleed("TraceBleed", false);
static FRandom pr_checkthing("CheckThing", false);
static FRandom pr_lineattack("LineAttack", false);
static FRandom pr_crunch("DoCrunch", false);
static FRandom pr_tracebleed("TraceBleed");
static FRandom pr_checkthing("CheckThing");
static FRandom pr_lineattack("LineAttack");
static FRandom pr_crunch("DoCrunch");
// keep track of special lines as they are hit,
// but don't process them until the move is proven valid

View file

@ -122,29 +122,29 @@ EXTERN_CVAR (Int, cl_rockettrails)
// PRIVATE DATA DEFINITIONS ------------------------------------------------
static FRandom pr_explodemissile ("ExplodeMissile", false);
static FRandom pr_reflect ("Reflect", false);
static FRandom pr_nightmarerespawn ("NightmareRespawn", false);
static FRandom pr_botspawnmobj ("BotSpawnActor", false);
static FRandom pr_spawnmapthing ("SpawnMapThing", false);
static FRandom pr_spawnpuff ("SpawnPuff", false);
static FRandom pr_spawnblood ("SpawnBlood", false);
static FRandom pr_splatter ("BloodSplatter", false);
static FRandom pr_takedamage ("TakeDamage", false);
static FRandom pr_splat ("FAxeSplatter", false);
static FRandom pr_ripperblood ("RipperBlood", false);
static FRandom pr_chunk ("Chunk", false);
static FRandom pr_checkmissilespawn ("CheckMissileSpawn", false);
static FRandom pr_missiledamage ("MissileDamage", false);
static FRandom pr_multiclasschoice ("MultiClassChoice", false);
static FRandom pr_rockettrail("RocketTrail", false);
static FRandom pr_uniquetid("UniqueTID", false);
static FRandom pr_explodemissile ("ExplodeMissile");
static FRandom pr_reflect ("Reflect");
static FRandom pr_nightmarerespawn ("NightmareRespawn");
static FRandom pr_botspawnmobj ("BotSpawnActor");
static FRandom pr_spawnmapthing ("SpawnMapThing");
static FRandom pr_spawnpuff ("SpawnPuff");
static FRandom pr_spawnblood ("SpawnBlood");
static FRandom pr_splatter ("BloodSplatter");
static FRandom pr_takedamage ("TakeDamage");
static FRandom pr_splat ("FAxeSplatter");
static FRandom pr_ripperblood ("RipperBlood");
static FRandom pr_chunk ("Chunk");
static FRandom pr_checkmissilespawn ("CheckMissileSpawn");
static FRandom pr_missiledamage ("MissileDamage");
static FRandom pr_multiclasschoice ("MultiClassChoice");
static FRandom pr_rockettrail("RocketTrail");
static FRandom pr_uniquetid("UniqueTID");
// PUBLIC DATA DEFINITIONS -------------------------------------------------
FRandom pr_spawnmobj ("SpawnActor", false);
FRandom pr_bounce("Bounce", false);
FRandom pr_spawnmissile("SpawnMissile", false);
FRandom pr_spawnmobj ("SpawnActor");
FRandom pr_bounce("Bounce");
FRandom pr_spawnmissile("SpawnMissile");
CUSTOM_CVAR (Float, sv_gravity, 800.f, CVAR_SERVERINFO|CVAR_NOSAVE|CVAR_NOINITCALL)
{
@ -7956,7 +7956,7 @@ void AActor::SetTranslation(FName trname)
// PROP A_RestoreSpecialPosition
//
//---------------------------------------------------------------------------
static FRandom pr_restore("RestorePos", false);
static FRandom pr_restore("RestorePos");
void AActor::RestoreSpecialPosition()
{

View file

@ -37,8 +37,8 @@
#include "g_levellocals.h"
#include "actorinlines.h"
static FRandom pr_botchecksight ("BotCheckSight", false);
static FRandom pr_checksight ("CheckSight", false);
static FRandom pr_botchecksight ("BotCheckSight");
static FRandom pr_checksight ("CheckSight");
/*
==============================================================================

View file

@ -100,7 +100,7 @@
#include "c_console.h"
#include "p_spec_thinkers.h"
static FRandom pr_actorinspecialsector ("ActorInSpecialSector", false);
static FRandom pr_actorinspecialsector ("ActorInSpecialSector");
EXTERN_CVAR(Bool, cl_predict_specials)
EXTERN_CVAR(Bool, forcewater)

View file

@ -49,7 +49,7 @@
#include "actorinlines.h"
#include "animations.h"
static FRandom pr_switchanim ("AnimSwitch", true);
static FCRandom pr_switchanim ("AnimSwitch");
class DActiveButton : public DThinker
{

View file

@ -36,8 +36,8 @@
#define FUDGEFACTOR 10
static FRandom pr_teleport ("Teleport", false);
static FRandom pr_playerteleport("PlayerTeleport", false);
static FRandom pr_teleport ("Teleport");
static FRandom pr_playerteleport("PlayerTeleport");
CVAR (Bool, telezoom, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);

View file

@ -47,7 +47,7 @@
#include "actorinlines.h"
#include "vm.h"
static FRandom pr_leadtarget ("LeadTarget", false);
static FRandom pr_leadtarget ("LeadTarget");
bool FLevelLocals::EV_Thing_Spawn (int tid, AActor *source, int type, DAngle angle, bool fog, int newtid)
{

View file

@ -95,7 +95,7 @@
#include "s_music.h"
#include "d_main.h"
static FRandom pr_skullpop ("SkullPop", false);
static FRandom pr_skullpop ("SkullPop");
// [SP] Allows respawn in single player
CVAR(Bool, sv_singleplayerrespawn, false, CVAR_SERVERINFO | CVAR_CHEAT)

View file

@ -17,7 +17,7 @@ extern FRandom pr_spawnmissile;
extern FRandom pr_facetarget;
extern FRandom pr_railface;
extern FRandom pr_crailgun;
inline FRandom pr_shadowaimz("VerticalShadowAim", false);
inline FRandom pr_shadowaimz("VerticalShadowAim");
//==========================================================================
//

View file

@ -94,8 +94,8 @@ struct InterpolationViewer
// PRIVATE DATA DECLARATIONS -----------------------------------------------
static TArray<InterpolationViewer> PastViewers;
static FRandom pr_torchflicker ("TorchFlicker", true);
static FRandom pr_hom(true);
static FCRandom pr_torchflicker ("TorchFlicker");
static FCRandom pr_hom;
bool NoInterpolateView; // GL needs access to this.
static TArray<DVector3a> InterpolationPath;

View file

@ -576,7 +576,7 @@ static FRandom *ParseRNG(FScanner &sc, bool client)
}
else
{
rng = &pr_exrandom;
rng = client ? &M_Random : &pr_exrandom;
}
return rng;
}

View file

@ -1163,7 +1163,7 @@ TArray<uint8_t> DoomSoundEngine::ReadSound(int lumpnum)
// This is overridden to use a synchronized RNG.
//
//==========================================================================
static FRandom pr_randsound("RandSound", true);
static FCRandom pr_randsound("RandSound");
FSoundID DoomSoundEngine::PickReplacement(FSoundID refid)
{

View file

@ -288,7 +288,7 @@ static const hexenseq_t HexenSequences[] = {
static int SeqTrans[MAX_SNDSEQS*3];
static FRandom pr_sndseq ("SndSeq", true);
static FCRandom pr_sndseq ("SndSeq");
// CODE --------------------------------------------------------------------