|
|
@@ -11,13 +11,15 @@
|
|
|
#include "timedevent.h"
|
|
|
#include "ui_timedevent.h"
|
|
|
#include "eventsettings.h"
|
|
|
+#include "../mapeditorroles.h"
|
|
|
#include "../../lib/constants/EntityIdentifiers.h"
|
|
|
#include "../../lib/constants/StringConstants.h"
|
|
|
|
|
|
-TimedEvent::TimedEvent(QListWidgetItem * t, QWidget *parent) :
|
|
|
+TimedEvent::TimedEvent(MapController & c, QListWidgetItem * t, QWidget *parent) :
|
|
|
+ controller(c),
|
|
|
QDialog(parent),
|
|
|
- target(t),
|
|
|
- ui(new Ui::TimedEvent)
|
|
|
+ ui(new Ui::TimedEvent),
|
|
|
+ target(t)
|
|
|
{
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
@@ -51,7 +53,14 @@ TimedEvent::TimedEvent(QListWidgetItem * t, QWidget *parent) :
|
|
|
nval->setFlags(nval->flags() | Qt::ItemIsEditable);
|
|
|
ui->resources->setItem(i, 1, nval);
|
|
|
}
|
|
|
-
|
|
|
+ auto deletedObjectInstances = params.value("deletedObjectsInstances").toList();
|
|
|
+ for(auto const & idAsVariant : deletedObjectInstances)
|
|
|
+ {
|
|
|
+ auto id = ObjectInstanceID(idAsVariant.toInt());
|
|
|
+ auto obj = controller.map()->objects[id];
|
|
|
+ if(obj)
|
|
|
+ insertObjectToDelete(obj);
|
|
|
+ }
|
|
|
show();
|
|
|
}
|
|
|
|
|
|
@@ -89,10 +98,63 @@ void TimedEvent::on_TimedEvent_finished(int result)
|
|
|
}
|
|
|
descriptor["resources"] = res;
|
|
|
|
|
|
+ QVariantList deletedObjects;
|
|
|
+ for(int i = 0; i < ui->deletedObjects->count(); ++i)
|
|
|
+ {
|
|
|
+ auto const & item = ui->deletedObjects->item(i);
|
|
|
+ auto data = item->data(MapEditorRoles::ObjectInstanceIDRole);
|
|
|
+ auto id = ObjectInstanceID(data.value<int>());
|
|
|
+ deletedObjects.push_back(QVariant::fromValue(id.num));
|
|
|
+ }
|
|
|
+ descriptor["deletedObjectsInstances"] = QVariant::fromValue(deletedObjects);
|
|
|
+
|
|
|
target->setData(Qt::UserRole, descriptor);
|
|
|
target->setText(ui->eventNameText->text());
|
|
|
}
|
|
|
|
|
|
+void TimedEvent::on_addObjectToDelete_clicked()
|
|
|
+{
|
|
|
+ for(int lvl : {0, 1})
|
|
|
+ {
|
|
|
+ auto & l = controller.scene(lvl)->objectPickerView;
|
|
|
+ l.highlight<const CGObjectInstance>();
|
|
|
+ l.update();
|
|
|
+ QObject::connect(&l, &ObjectPickerLayer::selectionMade, this, &TimedEvent::onObjectPicked);
|
|
|
+ }
|
|
|
+ hide();
|
|
|
+ dynamic_cast<QWidget *>(parent()->parent()->parent()->parent()->parent()->parent()->parent())->hide();
|
|
|
+}
|
|
|
+
|
|
|
+void TimedEvent::on_removeObjectToDelete_clicked()
|
|
|
+{
|
|
|
+ delete ui->deletedObjects->takeItem(ui->deletedObjects->currentRow());
|
|
|
+}
|
|
|
+
|
|
|
+void TimedEvent::onObjectPicked(const CGObjectInstance * obj)
|
|
|
+{
|
|
|
+ show();
|
|
|
+ dynamic_cast<QWidget *>(parent()->parent()->parent()->parent()->parent()->parent()->parent())->show();
|
|
|
+
|
|
|
+ for(int lvl : {0, 1})
|
|
|
+ {
|
|
|
+ auto & l = controller.scene(lvl)->objectPickerView;
|
|
|
+ l.clear();
|
|
|
+ l.update();
|
|
|
+ QObject::disconnect(&l, &ObjectPickerLayer::selectionMade, this, &TimedEvent::onObjectPicked);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!obj)
|
|
|
+ return;
|
|
|
+ insertObjectToDelete(obj);
|
|
|
+}
|
|
|
+
|
|
|
+void TimedEvent::insertObjectToDelete(const CGObjectInstance * obj)
|
|
|
+{
|
|
|
+ QString objectLabel = QString("%1, x: %2, y: %3, z: %4").arg(QString::fromStdString(obj->getObjectName())).arg(obj->pos.x).arg(obj->pos.y).arg(obj->pos.z);
|
|
|
+ auto * item = new QListWidgetItem(objectLabel);
|
|
|
+ item->setData(MapEditorRoles::ObjectInstanceIDRole, QVariant::fromValue(obj->id.num));
|
|
|
+ ui->deletedObjects->addItem(item);
|
|
|
+}
|
|
|
|
|
|
void TimedEvent::on_pushButton_clicked()
|
|
|
{
|