Files
Sun1602/Tools/WiseClient/Object/MsgHandler.Handlers.cpp
T
2022-10-26 12:25:11 +08:00

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;
}