#include "qw_trigger.h" #include #include #include QWTrigger::QWTrigger(const QString &path) { setPos(0, 0); setPixmap(QPixmap(":/res/" + path)); } void QWTrigger::clearEvents() noexcept { list_events.clear(); } void QWTrigger::setEvents(std::initializer_list> &&evs) noexcept { list_events.clear(); /* For some reason QList(::begin(), ::end()) * doesn't work for MSVC */ #if defined(_MSC_VER) list_events = QList>::fromStdList(std::move(evs)); #else list_events = QList(evs.begin(), evs.end()); #endif } void QWTrigger::setEvents(const QList> &evs) noexcept { list_events.clear(); list_events = evs; } void QWTrigger::addEvents(std::initializer_list> &&evs) noexcept { list_events.append(std::move(QList>(evs))); } void QWTrigger::addEvents(const std::shared_ptr &ev) noexcept { list_events.append(ev); } QList> QWTrigger::events() const { return list_events; } void QWTrigger::setCover(qreal x, qreal y, const QString &path) noexcept { pix_path = path; setPixmap(QPixmap(":/res/" + path)); setPos(x, y); } void QWTrigger::setCover(const QString &path) noexcept { pix_path = path; setPixmap(QPixmap(":/res/" + path)); } QString QWTrigger::path() const noexcept { return pix_path; } void QWTrigger::setExaminationDialogueEvent(const std::shared_ptr &dialogue_event) { examination_event = dialogue_event; Q_ASSERT(examination_event); } void QWTrigger::startExaminationDialogue() const { if (examination_event) examination_event->execute(); } void QWTrigger::activate() const { for (const auto &ev : list_events) { Q_ASSERT(ev); ev->execute(); } } //////////////////////// void QWTrigger::writeToJson(QJsonObject &trigger_data) { trigger_data.insert("id", tag()); trigger_data.insert("mask", path()); trigger_data.insert("x", x()); trigger_data.insert("y", y()); trigger_data.insert("examine_dialogue", examination_event->tag()); qDebug() << " The trigger:\n" << " id " << tag() << "\n mask " << tag() << "\n xy " << x() << " " << y() << "\n examine_dialogue " << examination_event->tag(); // - Trigger events - // QJsonArray json_trevents; for (const auto &tr_event : events()) { json_trevents.append(tr_event->tag()); qDebug() << " event: " << tr_event->tag(); } trigger_data.insert("evs", json_trevents); }