126 lines
2.5 KiB
C++
126 lines
2.5 KiB
C++
#include "stdafx.h"
|
|
|
|
#include <Object/WiseUser.h>
|
|
#include "LogicFlowController.h"
|
|
#include "Logic.Active.h"
|
|
#include "Logic.Passive.h"
|
|
|
|
|
|
DECLARE_BASE_WISE_STEP_FUNCTION()
|
|
{
|
|
LogicFlowController::CreateTable();
|
|
}
|
|
|
|
REGISTER_STEP_HANDLER_BASE(eWISE_ROUTINES_INIT_START_LOGIC_FLOW);
|
|
|
|
|
|
LogicFlowController::LogicFlowController()
|
|
{
|
|
m_eGROUPofLF = LFG_MAX;
|
|
m_eSTEP = S_000000_START_MARK_LF;
|
|
m_eCONTROL = LFRET_SUCCESS_DEFAULT;
|
|
m_pContainer = NULL;
|
|
m_pWiseUser = NULL;
|
|
m_WorkLoad.Initialize();
|
|
}
|
|
|
|
LogicFlowController::~LogicFlowController()
|
|
{
|
|
}
|
|
|
|
BOOL LogicFlowController::DoInit()
|
|
{
|
|
m_eSTEP = S_000000_START_MARK_LF;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL LogicFlowController::IsComplete()
|
|
{
|
|
return (BOOL)(S_000099_CLOSURE_MARK_LF == m_eSTEP);
|
|
}
|
|
|
|
BOOL LogicFlowController::DoRelease()
|
|
{
|
|
m_pWiseUser->Release();
|
|
sSIG_NOTIFY rNOTIFY;
|
|
rNOTIFY.SUBTYPE() = sSIG_NOTIFY::NTF_USER_RELEASED;
|
|
WORK_LOAD().OnMsg(&rNOTIFY);
|
|
WORK_LOAD().Release(TRUE);
|
|
return TRUE;
|
|
}
|
|
|
|
void LogicFlowController::ChangeNextStep()
|
|
{
|
|
if(S_000099_CLOSURE_MARK_LF != m_eSTEP)
|
|
{
|
|
m_eSTEP = (LF_DEFINE)(((DWORD)m_eSTEP)+1);
|
|
m_eCONTROL = LFRET_SUCCESS_DEFAULT;
|
|
}
|
|
}
|
|
|
|
BOOL LogicFlowController::GotoStep(LF_DEFINE step, PASSING_ARG IN arguments)
|
|
{
|
|
if((DWORD)step > (DWORD)S_000099_CLOSURE_MARK_LF)
|
|
return FALSE;
|
|
|
|
m_eSTEP = step;
|
|
m_eCONTROL = LFRET_SUCCESS_JUMP;
|
|
//arguments
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void LogicFlowController::OnMsg(sSIG_MSG* pSIG_MSG)
|
|
{
|
|
sSIG_WISEBASE& rSIG_BASE = *(sSIG_WISEBASE*)pSIG_MSG;
|
|
sSIG_LF_MAIN& rSIG_PLOGIC = *(sSIG_LF_MAIN*)pSIG_MSG;
|
|
sSIG_STEP_ARG& rARG = rSIG_PLOGIC.TypeOf<sSIG_STEP_ARG>();
|
|
|
|
if((eSIG_WISEMSG::LF_MAIN_CMD == rSIG_BASE.SIGTYPE())
|
|
&& (GetGroupOfLF() == rARG.GROUP))
|
|
goto MAIN_CMD_PROC;
|
|
|
|
eWISESUBTYPE& rSUBTYPE = rSIG_PLOGIC.SUBTYPE();
|
|
//if(sSIG_LF_MAIN::CLOSURE_STEP == rSUBTYPE)
|
|
// DoRelease();
|
|
//else
|
|
WORK_LOAD().OnMsg(pSIG_MSG);
|
|
return;
|
|
|
|
MAIN_CMD_PROC:
|
|
{
|
|
// ´ÙÀ½ ·ÎÁ÷Àº eSIG_WISEMSG::LF_MAIN_CMD ¸¸ Àü´ãÇÑ´Ù.
|
|
eWISESUBTYPE& rSUBTYPE = rSIG_PLOGIC.SUBTYPE();
|
|
switch(rSUBTYPE)
|
|
{
|
|
case sSIG_LF_MAIN::NO_TYPE:
|
|
break;
|
|
case sSIG_LF_MAIN::ACTIVATE_JUMP_STEP:
|
|
{
|
|
GotoStep(rARG.STEP, NULL);
|
|
}
|
|
break;
|
|
case sSIG_LF_MAIN::ACTIVATE_NEXT_STEP:
|
|
ChangeNextStep();
|
|
break;
|
|
case sSIG_LF_MAIN::CLOSURE_STEP:
|
|
{
|
|
WORK_LOAD().Release(TRUE);
|
|
UserSessionMgr& rMGR = GetWiseUser()->GetSessionMgr();
|
|
rMGR.Disconnect(AGENT_SESSION);
|
|
rMGR.Disconnect(WORLD_SESSION);
|
|
rMGR.Disconnect(LOGIN_FRONT_SESSION);
|
|
//GotoStep(S_000099_CLOSURE_MARK_LF, NULL);
|
|
}
|
|
break;
|
|
default: DEBUGGING_CODE_L1("NO-ACTION by OnMSG"); return;
|
|
}
|
|
};
|
|
}
|
|
|
|
|
|
|
|
|
|
|