Files
2022-10-26 12:25:11 +08:00

108 lines
2.4 KiB
C++

// 종합솔루션.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include "WiseClientV2.CoreFrame.h"
#include <Object/ObjectManager.h>
#include <Information/Script/ScriptManager.h>
#include <PacketHandler/PacketHandler.h>
#include <ScriptLogic/ScriptLogic.Interfaces.h>
//////////////////////////////////////////////////////////////////////////
DECLARE_BASE_WISE_STEP_FUNCTION()
{
//DISPMSG("WiseClient V2 Update\n");
//// User할당
//Manipulater::CreateLogicFlowByWiseMode();
};
REGISTER_STEP_HANDLER_BASE(eWISE_ROUTINES_INIT_MAIN_FRAME);
//////////////////////////////////////////////////////////////////////////
// <MODULE VARIABLEs>
static CoreFrame* s_pCoreFrame = NULL;
static BOOL s_bContinue = TRUE;
class IWorkNodeCoreLifeTime : public IWorkNode
{
public: IWorkNodeCoreLifeTime() {}
~IWorkNodeCoreLifeTime() {}
public: virtual BOOL DoInit() { return TRUE; };
virtual BOOL DoProcess() { return TRUE; };
virtual BOOL DoRelease() { return TRUE; };
virtual BOOL IsComplete() { return !s_bContinue; };
virtual void OnMsg(sSIG_MSG* pSIG_MSG)
{
sSIG_LF_MAIN& rSIG_PLOGIC = *(sSIG_LF_MAIN*)pSIG_MSG;
eWISESUBTYPE& rSUBTYPE = rSIG_PLOGIC.SUBTYPE();
if(sSIG_LF_MAIN::CLOSURE_STEP == rSUBTYPE)
{
s_bContinue = FALSE;
}
};
};
CoreFrame::CoreFrame()
{
s_bContinue = TRUE;
ScriptLogicFrame::CreateInstance();
IWorkNodeCoreLifeTime* pWorkNode = new IWorkNodeCoreLifeTime();
WorkLoadManager::RegisterTask(pWorkNode);
}
CoreFrame::~CoreFrame()
{
s_bContinue = FALSE;
LogicFlowController::ReleaseTable();
ScriptManager::DestroyInstance();
EngineInterface::ReleaseInstance();
MsgHandler::DestroyInstance();
ObjectManager::DestroyInstance();
ScriptLogicFrame::DestroyInstance();
}
void CoreFrame::CreateInstance()
{
if(!s_pCoreFrame)
s_pCoreFrame = new CoreFrame();
}
void CoreFrame::DestroyInstance()
{
SAFE_DELETE(s_pCoreFrame);
}
CoreFrame* CoreFrame::GetCoreFrame()
{
return s_pCoreFrame;
}
void CoreFrame::Init()
{
//for(INT iSTEP = eWISE_ROUTINES_LOGO; iSTEP<eWISE_ROUTINES_MAX ; ++iSTEP)
//{
// SolutionRouter::Execute((eWISE_ROUTINES)iSTEP);
//}
}
// <METHODs>
void CoreFrame::Update(sSIG_MSG* pSIG_MSG)
{
// 네트워크 엔진의 경우는 다른 엔진을 사용할 수 있다고 염두해두자.
IOCPServer* pIOCPServer = Manipulater::IOCPServerREF();
pIOCPServer->Update();
if(pSIG_MSG)
{
WorkLoadManager::OnMsg(pSIG_MSG);
}
}