⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statemap.cpp

📁 一个模拟动作源码
💻 CPP
字号:
#include "StdAfx.h"
#include "StateMap.h"

CStateMap::CStateMap(void)
{
}

CStateMap::~CStateMap(void)
{
	RemoveAll();
}

void CStateMap::RemoveAll()
{
	for( T_MAP_STATE::iterator it = m_mapStates.begin(); it != m_mapStates.end(); ++it )
	{
		CStateObject* pStateObject = (*it).second;

		if (pStateObject)
		{
			delete pStateObject;
		}
	}

	m_mapStates.clear();
}

CStateObject* CStateMap::GetStart()
{
	CStateObject* pStateObject = NULL;

	if (!m_mapStates.empty())
	{
		m_Iterator = m_mapStates.begin();
		pStateObject = (*m_Iterator).second;

		if (!pStateObject)
		{
			CDoctrineLog::Instance().WriteLog(LOG_ERROR, "CStateMap", "GetStart", "pStateObject");
		}
	}

	return pStateObject;
}

CStateObject* CStateMap::GetNext()
{
	CStateObject* pStateObject = NULL;

	++m_Iterator;
	if (m_Iterator != m_mapStates.end())
	{
		pStateObject = (*m_Iterator).second;

		if (!pStateObject)
		{
			CDoctrineLog::Instance().WriteLog(LOG_ERROR, "CStateMap", "GetNext", "pStateObject");
		}
	}

	return pStateObject;
}

void CStateMap::Add(CStateObject* pStateObject)
{
	if ( !pStateObject )
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CStateMap", "Add", "pStateObject");
		return;
	}

	T_MAP_STATE::iterator it = m_mapStates.find(pStateObject->GetName());
	if (m_mapStates.end() == it)
	{
		m_mapStates.insert(T_MAP_STATE::value_type(pStateObject->GetName(), pStateObject));
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CStateMap", "Add", "Already added a state with this name: " + pStateObject->GetName());
	}
}

CStateObject* CStateMap::LookUp(string strName)
{
	CStateObject* pStateObject = NULL;

	T_MAP_STATE::iterator it = m_mapStates.find(strName);
	if (it != m_mapStates.end())
	{
		pStateObject = (*it).second;
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CStateMap", "LookUp", "State name not mapped: " + strName);
	}

	if (!pStateObject)
	{
		CDoctrineLog::Instance().WriteLog(LOG_ERROR, "CStateMap", "LookUp", "pStateObject");
	}

	return pStateObject;
}

⌨️ 快捷键说明

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