mirror of
https://github.com/vcmi/vcmi.git
synced 2026-06-19 22:57:37 +02:00
store ObjectInstanceID of objects to remove instead of their position
This commit is contained in:
@@ -55,23 +55,23 @@ TResources resourcesFromVariant(const QVariant & v)
|
||||
return TResources(vJson);
|
||||
}
|
||||
|
||||
QVariant toVariant(std::vector<int3> positions)
|
||||
QVariant toVariant(std::vector<ObjectInstanceID> objects)
|
||||
{
|
||||
QVariantList result;
|
||||
for(int3 position : positions)
|
||||
for(auto obj : objects)
|
||||
{
|
||||
result.push_back(QVariant::fromValue<int3>(position));
|
||||
result.push_back(QVariant::fromValue(obj.num));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<int3> deletedObjectsPositionsFromVariant(const QVariant & v)
|
||||
std::vector<ObjectInstanceID> deletedObjectsIdsFromVariant(const QVariant & v)
|
||||
{
|
||||
std::vector<int3> result;
|
||||
for (auto positionAsVariant : v.toList())
|
||||
std::vector<ObjectInstanceID> result;
|
||||
for(auto isAsVariant : v.toList())
|
||||
{
|
||||
int3 position = positionAsVariant.value<int3>();
|
||||
result.push_back(position);
|
||||
auto id = isAsVariant.value<int>();
|
||||
result.push_back(ObjectInstanceID(id));
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -88,7 +88,7 @@ QVariant toVariant(const CMapEvent & event)
|
||||
result["firstOccurrence"] = QVariant::fromValue(event.firstOccurrence);
|
||||
result["nextOccurrence"] = QVariant::fromValue(event.nextOccurrence);
|
||||
result["resources"] = toVariant(event.resources);
|
||||
result["deletedObjectsPositions"] = toVariant(event.deletedObjectsCoordinates);
|
||||
result["deletedObjectsInstances"] = toVariant(event.deletedObjectsInstances);
|
||||
return QVariant(result);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ CMapEvent eventFromVariant(CMapHeader & mapHeader, const QVariant & variant)
|
||||
result.firstOccurrence = v.value("firstOccurrence").toInt();
|
||||
result.nextOccurrence = v.value("nextOccurrence").toInt();
|
||||
result.resources = resourcesFromVariant(v.value("resources"));
|
||||
result.deletedObjectsCoordinates = deletedObjectsPositionsFromVariant(v.value("deletedObjectsPositions"));
|
||||
result.deletedObjectsInstances = deletedObjectsIdsFromVariant(v.value("deletedObjectsInstances"));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,11 +53,11 @@ TimedEvent::TimedEvent(MapController & c, QListWidgetItem * t, QWidget *parent)
|
||||
nval->setFlags(nval->flags() | Qt::ItemIsEditable);
|
||||
ui->resources->setItem(i, 1, nval);
|
||||
}
|
||||
auto deletedObjectPositions = params.value("deletedObjectsPositions").toList();
|
||||
for(auto const & pos : deletedObjectPositions)
|
||||
auto deletedObjectInstances = params.value("deletedObjectsInstances").toList();
|
||||
for(auto const & obj : deletedObjectInstances)
|
||||
{
|
||||
int3 position = pos.value<int3>();
|
||||
auto obj = controller.map()->getObjectFrom(position);
|
||||
auto id = ObjectInstanceID(obj.toInt());
|
||||
auto obj = controller.map()->objects[id];
|
||||
if(obj)
|
||||
insertObjectToDelete(obj);
|
||||
}
|
||||
@@ -104,10 +104,9 @@ void TimedEvent::on_TimedEvent_finished(int result)
|
||||
auto const & item = ui->deletedObjects->item(i);
|
||||
auto data = item->data(MapEditorRoles::ObjectInstanceIDRole);
|
||||
auto id = ObjectInstanceID(data.value<int>());
|
||||
auto position = controller.map()->objects[id]->pos;
|
||||
deletedObjects.push_back(QVariant::fromValue<int3>(position));
|
||||
deletedObjects.push_back(QVariant::fromValue(id.num));
|
||||
}
|
||||
descriptor["deletedObjectsPositions"] = QVariant::fromValue(deletedObjects);
|
||||
descriptor["deletedObjectsInstances"] = QVariant::fromValue(deletedObjects);
|
||||
|
||||
target->setData(Qt::UserRole, descriptor);
|
||||
target->setText(ui->eventNameText->text());
|
||||
|
||||
Reference in New Issue
Block a user