// --- QGAMES::MapBuilder* DragonWindGame::createMapBuilder () { QGAMES::MapBuilder* result = new QGAMES::MapBuilder (std::string (__MAPSFILE__)); result -> addAddsOn (new ObjectDragonMapsBuilderAddsOn (objectBuilder ())); result -> addAddsOn (new TMXDragonMapsBuilderAddsOn ((QGAMES::Sprite2DBuilder*) formBuilder ())); return (result); }
bool GWFFileLoader::load(QString file_name, QObject *output) { SCgScene *scene = qobject_cast<SCgScene*>(output); // read data from file QString errorStr; int errorLine; int errorColumn; QFile file(file_name); QDomDocument document; mFileName = file_name; if (!document.setContent(&file, &errorStr, &errorLine, &errorColumn)) { QMessageBox::information(0, qAppName(), QObject::tr("Error while opening file %1.\nParse error at line %2, column %3:\n%4") .arg(file_name) .arg(errorLine) .arg(errorColumn) .arg(errorStr)); return false; } ///////////////////////////////////////////// // Read document GwfObjectInfoReader reader; if (! reader.read(document)) { mLastError = reader.lastError(); showLastError(); return false; } ///////////////////////////////////////////// ///////////////////////////////////////////// //Place objects to scene DefaultSCgObjectBuilder objectBuilder(scene); objectBuilder.buildObjects(reader.objectsInfo()); if (objectBuilder.hasErrors()) { mLastError = QObject::tr("Building process has finished with following errors:\n").arg(mFileName); foreach(const QString& str, objectBuilder.errorList()) mLastError += str + '\n'; showLastError(); }
void SCgInsertMode::activate() { if (mInsertedObjectGroup) { delete mInsertedObjectGroup; mInsertedObjectGroup = 0; } const QMimeData* data = QApplication::clipboard()->mimeData(); if (data->hasFormat(SCgWindow::SupportedPasteMimeType)) { QDomDocument document; if (!document.setContent(data->data(SCgWindow::SupportedPasteMimeType))) return; // Read document GwfObjectInfoReader reader; if (!reader.read(document)) return; //Place objects to scene TemplateSCgObjectsBuilder objectBuilder(mScene); objectBuilder.buildObjects(reader.objectsInfo()); QList<SCgObject*> list = objectBuilder.objects(); QList<QGraphicsItem*> withoutChilds; foreach(SCgObject* obj, list) { if (!obj->parentItem()) withoutChilds.append(obj); } if(!withoutChilds.empty()) { mInsertedObjectGroup = mScene->createItemGroup(withoutChilds); QGraphicsView* v = mScene->views().at(0); QPointF p = v->mapToScene(v->mapFromGlobal(QCursor::pos())); mInsertedObjectGroup->setPos(p); mInsertedObjectGroup->setOpacity(0.5); } }