173 lines
4.6 KiB
C++
173 lines
4.6 KiB
C++
#include "stdafx.h"
|
|
|
|
#include <Object/WiseUser.h>
|
|
|
|
#include "MsgHandler.h"
|
|
|
|
#include <PacketHandler/PacketHandler.h>
|
|
|
|
# undef DEF_MSG_HANDLER
|
|
# define DEF_MSG_HANDLER(sigtype, subtype) \
|
|
BOOL MSG_HANDLER_##subtype (eSIG_WISEMSG* pSIG_MSG, GameObject* pObject);
|
|
# include "MsgHandler.List.hxx"
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
# undef DEF_MSG_HANDLER
|
|
# define DEF_MSG_HANDLER(sigtype, subtype) \
|
|
BOOL MSG_HANDLER_##subtype (eSIG_WISEMSG* pSIG_MSG, GameObject* pObject)
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_CONNECTED_LOGINFRONT)
|
|
{
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
LF_DEFINE STEP = rLOGIC.GetCurrentSTEP();
|
|
if(S_000320_WAIT_CONNECT_TO_LOGIN_FRONT_LF == STEP)
|
|
{
|
|
DEBUGGING_CODE_L3("OK!");
|
|
sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf<sSIG_STEP>();
|
|
rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_NEXT_STEP;
|
|
|
|
sSIG_STEP_ARG& rARG = rSIGNAL.InstanceOf<sSIG_STEP_ARG>();
|
|
rARG.SetInfo(LFG_CONNECTION, S_000920_CLOSURE_EXCEPTION_LF);
|
|
rLOGIC.OnMsg(&rSIGNAL);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_CONNECTED_AGENTSERVER)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
LF_DEFINE STEP = rLOGIC.GetCurrentSTEP();
|
|
sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf<sSIG_STEP>();
|
|
if(S_000520_WAIT_CONNECT_TO_AGENT_SESSION_LF == STEP)
|
|
rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_NEXT_STEP;
|
|
else
|
|
rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP;
|
|
|
|
sSIG_STEP_ARG& rARG = rSIGNAL.InstanceOf<sSIG_STEP_ARG>();
|
|
rARG.SetInfo(LFG_CONNECTION, S_000920_CLOSURE_EXCEPTION_LF);
|
|
rLOGIC.OnMsg(&rSIGNAL);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_CONNECTED_WORLDSERVER)
|
|
{
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_DISCONNECTED_LOGINFRONT)
|
|
{
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
//LF_DEFINE STEP = rLOGIC.GetCurrentSTEP();
|
|
//if(S_000320_WAIT_CONNECT_TO_LOGIN_FRONT_LF == STEP)
|
|
//{
|
|
DEBUGGING_CODE_L1("DISCONNECTED_LOGINFRONT!");
|
|
// sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf<sSIG_STEP>();
|
|
// rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_NEXT_STEP;
|
|
// sSIG_STEP_ARG& rARG = rSIGNAL.TypeOf<sSIG_STEP_ARG>();
|
|
// rARG.GROUP = LFG_CONNECTION;
|
|
// rARG.STEP = S_000920_CLOSURE_EXCEPTION_LF;
|
|
// rLOGIC.OnMsg(&rSIGNAL);
|
|
//}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_DISCONNECTED_AGENTSERVER)
|
|
{
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf<sSIG_STEP>();
|
|
rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP;
|
|
|
|
sSIG_STEP_ARG& rARG = rSIGNAL.InstanceOf<sSIG_STEP_ARG>();
|
|
rARG.SetInfo(LFG_MAX, S_000099_CLOSURE_MARK_LF);
|
|
rLOGIC.OnMsg(&rSIGNAL);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_SESSION_ON_DISCONNECTED_WORLDSERVER)
|
|
{
|
|
sSIG_NOTIFY* pNOTIFY = (sSIG_NOTIFY*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NETMSG_SIGNAL, SENDMSG)
|
|
{
|
|
//DEBUGGING_CODE_L1("");
|
|
|
|
sSIG_NETMSG* pNETMSG = (sSIG_NETMSG*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
ServerSession* pSession = pNETMSG->SESSION_PTR();
|
|
pSession->SendPacket((MSG_BASE*)pNETMSG->MSG_HDR(), pNETMSG->MSG_LEN());
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NETMSG_SIGNAL, RECVMSG)
|
|
{
|
|
//DEBUGGING_CODE_L1("");
|
|
|
|
sSIG_NETMSG* pNETMSG = (sSIG_NETMSG*)pSIG_MSG;
|
|
WiseUser* pUser = (WiseUser*)pObject;
|
|
LogicFlowDelegator& rLOGIC = pUser->GetLogicFlow();
|
|
|
|
ServerSession* pSession = pNETMSG->SESSION_PTR();
|
|
|
|
PacketHandler::GetHandler()->ParsePacket(
|
|
pSession->GetServerType(),
|
|
pSession, pUser,
|
|
pNETMSG);
|
|
|
|
SHOW_PACKET_STREAM((MSG_BASE*)pNETMSG->MSG_HDR(), pNETMSG->MSG_LEN(), "G2C");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::NOTIFY_SIGNAL, NTF_USER_RELEASED)
|
|
{
|
|
DEBUGGING_CODE_L1("");
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
DEF_MSG_HANDLER(eSIG_WISEMSG::EMPTY, NTF_NO_TYPE)
|
|
{
|
|
DEBUGGING_CODE_L1("UNEXPECTED MSG");
|
|
return FALSE;
|
|
}
|
|
|
|
|