Используется JMEngine для создания серверной части MMORPG, включает следующие компоненты:
Все тестовые скрипты пропущены.
while (true)
{
string cmd;
cin >> cmd;
if (!cmd.compare("quit"))
{
break;
}
}
Модуль распределения сообщений
DispatchHandler.h
#include "JME_Dispatcher.h"
typedef JMEngine::game::JME_Dispatcher<int, google::protobuf::Message*> MessageDispatcher;
class DispatchHandler :
public MessageDispatcher
{
public:
static void init();
private:
static void requestLogin(int net, const google::protobuf::Message* params);
};
DispatchHandler.cpp
#include "DispatchHandler.h"
void DispatchHandler::init()
{
regMessageHandler(10002, boost::bind(&DispatchHandler::requestLogin, _1, _2));
}
void DispatchHandler::requestLogin(int net, const google::protobuf::Message* params)
{
}
Модуль игровых событий
main.cpp
#include "JME_GameEventCenter.h"
void cb3(const string& evt, JMEngine::game::GameEventCenter<string>::Observer::EventConnectorPtr conn)
{
cout << "Событие [" << evt << "] обратный вызов 3" << endl;
conn->disconnect();
}
int main()
{
auto game_mgr = new JMEngine::game::GameEventCenter<string>;
auto cb1 = [](const string& evt) { cout << "Событие [" << evt << "] обратный вызов 1" << endl; };
auto cb2 = [](const string& evt) { cout << "Событие [" << evt << "] обратный вызов 2" << endl; };
game_mgr->regEventHandler("test", cb1);
game_mgr->regEventHandler("test", cb2);
JMEngine::game::GameEventCenter<string>::Observer::EventConnectorPtr conn(new JMEngine::game::GameEventCenter<string>::Observer::EventConnector);
game_mgr->regEventHandler("test", boost::bind(cb3, _1, conn), conn);
game_mgr->eventCallback("test");
game_mgr->removeEventHandler("test", cb1);
game_mgr->eventCallback("test");
game_mgr->removeEventHandler("test", cb2);
game_mgr->eventCallback("test");
return 0;
}
результат выполнения:
Событие [test] обратный вызов 1
Событие [test] обратный вызов 2
Событие [test] обратный вызов 3
Событие [test] обратный вызов 2
Функции работы со временем Модуль таймера```cpp main.cpp #include "JME_TimerTask.h"
void cb4(boost::shared_ptrboost::asio::deadline_timer dt, const string& para) { LOGT("%s callback", para); };
int main() { LOGT("=============================="); }
JMEngine::game::JME_TimerTaskCenter::callbackFromNow(20, boost::bind(cb4, _1, "callbackFromNow"));
JMEngine::game::JME_TimerTaskCenter::callbackAtTime(time(NULL) + 20, boost::bind(cb4, _1, "callbackAtTime"));
JMEngine::game::JME_TimerTaskCenter::callbackByInterval(5, boost::bind(cb4, _1, "callbackByInterval"));
return 0;
}
run result:
[2015-Nov-05 11:35:24] [f:\work\jmengine\testservers\client\src\main.cpp:101:main:00F88670] [TRACE] ==============================
[2015-Nov-05 11:35:29] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:34] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:39] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackAtTime callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackFromNow callback
[2015-Nov-05 11:35:44] [f:\work\jmengine\testservers\client\src\main.cpp:79:cb4:00F86258] [TRACE] callbackByInterval callback
Общее пространство памяти
```
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )