subdoctrine.cpp

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

CPP
104
字号
#include "stdafx.h"
#include "SubDoctrine.h"

CSubDoctrine::CSubDoctrine(string strName) : CStateObject(strName)
{
	m_pDoctrine = NULL;
}

CSubDoctrine::~CSubDoctrine(void)
{
	if (m_pDoctrine)
	{
		delete m_pDoctrine;
	}
}

void CSubDoctrine::Init(ENTITY_PTR* pEntity)
{
	CStateObject::Init(pEntity);

	if (m_pDoctrine)
	{
		m_pDoctrine->Init(pEntity);
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CSubDoctrine", "Init", "m_pDoctrine");
	}
}

void CSubDoctrine::tick()
{
	if (m_pDoctrine)
	{
		m_pDoctrine->tick();
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CSubDoctrine", "Init", "m_pDoctrine");
	}
}

void CSubDoctrine::OnEnter()
{
	if (m_pDoctrine)
	{
		m_pDoctrine->Start();
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CSubDoctrine", "Init", "m_pDoctrine");
	}
}

void CSubDoctrine::OnLeave()
{
	//do nothing
}

void CSubDoctrine::OnMsg(EnumMsgType eumMsgType, MSG_PTR* pMsg)
{
	// Forward message to sub doctrine
	if (m_pDoctrine)
	{
		m_pDoctrine->DispatchMsg(eumMsgType, pMsg);
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CSubDoctrine", "Init", "m_pDoctrine");
	}
}

void CSubDoctrine::AddActionHandlerFcn(string strHandlerName, void* pfcnHandler)
{
	if (m_pDoctrine)
	{
		m_pDoctrine->AddActionHandlerFcn(strHandlerName.data(), pfcnHandler);
	}
}

void CSubDoctrine::AddPredicateHandlerFcn(string strHandlerName, void* pfcnHandler)
{
	CStateObject::AddPredicateHandlerFcn(strHandlerName, pfcnHandler);

	if (m_pDoctrine)
	{
		m_pDoctrine->AddPredicateHandlerFcn(strHandlerName.data(), pfcnHandler);
	}
	else
	{
		CDoctrineLog::Instance().WriteLog(LOG_WARNING, "CSubDoctrine", "Init", "m_pDoctrine");
	}
}

bool CSubDoctrine::IsFinalState()
{
	if (m_pDoctrine)
	{
		return (m_pDoctrine->IsEnded() && m_bIsFinalState);
	}

	return CStateObject::IsFinalState();
}

⌨️ 快捷键说明

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