forked from LosaDev/ls-2019-source
45 lines
547 B
C++
45 lines
547 B
C++
|
|
#include "../stdafx.h"
|
|
#include "FSM.h"
|
|
|
|
FSM::FSM()
|
|
{
|
|
InitState();
|
|
}
|
|
|
|
void FSM::InitState()
|
|
{
|
|
m_iState = MAGIC_TOKEN_FSM;
|
|
}
|
|
|
|
bool FSM::IsFirst()
|
|
{
|
|
if( MAGIC_TOKEN_FSM == m_iState )
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
int FSM::GetState()
|
|
{
|
|
return m_iState;
|
|
}
|
|
|
|
void FSM::SetState(int iState)
|
|
{
|
|
m_iState = iState;
|
|
}
|
|
|
|
void FSM::UpdateState()
|
|
{
|
|
if( !IsFirst() )
|
|
{
|
|
m_iState = ( (~m_iState) + 5371 ) * 31;
|
|
m_iState = m_iState ^ ( m_iState >> 16);
|
|
|
|
if( m_iState < 0 )
|
|
m_iState = -m_iState;
|
|
}
|
|
}
|
|
|