#include "stdafx.h" #include #include "MsgHandler.h" #include # 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(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_NEXT_STEP; sSIG_STEP_ARG& rARG = rSIGNAL.InstanceOf(); 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(); 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(); 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(); // rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_NEXT_STEP; // sSIG_STEP_ARG& rARG = rSIGNAL.TypeOf(); // 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(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; sSIG_STEP_ARG& rARG = rSIGNAL.InstanceOf(); 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; }