diff -r a03f245243b0 -r e33bcb9d5e9c qmlfrontend/hwengine.cpp --- a/qmlfrontend/hwengine.cpp Sun Dec 24 16:56:22 2017 +0100 +++ b/qmlfrontend/hwengine.cpp Mon Dec 25 00:58:47 2017 +0100 @@ -2,6 +2,7 @@ #include #include +#include extern "C" { RunEngine_t* flibRunEngine; @@ -46,6 +47,20 @@ flibFree(); } +static QObject* hwengine_singletontype_provider(QQmlEngine* engine, QJSEngine* scriptEngine) +{ + Q_UNUSED(scriptEngine) + + HWEngine* hwengine = new HWEngine(engine); + return hwengine; +} + +void HWEngine::exposeToQML() +{ + qDebug("HWEngine::exposeToQML"); + qmlRegisterSingletonType("Hedgewars.Engine", 1, 0, "HWEngine", hwengine_singletontype_provider); +} + void HWEngine::guiMessagesCallback(void* context, MessageType mt, const char* msg, uint32_t len) { HWEngine* obj = reinterpret_cast(context); @@ -60,23 +75,42 @@ { switch (mt) { case MSG_RENDERINGPREVIEW: { + qDebug("MSG_RENDERINGPREVIEW"); emit previewIsRendering(); break; } case MSG_PREVIEW: { + qDebug("MSG_PREVIEW"); emit previewImageChanged(); break; } case MSG_PREVIEWHOGCOUNT: { + qDebug("MSG_PREVIEWHOGCOUNT"); emit previewHogCountChanged((quint8)msg.data()[0]); break; } + case MSG_TONET: { + qDebug("MSG_TONET"); + break; + } + case MSG_GAMEFINISHED: { + qDebug("MSG_GAMEFINISHED"); + break; + } } } void HWEngine::getPreview() { - m_runQueue.append(GameConfig()); + GameConfig cfg; + cfg.cmdSeed("superseed"); + m_runQueue.append(cfg); + flibIpcSetEngineBarrier(); + for (const QByteArray& b : m_runQueue[0].config()) { + qDebug() << "[frontend] sending msg of size" << b.size(); + flibIpcToEngineRaw(b.data(), b.size()); + } + flibIpcRemoveBarrierFromEngineQueue(); flibRunEngine(m_runQueue[0].argc(), m_runQueue[0].argv()); }