108 lines
2.4 KiB
C++
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);
|
|
}
|
|
}
|
|
|