#if defined(DEFINE_IN_INTERFACE)
#undef KBE_BOTS_INTERFACE_MACRO_H
#endif
#ifndef KBE_BOTS_INTERFACE_MACRO_H
#define KBE_BOTS_INTERFACE_MACRO_H
#include "network/interface_defs.h"
#if KBE_PLATFORM == PLATFORM_WIN32
#else
#endif
namespace KBEngine{
Bots消息宏, 参数为流, 需要自己解开
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_STREAM
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_STREAM(NAME) \
void NAME##BotsMessagehandler_stream::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
KBEngine::Bots::getSingleton().NAME(pChannel, s); \
} \
#else
#define BOTS_MESSAGE_HANDLER_STREAM(NAME) \
void NAME##BotsMessagehandler_stream::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_STREAM(NAME) \
class NAME##BotsMessagehandler_stream : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_STREAM(NAME, MSG_LENGTH) \
BOTS_MESSAGE_HANDLER_STREAM(NAME) \
NETWORK_MESSAGE_DECLARE_STREAM(Bots, NAME, \
NAME##BotsMessagehandler_stream, MSG_LENGTH) \
\
Bots消息宏, 只有零个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS0
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS0(NAME) \
void NAME##BotsMessagehandler0::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
KBEngine::Bots::getSingleton().NAME(pChannel); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS0(NAME) \
void NAME##BotsMessagehandler0::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS0(NAME) \
class NAME##BotsMessagehandler0 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS0(NAME, MSG_LENGTH) \
BOTS_MESSAGE_HANDLER_ARGS0(NAME) \
NETWORK_MESSAGE_DECLARE_ARGS0(Bots, NAME, \
NAME##BotsMessagehandler0, MSG_LENGTH) \
\
Bots消息宏, 只有二个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS2
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS2(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
void NAME##BotsMessagehandler2::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
ARG_TYPE2 ARG_NAME2; \
s >> ARG_NAME2; \
KBEngine::Bots::getSingleton().NAME(pChannel, \
ARG_NAME1, ARG_NAME2); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS2(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
void NAME##BotsMessagehandler2::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS2(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
class NAME##BotsMessagehandler2 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS2(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
BOTS_MESSAGE_HANDLER_ARGS2(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
NETWORK_MESSAGE_DECLARE_ARGS2(Bots, NAME, \
NAME##BotsMessagehandler2, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2) \
Bots消息宏, 只有一个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS1
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS1(NAME, ARG_TYPE1, ARG_NAME1) \
void NAME##BotsMessagehandler1::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
KBEngine::Bots::getSingleton().NAME(pChannel, ARG_NAME1); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS1(NAME, ARG_TYPE1, ARG_NAME1) \
void NAME##BotsMessagehandler1::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS1(NAME, ARG_TYPE1, ARG_NAME1) \
class NAME##BotsMessagehandler1 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS1(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1) \
BOTS_MESSAGE_HANDLER_ARGS1(NAME, ARG_TYPE1, ARG_NAME1) \
NETWORK_MESSAGE_DECLARE_ARGS1(Bots, NAME, \
NAME##BotsMessagehandler1, MSG_LENGTH, ARG_TYPE1, ARG_NAME1) \
\
Bots消息宏, 只有四个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS4
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS4(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
void NAME##BotsMessagehandler4::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
ARG_TYPE2 ARG_NAME2; \
s >> ARG_NAME2; \
ARG_TYPE3 ARG_NAME3; \
s >> ARG_NAME3; \
ARG_TYPE4 ARG_NAME4; \
s >> ARG_NAME4; \
KBEngine::Bots::getSingleton().NAME(pChannel, \
ARG_NAME1, ARG_NAME2, \
ARG_NAME3, ARG_NAME4); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS4(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
void NAME##BotsMessagehandler4::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS4(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
class NAME##BotsMessagehandler4 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS4(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
BOTS_MESSAGE_HANDLER_ARGS4(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
NETWORK_MESSAGE_DECLARE_ARGS4(Bots, NAME, \
NAME##BotsMessagehandler4, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4) \
Bots消息宏, 只有五个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS5
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS5(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
void NAME##BotsMessagehandler5::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
ARG_TYPE2 ARG_NAME2; \
s >> ARG_NAME2; \
ARG_TYPE3 ARG_NAME3; \
s >> ARG_NAME3; \
ARG_TYPE4 ARG_NAME4; \
s >> ARG_NAME4; \
ARG_TYPE5 ARG_NAME5; \
s >> ARG_NAME5; \
KBEngine::Bots::getSingleton().NAME(pChannel, \
ARG_NAME1, ARG_NAME2, \
ARG_NAME3, ARG_NAME4, ARG_NAME5); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS5(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
void NAME##BotsMessagehandler5::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS5(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
class NAME##BotsMessagehandler5 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS5(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
BOTS_MESSAGE_HANDLER_ARGS5(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
NETWORK_MESSAGE_DECLARE_ARGS5(Bots, NAME, \
NAME##BotsMessagehandler5, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5) \
Bots消息宏, 只有六个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS6
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS6(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
void NAME##BotsMessagehandler6::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
ARG_TYPE2 ARG_NAME2; \
s >> ARG_NAME2; \
ARG_TYPE3 ARG_NAME3; \
s >> ARG_NAME3; \
ARG_TYPE4 ARG_NAME4; \
s >> ARG_NAME4; \
ARG_TYPE5 ARG_NAME5; \
s >> ARG_NAME5; \
ARG_TYPE6 ARG_NAME6; \
s >> ARG_NAME6; \
KBEngine::Bots::getSingleton().NAME(pChannel, \
ARG_NAME1, ARG_NAME2, \
ARG_NAME3, ARG_NAME4, ARG_NAME5, ARG_NAME6); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS6(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
void NAME##BotsMessagehandler6::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS6(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
class NAME##BotsMessagehandler6 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS6(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
BOTS_MESSAGE_HANDLER_ARGS6(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
NETWORK_MESSAGE_DECLARE_ARGS6(Bots, NAME, \
NAME##BotsMessagehandler6, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6) \
Bots消息宏, 只有八个参数的消息
*/
#if defined(NETWORK_INTERFACE_DECLARE_BEGIN)
#undef BOTS_MESSAGE_HANDLER_ARGS8
#endif
#if defined(DEFINE_IN_INTERFACE)
#if defined(BOTS)
#define BOTS_MESSAGE_HANDLER_ARGS8(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
void NAME##BotsMessagehandler8::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
ARG_TYPE1 ARG_NAME1; \
s >> ARG_NAME1; \
ARG_TYPE2 ARG_NAME2; \
s >> ARG_NAME2; \
ARG_TYPE3 ARG_NAME3; \
s >> ARG_NAME3; \
ARG_TYPE4 ARG_NAME4; \
s >> ARG_NAME4; \
ARG_TYPE5 ARG_NAME5; \
s >> ARG_NAME5; \
ARG_TYPE6 ARG_NAME6; \
s >> ARG_NAME6; \
ARG_TYPE7 ARG_NAME7; \
s >> ARG_NAME7; \
ARG_TYPE8 ARG_NAME8; \
s >> ARG_NAME8; \
KBEngine::Bots::getSingleton().NAME(pChannel, \
ARG_NAME1, ARG_NAME2, ARG_NAME3, \
ARG_NAME4, ARG_NAME5, ARG_NAME6, \
ARG_NAME7, ARG_NAME8); \
} \
#else
#define BOTS_MESSAGE_HANDLER_ARGS8(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
void NAME##BotsMessagehandler8::handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s) \
{ \
} \
#endif
#else
#define BOTS_MESSAGE_HANDLER_ARGS8(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
class NAME##BotsMessagehandler8 : public Network::MessageHandler \
{ \
public: \
virtual void handle(Network::Channel* pChannel, \
KBEngine::MemoryStream& s); \
}; \
#endif
#define BOTS_MESSAGE_DECLARE_ARGS8(NAME, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
BOTS_MESSAGE_HANDLER_ARGS8(NAME, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
NETWORK_MESSAGE_DECLARE_ARGS8(Bots, NAME, \
NAME##BotsMessagehandler8, MSG_LENGTH, ARG_TYPE1, ARG_NAME1, \
ARG_TYPE2, ARG_NAME2, \
ARG_TYPE3, ARG_NAME3, \
ARG_TYPE4, ARG_NAME4, \
ARG_TYPE5, ARG_NAME5, \
ARG_TYPE6, ARG_NAME6, \
ARG_TYPE7, ARG_NAME7, \
ARG_TYPE8, ARG_NAME8) \
}
#endif