void PromelaDataModel::setForeach(const std::string& item, const std::string& array, const std::string& index, uint32_t iteration) { // assign array element to item std::stringstream ss; ss << array << "[" << iteration << "]"; PromelaParser itemParser(item, 1, PromelaParser::PROMELA_EXPR); if (itemParser.ast->type != PML_NAME) ERROR_EXECUTION_THROW("Expression '" + item + "' is no valid item"); PromelaParser arrayParser(ss.str(), 1, PromelaParser::PROMELA_EXPR); setVariable(itemParser.ast, getVariable(arrayParser.ast)); if (index.length() > 0) { PromelaParser indexParser(index, 1, PromelaParser::PROMELA_EXPR); setVariable(indexParser.ast, iteration); } }
GameMaster::GameMaster(GameCycle *gameCycle) : gameCycle_(gameCycle) { ItemParser itemParser(this); if (itemParser.bladWczytywania()) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wystąpił błąd przy wczytywaniu danych przedmiotow\n\n") + itemParser.trescBledu, blad_parsera_przedmiotow); return; } qDebug() << QString::fromUtf8("Informacje o przedmiotach wczytano poprawnie"); PrizeParser prizeParser(this); if (prizeParser.bladWczytywania()) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wystąpił błąd przy wczytywaniu danych nagród\n\n") + prizeParser.trescBledu, blad_parsera_nagrod); return; } qDebug() << QString::fromUtf8("Informacje o prizech wczytano poprawnie"); EnemyParser enemyParser(this); if (enemyParser.bladWczytywania()) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wystąpił błąd przy wczytywaniu danych przeciwników\n\n") + enemyParser.trescBledu, blad_parsera_przeciwnikow); return; } else if (enemyGroups_.size() != EnemyGroupCount) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wczytano za mało albo za dużo grup przedmiotów.\n\n"), blad_liczby_grup_przeciwnikow); return; } qDebug() << QString::fromUtf8("Informacje o przeciwnikach wczytano poprawnie"); QuestParser questParser(this); if (questParser.bladWczytywania()) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wystąpił błąd przy wczytywaniu danych zadań\n\n") + questParser.trescBledu, blad_parsera_zadan); return; } else if (quests_.size() < QuestsInTavernCount) { gameCycle_->displayErrorMessage(QString::fromUtf8("Wczytano za mało zadań.\n\n"), blad_liczby_zadan); return; } qDebug() << QString::fromUtf8("Informacje o zadaniach wczytano poprawnie"); }