qmlfrontend/hwengine.cpp
changeset 14371 90bd2c331703
parent 14298 00b56ec8b7df
child 14372 b6824a53d4b1
equal deleted inserted replaced
14370:ef2fc0210362 14371:90bd2c331703
       
     1 #include "hwengine.h"
       
     2 
     1 #include <QDebug>
     3 #include <QDebug>
       
     4 #include <QImage>
     2 #include <QLibrary>
     5 #include <QLibrary>
     3 #include <QQmlEngine>
     6 #include <QQmlEngine>
     4 #include <QUuid>
     7 #include <QUuid>
     5 
     8 
     6 #include "engine_instance.h"
     9 #include "engine_instance.h"
     7 #include "engine_interface.h"
    10 #include "engine_interface.h"
     8 #include "game_view.h"
    11 #include "game_view.h"
     9 #include "preview_image_provider.h"
    12 #include "preview_acceptor.h"
    10 
    13 
    11 #include "hwengine.h"
    14 HWEngine::HWEngine(QObject* parent) : QObject(parent) {}
    12 
       
    13 HWEngine::HWEngine(QQmlEngine* engine, QObject* parent)
       
    14     : QObject(parent),
       
    15       m_engine(engine),
       
    16       m_previewProvider(new PreviewImageProvider()) {
       
    17   m_engine->addImageProvider(QLatin1String("preview"), m_previewProvider);
       
    18 }
       
    19 
    15 
    20 HWEngine::~HWEngine() {}
    16 HWEngine::~HWEngine() {}
    21 
       
    22 static QObject* hwengine_singletontype_provider(QQmlEngine* engine,
       
    23                                                 QJSEngine* scriptEngine) {
       
    24   Q_UNUSED(scriptEngine)
       
    25 
       
    26   HWEngine* hwengine = new HWEngine(engine);
       
    27   return hwengine;
       
    28 }
       
    29 
       
    30 void HWEngine::exposeToQML() {
       
    31   qDebug("HWEngine::exposeToQML");
       
    32   qmlRegisterSingletonType<HWEngine>("Hedgewars.Engine", 1, 0, "HWEngine",
       
    33                                      hwengine_singletontype_provider);
       
    34   qmlRegisterType<GameView>("Hedgewars.Engine", 1, 0, "GameView");
       
    35   qmlRegisterUncreatableType<EngineInstance>("Hedgewars.Engine", 1, 0,
       
    36                                              "EngineInstance",
       
    37                                              "Create by HWEngine run methods");
       
    38 }
       
    39 
    17 
    40 void HWEngine::getPreview() {
    18 void HWEngine::getPreview() {
    41   emit previewIsRendering();
    19   emit previewIsRendering();
    42 
    20 
    43   m_gameConfig = GameConfig();
    21   m_gameConfig = GameConfig();
    56                       static_cast<int>(preview.height),
    34                       static_cast<int>(preview.height),
    57                       QImage::Format_Indexed8);
    35                       QImage::Format_Indexed8);
    58   previewImage.setColorTable(colorTable);
    36   previewImage.setColorTable(colorTable);
    59   previewImage.detach();
    37   previewImage.detach();
    60 
    38 
    61   m_previewProvider->setImage(previewImage);
    39   if (m_previewAcceptor) m_previewAcceptor->setImage(previewImage);
    62 
    40 
    63   emit previewImageChanged();
    41   emit previewImageChanged();
    64   // m_runQueue->queue(m_gameConfig);
    42   // m_runQueue->queue(m_gameConfig);
    65 }
    43 }
    66 
    44 
    78   return engine;
    56   return engine;
    79   // m_runQueue->queue(m_gameConfig);
    57   // m_runQueue->queue(m_gameConfig);
    80 }
    58 }
    81 
    59 
    82 int HWEngine::previewHedgehogsCount() const { return m_previewHedgehogsCount; }
    60 int HWEngine::previewHedgehogsCount() const { return m_previewHedgehogsCount; }
       
    61 
       
    62 PreviewAcceptor* HWEngine::previewAcceptor() const { return m_previewAcceptor; }
       
    63 
       
    64 void HWEngine::setPreviewAcceptor(PreviewAcceptor* previewAcceptor) {
       
    65   if (m_previewAcceptor == previewAcceptor) return;
       
    66 
       
    67   m_previewAcceptor = previewAcceptor;
       
    68   emit previewAcceptorChanged(m_previewAcceptor);
       
    69 }