Add collision events and fix a few bugs when objects are renamed/deleted
This commit is contained in:
1 parent
95d1936a5f
commit
42575e5d5a
14 files changed
+416
-97
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user