Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
67 lines
1.8 KiB
C++
67 lines
1.8 KiB
C++
//----------------------------------------------------------------------------
|
|
// File: random.h
|
|
//
|
|
// Desc: see main.cpp
|
|
//
|
|
// Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
#ifndef _RANDOM_H
|
|
#define _RANDOM_H
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Name:
|
|
// Desc: Random number generator class - a simple linear congruential generator.
|
|
// We use this instead of the CRT function because we want to be certain that
|
|
// we are using the exact same generator on both server and client side and so
|
|
// (a) don't want to be at the mercy of CRT version changes, and (b) may want
|
|
// multiple independent generators which we can rely on the sequencing of.
|
|
//-----------------------------------------------------------------------------
|
|
class CRandom
|
|
{
|
|
public:
|
|
// Constructor. The random formula is X(n+1) = (a*X(n) + b) mod m
|
|
// The default values for a,b,m give a maximal period generator that does not
|
|
// overflow with 32-bit interger arithmetic.
|
|
CRandom( DWORD seed = 31415, DWORD a = 8121,
|
|
DWORD b = 28411, DWORD m = 134456 ) :
|
|
m_dwSeed(seed),m_dwA(a),m_dwB(b),m_dwM(m) {};
|
|
|
|
// Grab a random DWORD between 0 and m
|
|
DWORD Get()
|
|
{
|
|
m_dwSeed = ((m_dwA*m_dwSeed)+m_dwB) % m_dwM;
|
|
return m_dwSeed;
|
|
};
|
|
|
|
// Grab a random DWORD in the range [0,n-1]
|
|
DWORD Get( DWORD n )
|
|
{
|
|
return (Get() % n);
|
|
};
|
|
|
|
// Grab a random float in the range [0,1]
|
|
float GetFloat()
|
|
{
|
|
return Get() / float(m_dwM-1);
|
|
};
|
|
|
|
// Reset the seed
|
|
void Reset( DWORD seed = 31415 )
|
|
{
|
|
m_dwSeed = seed;
|
|
};
|
|
|
|
protected:
|
|
DWORD m_dwA, m_dwB, m_dwM;
|
|
DWORD m_dwSeed;
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|