File indexing completed on 2024-05-12 05:39:26

0001 #include "maincontroler.h"
0002 
0003 #include <QJSValue>
0004 #include <QQmlEngine>
0005 
0006 MainControler::MainControler(QObject* parent) : QObject(parent)
0007 {
0008 
0009     m_diceParser= new DiceParser();
0010     qmlRegisterSingletonType("DiceParser", 1, 0, "Model", [](QQmlEngine* engine, QJSEngine* scriptEngine) -> QObject* {
0011         Q_UNUSED(engine)
0012         static CommandModel model;
0013         static bool initialized= false;
0014         if(!initialized)
0015         {
0016             model.insertCmd("L5R", "8D10e10k4");
0017             initialized= true;
0018         }
0019         return &model;
0020     });
0021 }
0022 void MainControler::initEngine(QQmlApplicationEngine* engine)
0023 {
0024     m_engine= engine;
0025     engine->rootContext()->setContextProperty("_model", m_model);
0026     connect(m_engine, SIGNAL(objectCreated(QObject*, QUrl)), this, SLOT(setConnections(QObject*, QUrl)));
0027 }
0028 void MainControler::rollDice(QString cmd)
0029 {
0030     if(m_diceParser->parseLine(cmd))
0031     {
0032         m_diceParser->start();
0033         for(int i= 0; i < m_diceParser->getStartNodeCount(); ++i)
0034         {
0035             // qDebug() << m_diceParser->getSumOfDiceResult(i);
0036         }
0037     }
0038 }
0039 void MainControler::setConnections(QObject* root, QUrl url)
0040 {
0041     // QObject* root = engine->rootContext()->contextObject();
0042     connect(root, SIGNAL(roll(QString)), this, SLOT(rollDice(QString)));
0043     connect(root, SIGNAL(addRoll(QString, QString)), m_model, SLOT(insertCmd(QString, QString)));
0044 }