Initial commit: ROW Client source code
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>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// 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
|
||||
Reference in New Issue
Block a user