1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/JimmyH-JMEGame

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

#JMEGame Используется JMEngine для написания серверного фреймворка для MMORPG, включая следующие компоненты: Все тестовые коды опущены, приведен пример кода:

while (1)
{
    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)
{
    std::cout << "event [ " << evt << " ] callback 3" << std::endl;
    conn->disconnect();
}
int main()
{
    auto game_mgr = new JMEngine::game::GameEventCenter<string>;
    auto cb1 = [](const string& evt){ std::cout << "event [ " << evt << " ] callback 1" << std::endl; };
    auto cb2 = [](const string& evt){ std::cout << "event [ " << evt << " ] callback 2" << std::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;
}
результат выполнения:
event [ test ] callback 1
event [ test ] callback 2
event [ test ] callback 3
event [ test ] callback 2

Функции, связанные со временем Модуль таймера:

main.cpp
#include "JME_TimerTask.h"
``````markdown
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;
}

Результат выполнения: [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 )

Вы можете оставить комментарий после Вход в систему

Введение

Используя JMEngine, написать фреймворк для сервера онлайн-игр, который будет включать в себя: * модуль рассылки сообщений; * модуль игровых событий; * функции, связанные со временем; * модуль таймера; * общую память; * управление RPC, канал RPC. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/JimmyH-JMEGame.git
git@api.gitlife.ru:oschina-mirror/JimmyH-JMEGame.git
oschina-mirror
JimmyH-JMEGame
JimmyH-JMEGame
master