Files
Sun1602/Server/Common/ReadyState.cpp
T
2022-10-26 12:25:11 +08:00

63 lines
1.0 KiB
C++

#include "StdAfx.h"
#include "ReadyState.h"
ReadyState::ReadyState()
{
m_StateCount = 0;
m_pbStateArray = NULL;
m_ChangedState = READY_STATE_NONE;
}
ReadyState::~ReadyState()
{
SAFE_DELETE_ARRAY( m_pbStateArray );
}
VOID ReadyState::Init( BYTE StateCount )
{
m_StateCount = StateCount;
m_pbStateArray = new BOOL[m_StateCount];
ZeroMemory( m_pbStateArray, sizeof(BOOL) * m_StateCount );
}
READY_STATE ReadyState::Update()
{
READY_STATE CurState = IsAllReady();
if( m_ChangedState != CurState )
{
m_ChangedState = CurState;
return m_ChangedState;
}
return READY_STATE_NONE;
}
VOID ReadyState::SetReadyState( BYTE StateID , BOOL bFlag )
{
if( !m_pbStateArray ) return;
m_pbStateArray[StateID] = bFlag;
}
BOOL ReadyState::IsReady( BYTE StateID )
{
if( !m_pbStateArray ) return FALSE;
return m_pbStateArray[StateID];
}
READY_STATE ReadyState::IsAllReady()
{
if( !m_pbStateArray ) return READY_STATE_NONE;
for( int i = 0; i < m_StateCount; ++i )
{
if( !IsReady( i ) )
return READY_STATE_NOT_READY;
}
return READY_STATE_READY;
}