Add collision events and fix a few bugs when objects are renamed/deleted

This commit is contained in:
feedc0de committed 2023-12-29 17:48:21 +01:00
1 parent 95d1936a5f
commit 42575e5d5a
14 files changed
+416 -97

No files matched your search

+28 -1
View File
@@ -2,9 +2,13 @@
#include "ui_addeventdialog.h"
#include <QMessageBox>
#include <QMenu>
AddEventDialog::AddEventDialog(QWidget *parent) :
#include "models/projecttreemodel.h"
AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, QWidget *parent) :
QDialog{parent},
m_projectModel{projectModel},
m_ui{std::make_unique<Ui::AddEventDialog>()}
{
m_ui->setupUi(this);
@@ -27,6 +31,29 @@ AddEventDialog::AddEventDialog(QWidget *parent) :
this, [this](){ m_eventType = Object::EventType::Draw; accept(); });
connect(m_ui->pushButtonStep, &QAbstractButton::clicked,
this, [this](){ m_eventType = Object::EventType::Step; accept(); });
auto menu = new QMenu;
connect(menu, &QMenu::aboutToShow, menu, [this,menu](){
for (const Object &object : m_projectModel.project()->objects)
{
QIcon icon;
if (!object.spriteName.isEmpty())
{
const auto &sprites = m_projectModel.project()->sprites;
const auto iter = std::find_if(std::cbegin(sprites), std::cend(sprites),
[&](const Sprite &sprite){ return sprite.name == object.spriteName; });
if (iter != std::cend(sprites))
{
if (!iter->pixmaps.empty())
icon = iter->pixmaps.front();
}
}
menu->addAction(icon, object.name, this, [this,&object](){
m_eventType = object.name; accept();
});
}
}, Qt::SingleShotConnection);
m_ui->pushButtonCollision->setMenu(menu);
}
AddEventDialog::~AddEventDialog() = default;