stmm-games-doc  0.32.0
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
stmg::RandomEvent Class Reference

Random number generator event. More...

Inheritance diagram for stmg::RandomEvent:
Inheritance graph
[legend]

Classes

struct  Init
 
struct  LocalInit
 

Public Types

enum  { MESSAGE_GENERATE = 100, MESSAGE_GENERATE_ADD = 101 }
 
enum  { LISTENER_GROUP_RANDOM = 10 }
 
- Public Types inherited from stmg::Event
enum  MSG_FILTER_VALUE_OP {
  MSG_FILTER_VALUE_OP_FIRST = 0, MSG_FILTER_VALUE_OP_UNCHANGED = 0, MSG_FILTER_VALUE_OP_SET = 1, MSG_FILTER_VALUE_OP_MULT_ADD = 2,
  MSG_FILTER_VALUE_OP_DIV_ADD = 3, MSG_FILTER_VALUE_OP_PERCENT_ADD = 4, MSG_FILTER_VALUE_OP_PERMILL_ADD = 5, MSG_FILTER_VALUE_OP_MOD_ADD = 6,
  MSG_FILTER_VALUE_OP_MIN_ADD = 7, MSG_FILTER_VALUE_OP_MAX_ADD = 8, MSG_FILTER_VALUE_OP_LAST = 8
}
 Value filter. More...
 
enum  { LISTENER_GROUP_FINISHED = 0 }
 

Public Member Functions

 RandomEvent (Init &&oInit) noexcept
 Constructor. More...
 
void trigger (int32_t nMsg, int32_t nValue, Event *p0TriggeringEvent) noexcept override
 The trigger function. More...
 
- Public Member Functions inherited from stmg::Event
virtual ~Event () noexcept=default
 
virtual void addMsgFilter (int32_t nInFromMsg, int32_t nInToMsg, int32_t nInFromValue, int32_t nInToValue, bool bOutMsgDefined, int32_t nOutMsg, MSG_FILTER_VALUE_OP eOutValueOperator, int32_t nOutValueOperand, int32_t nOutValueAdd) noexcept
 Add a message filter. More...
 
virtual void addListener (int32_t nGroupId, Event *p0ListenerEvent, int32_t nMsg) noexcept
 Adds a listener to the event. More...
 
bool isActive () const noexcept
 Tells whether the event is active. More...
 
int32_t getTriggerTime () const noexcept
 The triggering time. More...
 
int32_t getPriority () const noexcept
 The priority. More...
 
int32_t getDebugTag () const noexcept
 The debug tag. More...
 

Static Public Attributes

static constexpr int32_t s_nDefaultSharedBufferSize = 1000
 The default shared buffer size. More...
 
static constexpr int32_t s_nMaxPermutationSize = 200
 The maximum size of a permutation of the range. More...
 
static constexpr int32_t s_nPermutationMinValue = -32000
 The minimum for the Init::m_nFrom value if Init::m_bPermutations is true. More...
 
static constexpr int32_t s_nPermutationMaxValue = +32000
 The maximum for the Init::m_nTo value if Init::m_bPermutations is true. More...
 

Protected Member Functions

void reInit (Init &&oInit) noexcept
 See constructor. More...
 
- Protected Member Functions inherited from stmg::Event
 Event (Init &&oInit) noexcept
 Constructor. More...
 
void reInit (Init &&oInit) noexcept
 Reinitialization. More...
 
virtual void informListeners (int32_t nGroupId, int32_t nValue) noexcept
 Calls the trigger function of a group of listeners. More...
 
const Levellevel () const noexcept
 The level this event belongs to. More...
 
Levellevel () noexcept
 The level this event belongs to. More...
 

Detailed Description

Random number generator event.

Permutation example: range (m_nFrom = 0, m_nTo = 2100), s_nMaxPermutationSize = 1000 m_nTotPartitions = ceil(2101 / 1000) = 3 m_nPartitionMinSize = 2101 / 3 = 700 Permutation sizes: 701, 700, 700 First permutation emitted (unshuffled): 0,3,6,9,12, .. 2097,2100 Second permutation emitted (unshuffled): 1,4,7,10,13, .. 2098 Third permutation emitted (unshuffled): 2,5,8,11,14, .. 2099 Fourth permutation emitted (unshuffled): 0,3,6,9,12, .. 2097,2100 Fifth permutation emitted (unshuffled): 1,4,7,10,13, .. 2098 And so on

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MESSAGE_GENERATE 

Generate random int.

MESSAGE_GENERATE_ADD 

Generate random int and add nValue to the result.

◆ anonymous enum

anonymous enum
Enumerator
LISTENER_GROUP_RANDOM 

The generated random.

Constructor & Destructor Documentation

◆ RandomEvent()

stmg::RandomEvent::RandomEvent ( Init &&  oInit)
explicitnoexcept

Constructor.

If the shared random sequence with name sSharedName already exists, the buffer size is ignored since the buffer already has been created.

Parameters
oInitThe parameters.

Member Function Documentation

◆ reInit()

void stmg::RandomEvent::reInit ( Init &&  oInit)
protectednoexcept

See constructor.

◆ trigger()

void stmg::RandomEvent::trigger ( int32_t  nMsg,
int32_t  nValue,
Event p0TriggeringEvent 
)
overridevirtualnoexcept

The trigger function.

This function provides the functionality of the event and can be called in two ways.

It can be called by an event through informListeners() this event was listening to. Note: events can listen to themselves.

It can also be called by the timer if the event was active.

When this function is called the event has already been deactivated by the level (if it was active in the first place).

When this function is called the filters of this event have already been applied.

Parameters
nMsgThe message received.
nValueThe value received.
p0TriggeringEventThe triggering event or null if triggered by timer.

Implements stmg::Event.

Member Data Documentation

◆ s_nDefaultSharedBufferSize

constexpr int32_t stmg::RandomEvent::s_nDefaultSharedBufferSize = 1000
static

The default shared buffer size.

◆ s_nMaxPermutationSize

constexpr int32_t stmg::RandomEvent::s_nMaxPermutationSize = 200
static

The maximum size of a permutation of the range.

◆ s_nPermutationMaxValue

constexpr int32_t stmg::RandomEvent::s_nPermutationMaxValue = +32000
static

The maximum for the Init::m_nTo value if Init::m_bPermutations is true.

◆ s_nPermutationMinValue

constexpr int32_t stmg::RandomEvent::s_nPermutationMinValue = -32000
static

The minimum for the Init::m_nFrom value if Init::m_bPermutations is true.