stateobject.cpp

来自「一个模拟动作源码」· C++ 代码 · 共 62 行

CPP
62
字号
#include "stdafx.h"
#include "StateObject.h"

// Constructor for State
CStateObject::CStateObject(string strName)
{
	m_strName = strName;
	m_pEntity = NULL;
	m_strNextStateName = "";
	m_bIsFinalState = false;
}

// Constructor for Process
CStateObject::CStateObject(string strName, string strNextState)
{
	m_strName = strName;
	m_pEntity = NULL;
	m_strNextStateName = strNextState;
	m_bIsFinalState = false;
}

CStateObject::~CStateObject(void)
{
	for( LIST_TRANSRULE::iterator it = m_listTransRules.begin(); it != m_listTransRules.end(); ++it )
	{
		CTransRule* pTransRule = *it;
		delete pTransRule;
	}

	m_listTransRules.clear();
}

void CStateObject::Init(ENTITY_PTR* pEntity)
{
	m_pEntity = pEntity;
}

string CStateObject::CheckTransition()
{
	for( LIST_TRANSRULE::iterator it = m_listTransRules.begin(); it != m_listTransRules.end(); ++it )
	{
		CTransRule* pTransRule = *it;

		if( pTransRule->Check() )
		{
			return pTransRule->GetTargetStateName();
		}
	}

	// In the case of a Process, this will return the next state
	return m_strNextStateName;
}

void CStateObject::AddPredicateHandlerFcn(string strHandlerName, void* pfcnHandler)
{
	for( LIST_TRANSRULE::iterator it = m_listTransRules.begin(); it != m_listTransRules.end(); ++it )
	{
		CTransRule* pTransRule = *it;
		pTransRule->AddPredicateHandlerFcn(strHandlerName, pfcnHandler);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?