diff --git a/QtGameMaker.pro b/QtGameMaker.pro index 83db83c..65c75a2 100644 --- a/QtGameMaker.pro +++ b/QtGameMaker.pro @@ -27,6 +27,7 @@ INCLUDEPATH += \ HEADERS += \ src/closeeventfilter.h \ src/editor/dialogs/genericcodeeditordialog.h \ + src/editor/dialogs/includedfilepropertiesdialog.h \ src/editor/dialogs/transparentbackgroundsettingsdialog.h \ src/editor/editorguiutils.h \ src/editor/roomscene.h \ @@ -89,6 +90,7 @@ HEADERS += \ SOURCES += \ src/closeeventfilter.cpp \ src/editor/dialogs/genericcodeeditordialog.cpp \ + src/editor/dialogs/includedfilepropertiesdialog.cpp \ src/editor/dialogs/transparentbackgroundsettingsdialog.cpp \ src/editor/editorguiutils.cpp \ src/editor/roomscene.cpp \ @@ -148,6 +150,7 @@ SOURCES += \ src/projectserialization.cpp FORMS += \ + src/editor/dialogs/includedfilepropertiesdialog.ui \ src/editor/dialogs/transparentbackgroundsettingsdialog.ui \ src/editor/mainwindow.ui \ src/editor/dialogs/addeventdialog.ui \ diff --git a/src/editor/dialogs/addeventdialog.cpp b/src/editor/dialogs/addeventdialog.cpp index d4ce1f9..721cdd7 100644 --- a/src/editor/dialogs/addeventdialog.cpp +++ b/src/editor/dialogs/addeventdialog.cpp @@ -5,10 +5,12 @@ #include #include "models/projecttreemodel.h" +#include "mainwindow.h" -AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, QWidget *parent) : +AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainWindow, QWidget *parent) : QDialog{parent}, m_projectModel{projectModel}, + m_mainWindow{mainWindow}, m_ui{std::make_unique()} { m_ui->setupUi(this); @@ -80,6 +82,12 @@ AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, QWidget *parent) }); m_ui->pushButtonCollision->setMenu(menu); } + + { + auto menu = new QMenu; + menu->addAction(tr("Add/Modify Triggers..."), this, [this](){ m_mainWindow.showDefineTriggers(); reject(); }); + m_ui->pushButtonTrigger->setMenu(menu); + } } AddEventDialog::~AddEventDialog() = default; diff --git a/src/editor/dialogs/addeventdialog.h b/src/editor/dialogs/addeventdialog.h index ce4c23b..d952379 100644 --- a/src/editor/dialogs/addeventdialog.h +++ b/src/editor/dialogs/addeventdialog.h @@ -10,13 +10,14 @@ namespace Ui { class AddEventDialog; } class ProjectTreeModel; +class MainWindow; class AddEventDialog : public QDialog { Q_OBJECT public: - explicit AddEventDialog(ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainWindow, QWidget *parent = nullptr); ~AddEventDialog(); const std::optional> &eventType() const { return m_eventType; } @@ -26,6 +27,7 @@ public: private: ProjectTreeModel &m_projectModel; + MainWindow &m_mainWindow; const std::unique_ptr m_ui; diff --git a/src/editor/dialogs/addeventdialog.ui b/src/editor/dialogs/addeventdialog.ui index 2dbf04c..beb6733 100644 --- a/src/editor/dialogs/addeventdialog.ui +++ b/src/editor/dialogs/addeventdialog.ui @@ -122,6 +122,10 @@ &Trigger + + + :/qtgameengine/icons/trigger.png:/qtgameengine/icons/trigger.png + diff --git a/src/editor/dialogs/backgroundpropertiesdialog.cpp b/src/editor/dialogs/backgroundpropertiesdialog.cpp index 42c2e41..bf6081b 100644 --- a/src/editor/dialogs/backgroundpropertiesdialog.cpp +++ b/src/editor/dialogs/backgroundpropertiesdialog.cpp @@ -8,9 +8,10 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" #include "imageeditordialog.h" +#include "mainwindow.h" -BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_background{background}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/backgroundpropertiesdialog.h b/src/editor/dialogs/backgroundpropertiesdialog.h index f88d63f..6dd8b1f 100644 --- a/src/editor/dialogs/backgroundpropertiesdialog.h +++ b/src/editor/dialogs/backgroundpropertiesdialog.h @@ -8,13 +8,14 @@ namespace Ui { class BackgroundPropertiesDialog; } struct Background; class ProjectTreeModel; +class MainWindow; class BackgroundPropertiesDialog : public QDialog { Q_OBJECT public: - explicit BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~BackgroundPropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/fontpropertiesdialog.cpp b/src/editor/dialogs/fontpropertiesdialog.cpp index daa899e..9b2571a 100644 --- a/src/editor/dialogs/fontpropertiesdialog.cpp +++ b/src/editor/dialogs/fontpropertiesdialog.cpp @@ -6,9 +6,10 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" +#include "mainwindow.h" -FontPropertiesDialog::FontPropertiesDialog(Font &font, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +FontPropertiesDialog::FontPropertiesDialog(Font &font, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_font{font}, m_projectModel{projectModel} diff --git a/src/editor/dialogs/fontpropertiesdialog.h b/src/editor/dialogs/fontpropertiesdialog.h index 35a24b7..1dbbbd4 100644 --- a/src/editor/dialogs/fontpropertiesdialog.h +++ b/src/editor/dialogs/fontpropertiesdialog.h @@ -7,13 +7,14 @@ namespace Ui { class FontPropertiesDialog; } struct Font; class ProjectTreeModel; +class MainWindow; class FontPropertiesDialog : public QDialog { Q_OBJECT public: - explicit FontPropertiesDialog(Font &font, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit FontPropertiesDialog(Font &font, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~FontPropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/gameinformationdialog.ui b/src/editor/dialogs/gameinformationdialog.ui index 244b01f..bc57fb2 100644 --- a/src/editor/dialogs/gameinformationdialog.ui +++ b/src/editor/dialogs/gameinformationdialog.ui @@ -13,19 +13,184 @@ Game Information - - - - 50 - 50 - 201 - 16 - - + + + + + + &File + + + + + + + + + + + + + + &Edit + + + + + + + + + + + F&ormat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not yet implemented + + + + + - Not yet implemented + &New - + + + + &Open... + + + + + &Save + + + + + Save &As... + + + + + &Print... + + + + + Print Preview... + + + + + &Export PDF... + + + + + &Undo + + + + + &Redo + + + + + Cu&t + + + + + &Copy + + + + + &Paste + + + + + &Bold + + + + + &Italic + + + + + &Underline + + + + + &Left + + + + + C&enter + + + + + &Justify + + + + + &Indent + + + + + &Unindent + + + + + &Color + + + + + Chec&ked + + diff --git a/src/editor/dialogs/includedfilepropertiesdialog.cpp b/src/editor/dialogs/includedfilepropertiesdialog.cpp new file mode 100644 index 0000000..10db109 --- /dev/null +++ b/src/editor/dialogs/includedfilepropertiesdialog.cpp @@ -0,0 +1,22 @@ +#include "includedfilepropertiesdialog.h" +#include "ui_includedfilepropertiesdialog.h" + +IncludedFilePropertiesDialog::IncludedFilePropertiesDialog(IncludedFile &includedFile, QWidget *parent) : + QDialog{parent}, + m_includedFile{includedFile}, + m_ui{std::make_unique()} +{ + m_ui->setupUi(this); + +#ifdef Q_OS_LINUX + setWindowFlags((windowFlags() & ~Qt::Dialog) | Qt::Window); +#endif + setWindowFlag(Qt::WindowCloseButtonHint); +} + +IncludedFilePropertiesDialog::~IncludedFilePropertiesDialog() = default; + +void IncludedFilePropertiesDialog::accept() +{ + QDialog::reject(); +} diff --git a/src/editor/dialogs/includedfilepropertiesdialog.h b/src/editor/dialogs/includedfilepropertiesdialog.h new file mode 100644 index 0000000..3bd681b --- /dev/null +++ b/src/editor/dialogs/includedfilepropertiesdialog.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +#include + +namespace Ui { class IncludedFilePropertiesDialog; } +struct IncludedFile; + +class IncludedFilePropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit IncludedFilePropertiesDialog(IncludedFile &includedFile, QWidget *parent = nullptr); + ~IncludedFilePropertiesDialog() override; + +public slots: + void accept() override; + +private: + IncludedFile &m_includedFile; + + const std::unique_ptr m_ui; +}; diff --git a/src/editor/dialogs/includedfilepropertiesdialog.ui b/src/editor/dialogs/includedfilepropertiesdialog.ui new file mode 100644 index 0000000..677ce51 --- /dev/null +++ b/src/editor/dialogs/includedfilepropertiesdialog.ui @@ -0,0 +1,68 @@ + + + IncludedFilePropertiesDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 30 + 240 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + buttonBox + accepted() + IncludedFilePropertiesDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + IncludedFilePropertiesDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/editor/dialogs/includedfilesdialog.cpp b/src/editor/dialogs/includedfilesdialog.cpp index 81df0e5..f923927 100644 --- a/src/editor/dialogs/includedfilesdialog.cpp +++ b/src/editor/dialogs/includedfilesdialog.cpp @@ -3,6 +3,7 @@ #include "projectcontainer.h" #include "models/includedfilesmodel.h" +#include "dialogs/includedfilepropertiesdialog.h" IncludedFilesDialog::IncludedFilesDialog(ProjectContainer &project, QWidget *parent) : QDialog{parent}, @@ -18,6 +19,18 @@ IncludedFilesDialog::IncludedFilesDialog(ProjectContainer &project, QWidget *par button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); m_ui->listView->setModel(m_model.get()); + + connect(m_ui->pushButtonAdd, &QAbstractButton::clicked, this, &IncludedFilesDialog::addPressed); } IncludedFilesDialog::~IncludedFilesDialog() = default; + +void IncludedFilesDialog::addPressed() +{ + IncludedFile includedFile; + IncludedFilePropertiesDialog dialog{includedFile, this}; + if (dialog.exec() == QDialog::Accepted) + { + // TODO + } +} diff --git a/src/editor/dialogs/includedfilesdialog.h b/src/editor/dialogs/includedfilesdialog.h index f52e480..efc2a7c 100644 --- a/src/editor/dialogs/includedfilesdialog.h +++ b/src/editor/dialogs/includedfilesdialog.h @@ -16,6 +16,9 @@ public: explicit IncludedFilesDialog(ProjectContainer &project, QWidget *parent = nullptr); ~IncludedFilesDialog(); +private slots: + void addPressed(); + private: const std::unique_ptr m_ui; diff --git a/src/editor/dialogs/includedfilesdialog.ui b/src/editor/dialogs/includedfilesdialog.ui index a4946f9..b7bc555 100644 --- a/src/editor/dialogs/includedfilesdialog.ui +++ b/src/editor/dialogs/includedfilesdialog.ui @@ -7,12 +7,16 @@ 0 0 400 - 300 + 462 Included Files + + + :/qtgameengine/icons/included-files.png:/qtgameengine/icons/included-files.png + diff --git a/src/editor/dialogs/objectpropertiesdialog.cpp b/src/editor/dialogs/objectpropertiesdialog.cpp index 56da8ef..faf9b49 100644 --- a/src/editor/dialogs/objectpropertiesdialog.cpp +++ b/src/editor/dialogs/objectpropertiesdialog.cpp @@ -12,8 +12,8 @@ #include "models/objecteventsmodel.h" #include "addeventdialog.h" -ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow *mainWindow) : - QDialog{mainWindow}, +ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_object{object}, m_projectModel{projectModel}, @@ -191,12 +191,6 @@ void ObjectPropertiesDialog::newSprite() void ObjectPropertiesDialog::editSprite() { - if (!m_mainWindow) - { - qCritical() << "no mainWindow available"; - return; - } - auto &sprites = m_projectModel.project()->sprites; const auto iter = std::find_if(std::begin(sprites), std::end(sprites), [&](const Sprite &sprite){ return sprite.name == m_spriteName; }); @@ -206,7 +200,7 @@ void ObjectPropertiesDialog::editSprite() return; } - m_mainWindow->openPropertiesWindowFor(*iter); + m_mainWindow.openPropertiesWindowFor(*iter); } void ObjectPropertiesDialog::showInformation() @@ -216,7 +210,7 @@ void ObjectPropertiesDialog::showInformation() void ObjectPropertiesDialog::addEvent() { - AddEventDialog dialog{m_projectModel, this}; + AddEventDialog dialog{m_projectModel, m_mainWindow, this}; if (dialog.exec() == QDialog::Accepted) if (const auto &eventType = dialog.eventType()) if (!m_eventsModel->addEvent(*eventType)) @@ -248,7 +242,7 @@ void ObjectPropertiesDialog::replaceEvent() std::variant x = event->first; - AddEventDialog dialog{m_projectModel, this}; + AddEventDialog dialog{m_projectModel, m_mainWindow, this}; if (dialog.exec() == QDialog::Accepted) if (const auto &eventType = dialog.eventType()) if (!m_eventsModel->changeEvent(event->first, *eventType)) @@ -432,7 +426,7 @@ void ObjectPropertiesDialog::setParent(const Object &object) { if (&m_object == &object) { - QMessageBox::warning(m_mainWindow, tr("This will create a loop in parents."), tr("This will create a loop in parents.")); + QMessageBox::warning(this, tr("This will create a loop in parents."), tr("This will create a loop in parents.")); return; } diff --git a/src/editor/dialogs/objectpropertiesdialog.h b/src/editor/dialogs/objectpropertiesdialog.h index 0c604c4..f581a98 100644 --- a/src/editor/dialogs/objectpropertiesdialog.h +++ b/src/editor/dialogs/objectpropertiesdialog.h @@ -18,7 +18,7 @@ class ObjectPropertiesDialog : public QDialog Q_OBJECT public: - explicit ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow *mainWindow); + explicit ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~ObjectPropertiesDialog(); void accept() override; @@ -62,7 +62,7 @@ private: Object &m_object; ProjectTreeModel &m_projectModel; - MainWindow * const m_mainWindow; + MainWindow &m_mainWindow; Object::events_container_t m_events; Object::collision_events_container_t m_collisionEvents; diff --git a/src/editor/dialogs/pathpropertiesdialog.cpp b/src/editor/dialogs/pathpropertiesdialog.cpp index 62041f0..32d5538 100644 --- a/src/editor/dialogs/pathpropertiesdialog.cpp +++ b/src/editor/dialogs/pathpropertiesdialog.cpp @@ -12,9 +12,10 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" #include "models/pathpointsmodel.h" +#include "mainwindow.h" -PathPropertiesDialog::PathPropertiesDialog(Path &path, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +PathPropertiesDialog::PathPropertiesDialog(Path &path, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_path{path}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/pathpropertiesdialog.h b/src/editor/dialogs/pathpropertiesdialog.h index f0a615a..6aa9705 100644 --- a/src/editor/dialogs/pathpropertiesdialog.h +++ b/src/editor/dialogs/pathpropertiesdialog.h @@ -13,13 +13,14 @@ class QMenu; namespace Ui { class PathPropertiesDialog; } class ProjectTreeModel; class PathPointsModel; +class MainWindow; class PathPropertiesDialog : public QDialog { Q_OBJECT public: - explicit PathPropertiesDialog(Path &path, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit PathPropertiesDialog(Path &path, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~PathPropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/roompropertiesdialog.cpp b/src/editor/dialogs/roompropertiesdialog.cpp index 41e78d1..1675e76 100644 --- a/src/editor/dialogs/roompropertiesdialog.cpp +++ b/src/editor/dialogs/roompropertiesdialog.cpp @@ -13,9 +13,10 @@ #include "roomscene.h" #include "editorguiutils.h" #include "genericcodeeditordialog.h" +#include "mainwindow.h" -RoomPropertiesDialog::RoomPropertiesDialog(Room &room, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +RoomPropertiesDialog::RoomPropertiesDialog(Room &room, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_room{room}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/roompropertiesdialog.h b/src/editor/dialogs/roompropertiesdialog.h index 1d551e8..15f39a6 100644 --- a/src/editor/dialogs/roompropertiesdialog.h +++ b/src/editor/dialogs/roompropertiesdialog.h @@ -15,13 +15,14 @@ struct Sprite; struct Object; class ProjectTreeModel; class RoomScene; +class MainWindow; class RoomPropertiesDialog : public QDialog { Q_OBJECT public: - explicit RoomPropertiesDialog(Room &room, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit RoomPropertiesDialog(Room &room, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~RoomPropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/scriptpropertiesdialog.cpp b/src/editor/dialogs/scriptpropertiesdialog.cpp index 9480a48..56eaa38 100644 --- a/src/editor/dialogs/scriptpropertiesdialog.cpp +++ b/src/editor/dialogs/scriptpropertiesdialog.cpp @@ -8,9 +8,10 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" +#include "mainwindow.h" -ScriptPropertiesDialog::ScriptPropertiesDialog(Script &script, ProjectTreeModel &projectModel, QWidget *parent) : - CodeEditorDialog{tr("Script Properties: %0").arg(script.name), parent}, +ScriptPropertiesDialog::ScriptPropertiesDialog(Script &script, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + CodeEditorDialog{tr("Script Properties: %0").arg(script.name), &mainWindow}, m_script{script}, m_projectModel{projectModel}, m_lineEditName{new QLineEdit{this}} diff --git a/src/editor/dialogs/scriptpropertiesdialog.h b/src/editor/dialogs/scriptpropertiesdialog.h index 4b0ac39..f59c1d9 100644 --- a/src/editor/dialogs/scriptpropertiesdialog.h +++ b/src/editor/dialogs/scriptpropertiesdialog.h @@ -3,13 +3,14 @@ class QLineEdit; struct Script; class ProjectTreeModel; +class MainWindow; class ScriptPropertiesDialog : public CodeEditorDialog { Q_OBJECT public: - ScriptPropertiesDialog(Script &script, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + ScriptPropertiesDialog(Script &script, ProjectTreeModel &projectModel, MainWindow &mainWindow); void accept() override; diff --git a/src/editor/dialogs/soundpropertiesdialog.cpp b/src/editor/dialogs/soundpropertiesdialog.cpp index 24e1ace..baf3530 100644 --- a/src/editor/dialogs/soundpropertiesdialog.cpp +++ b/src/editor/dialogs/soundpropertiesdialog.cpp @@ -9,9 +9,10 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" +#include "mainwindow.h" -SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_sound{sound}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/soundpropertiesdialog.h b/src/editor/dialogs/soundpropertiesdialog.h index 7e568a5..1c4c4dd 100644 --- a/src/editor/dialogs/soundpropertiesdialog.h +++ b/src/editor/dialogs/soundpropertiesdialog.h @@ -9,13 +9,14 @@ namespace Ui { class SoundPropertiesDialog; } struct Sound; class ProjectTreeModel; +class MainWindow; class SoundPropertiesDialog : public QDialog { Q_OBJECT public: - explicit SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~SoundPropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/spritepropertiesdialog.cpp b/src/editor/dialogs/spritepropertiesdialog.cpp index 51a17f9..ef74135 100644 --- a/src/editor/dialogs/spritepropertiesdialog.cpp +++ b/src/editor/dialogs/spritepropertiesdialog.cpp @@ -10,9 +10,10 @@ #include "models/projecttreemodel.h" #include "editspritedialog.h" #include "maskpropertiesdialog.h" +#include "mainwindow.h" -SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_sprite{sprite}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/spritepropertiesdialog.h b/src/editor/dialogs/spritepropertiesdialog.h index fc7b2f8..a655d7e 100644 --- a/src/editor/dialogs/spritepropertiesdialog.h +++ b/src/editor/dialogs/spritepropertiesdialog.h @@ -8,13 +8,14 @@ namespace Ui { class SpritePropertiesDialog; } struct Sprite; class ProjectTreeModel; +class MainWindow; class SpritePropertiesDialog : public QDialog { Q_OBJECT public: - explicit SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~SpritePropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/timelinepropertiesdialog.cpp b/src/editor/dialogs/timelinepropertiesdialog.cpp index bfbc594..1e9c777 100644 --- a/src/editor/dialogs/timelinepropertiesdialog.cpp +++ b/src/editor/dialogs/timelinepropertiesdialog.cpp @@ -11,9 +11,10 @@ #include "models/projecttreemodel.h" #include "models/timelinemomentsmodel.h" #include "dialogs/deletemomentsdialog.h" +#include "mainwindow.h" -TimeLinePropertiesDialog::TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTreeModel &projectModel, QWidget *parent) : - QDialog{parent}, +TimeLinePropertiesDialog::TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTreeModel &projectModel, MainWindow &mainWindow) : + QDialog{&mainWindow}, m_ui{std::make_unique()}, m_timeLine{timeLine}, m_projectModel{projectModel}, diff --git a/src/editor/dialogs/timelinepropertiesdialog.h b/src/editor/dialogs/timelinepropertiesdialog.h index b7df03e..9ebe262 100644 --- a/src/editor/dialogs/timelinepropertiesdialog.h +++ b/src/editor/dialogs/timelinepropertiesdialog.h @@ -9,13 +9,14 @@ namespace Ui { class TimeLinePropertiesDialog; } class ProjectTreeModel; class TimelineMomentsModel; +class MainWindow; class TimeLinePropertiesDialog : public QDialog { Q_OBJECT public: - explicit TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTreeModel &projectModel, QWidget *parent = nullptr); + explicit TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTreeModel &projectModel, MainWindow &mainWindow); ~TimeLinePropertiesDialog(); void accept() override; diff --git a/src/editor/dialogs/triggersdialog.ui b/src/editor/dialogs/triggersdialog.ui index 45d1ed5..79678fa 100644 --- a/src/editor/dialogs/triggersdialog.ui +++ b/src/editor/dialogs/triggersdialog.ui @@ -13,6 +13,10 @@ Triggers + + + :/qtgameengine/icons/trigger.png:/qtgameengine/icons/trigger.png + diff --git a/src/editor/icons/included-files.png b/src/editor/icons/included-files.png new file mode 100644 index 0000000..822673e Binary files /dev/null and b/src/editor/icons/included-files.png differ diff --git a/src/editor/icons/trigger.png b/src/editor/icons/trigger.png new file mode 100644 index 0000000..574e309 Binary files /dev/null and b/src/editor/icons/trigger.png differ diff --git a/src/editor/mainwindow.cpp b/src/editor/mainwindow.cpp index 0e60e31..ea68149 100644 --- a/src/editor/mainwindow.cpp +++ b/src/editor/mainwindow.cpp @@ -232,7 +232,7 @@ void MainWindow::openPropertiesWindowFor(T &entry) return; } - auto dialog = new PropertiesDialogFor{entry, *m_projectTreeModel, this}; + auto dialog = new PropertiesDialogFor{entry, *m_projectTreeModel, *this}; auto subwindow = m_ui->mdiArea->addSubWindow(dialog); auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); m_actionGroupWindows->addAction(action); diff --git a/src/editor/mainwindow.h b/src/editor/mainwindow.h index 3052dcf..4cb3e6a 100644 --- a/src/editor/mainwindow.h +++ b/src/editor/mainwindow.h @@ -65,7 +65,9 @@ private slots: void showGlobalGameSettings(); void showExtensionPackages(); void showDefineConstants(); +public slots: void showDefineTriggers(); +private slots: void showIncludedFiles(); void runGame(); void debugGame(); diff --git a/src/editor/mainwindow.ui b/src/editor/mainwindow.ui index 132b8cf..a86dd98 100644 --- a/src/editor/mainwindow.ui +++ b/src/editor/mainwindow.ui @@ -634,6 +634,10 @@ + + + :/qtgameengine/icons/trigger.png:/qtgameengine/icons/trigger.png + &Define Triggers... @@ -642,6 +646,10 @@ + + + :/qtgameengine/icons/included-files.png:/qtgameengine/icons/included-files.png + Inc&luded Files... diff --git a/src/editor/resources_editor.qrc b/src/editor/resources_editor.qrc index 19f3e97..ff651c3 100644 --- a/src/editor/resources_editor.qrc +++ b/src/editor/resources_editor.qrc @@ -49,6 +49,7 @@ icons/grid.png icons/help.png icons/import-resources.png + icons/included-files.png icons/info.png icons/isometric.png icons/lock.png @@ -90,6 +91,7 @@ icons/tile.png icons/timeline-file.png icons/timeline.png + icons/trigger.png icons/undo.png icons/unlock.png icons/blue-arrow-down.png diff --git a/src/editor/widgets/actiondragwidget.cpp b/src/editor/widgets/actiondragwidget.cpp index 2f0f329..9fbb904 100644 --- a/src/editor/widgets/actiondragwidget.cpp +++ b/src/editor/widgets/actiondragwidget.cpp @@ -5,7 +5,6 @@ #include #include -#include "projectcontainer.h" #include "projectserialization.h" #include "stdserialization.h" @@ -39,7 +38,7 @@ void ActionDragWidget::mouseMoveEvent(QMouseEvent *event) QMimeData *mimeData = new QMimeData; QByteArray encoded; QDataStream stream(&encoded, QDataStream::WriteOnly); - stream << Action{ExecuteCodeAction{ .script = "hatschi" }}; + stream << m_action; mimeData->setData("custom", encoded); drag->setMimeData(mimeData); diff --git a/src/editor/widgets/actiondragwidget.h b/src/editor/widgets/actiondragwidget.h index aa1c66b..67edebf 100644 --- a/src/editor/widgets/actiondragwidget.h +++ b/src/editor/widgets/actiondragwidget.h @@ -3,6 +3,8 @@ #include #include +#include "projectcontainer.h" + class ActionDragWidget : public QToolButton { Q_OBJECT @@ -10,10 +12,16 @@ class ActionDragWidget : public QToolButton public: explicit ActionDragWidget(QWidget *parent = nullptr); + const Action &action() const { return m_action; } + void setAction(Action &&action) { m_action = std::move(action); } + void setAction(const Action &action) { m_action = action; } + protected: void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; private: QPoint m_dragStartPosition; + + Action m_action; }; diff --git a/src/projectcontainer.h b/src/projectcontainer.h index f70d9ca..ffba4b5 100644 --- a/src/projectcontainer.h +++ b/src/projectcontainer.h @@ -277,9 +277,14 @@ struct Room std::vector objects; }; +struct IncludedFile { + +}; + struct ProjectContainer { GlobalGameSettings globalGameSettings; + std::list sprites; std::list sounds; std::list backgrounds; @@ -290,6 +295,8 @@ struct ProjectContainer std::list objects; std::list rooms; + std::list includedFiles; + template std::list &containerFor(); template const std::list &containerFor() const; }; diff --git a/src/projectserialization.cpp b/src/projectserialization.cpp index 86dac7b..85e489e 100644 --- a/src/projectserialization.cpp +++ b/src/projectserialization.cpp @@ -408,6 +408,20 @@ QDataStream &operator>>(QDataStream &ds, Room &room) return ds; } +QDataStream &operator<<(QDataStream &ds, const IncludedFile &includedFile) +{ + Q_UNUSED(includedFile); + //ds << includedFile.; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, IncludedFile &includedFile) +{ + Q_UNUSED(includedFile); + //ds >> includedFile.; + return ds; +} + QDataStream &operator<<(QDataStream &ds, const ProjectContainer &project) { ds << project.globalGameSettings @@ -419,7 +433,8 @@ QDataStream &operator<<(QDataStream &ds, const ProjectContainer &project) << project.fonts << project.timeLines << project.objects - << project.rooms; + << project.rooms + << project.includedFiles; return ds; } @@ -434,6 +449,7 @@ QDataStream &operator>>(QDataStream &ds, ProjectContainer &project) >> project.fonts >> project.timeLines >> project.objects - >> project.rooms; + >> project.rooms + >> project.includedFiles; return ds; } diff --git a/src/projectserialization.h b/src/projectserialization.h index 9e20c22..382fdbc 100644 --- a/src/projectserialization.h +++ b/src/projectserialization.h @@ -44,5 +44,7 @@ QDataStream &operator<<(QDataStream &ds, const Room::Object &object); QDataStream &operator>>(QDataStream &ds, Room::Object &object); QDataStream &operator<<(QDataStream &ds, const Room &room); QDataStream &operator>>(QDataStream &ds, Room &room); +QDataStream &operator<<(QDataStream &ds, const IncludedFile &includedFile); +QDataStream &operator>>(QDataStream &ds, IncludedFile &includedFile); QDataStream &operator<<(QDataStream &ds, const ProjectContainer &project);; QDataStream &operator>>(QDataStream &ds, ProjectContainer &project);;