From af0abaa38d1c1ecf0b6df593f60a575a82dc99bd Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 8 Feb 2022 19:11:54 -0500 Subject: [PATCH] Add getIndexOffset, change expected event fields to QSet --- include/core/event.h | 3 ++- src/core/event.cpp | 33 +++++++++++++++++++-------------- src/mainwindow.cpp | 11 ++++------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/include/core/event.h b/include/core/event.h index c6ecb5fd..7a82d5cd 100644 --- a/include/core/event.h +++ b/include/core/event.h @@ -89,6 +89,7 @@ public: static Event* createNewSecretBaseEvent(Project*); static bool isValidType(QString event_type); static QString typeToGroup(QString event_type); + static int getIndexOffset(QString group_type); OrderedJson::object buildObjectEventJSON(); OrderedJson::object buildCloneObjectEventJSON(const QMap &); @@ -101,7 +102,7 @@ public: void setPixmapFromSpritesheet(QImage, int, int, bool); int getPixelX(); int getPixelY(); - QStringList getExpectedFields(); + QSet getExpectedFields(); void readCustomValues(QJsonObject values); void addCustomValuesTo(OrderedJson::object *obj); void setFrameFromMovement(QString); diff --git a/src/core/event.cpp b/src/core/event.cpp index 39dcd8e8..df247559 100644 --- a/src/core/event.cpp +++ b/src/core/event.cpp @@ -195,7 +195,7 @@ int Event::getPixelY() return (this->y() * 16) - qMax(0, this->spriteHeight - 16); } -const QStringList expectedObjectFields = { +const QSet expectedObjectFields = { "graphics_id", "elevation", "movement_type", @@ -207,20 +207,20 @@ const QStringList expectedObjectFields = { "flag", }; -const QStringList expectedCloneObjectFields = { +const QSet expectedCloneObjectFields = { "type", "graphics_id", "target_local_id", "target_map", }; -const QStringList expectedWarpFields = { +const QSet expectedWarpFields = { "elevation", "dest_map", "dest_warp_id", }; -const QStringList expectedTriggerFields = { +const QSet expectedTriggerFields = { "type", "elevation", "var", @@ -228,40 +228,40 @@ const QStringList expectedTriggerFields = { "script", }; -const QStringList expectedWeatherTriggerFields = { +const QSet expectedWeatherTriggerFields = { "type", "elevation", "weather", }; -const QStringList expectedSignFields = { +const QSet expectedSignFields = { "type", "elevation", "player_facing_dir", "script", }; -const QStringList expectedHiddenItemFields = { +const QSet expectedHiddenItemFields = { "type", "elevation", "item", "flag", }; -const QStringList expectedSecretBaseFields = { +const QSet expectedSecretBaseFields = { "type", "elevation", "secret_base_id", }; -QStringList Event::getExpectedFields() +QSet Event::getExpectedFields() { QString type = this->get("event_type"); - QStringList expectedFields = QStringList(); + QSet expectedFields = QSet(); if (type == EventType::Object) { expectedFields = expectedObjectFields; if (projectConfig.getEventCloneObjectEnabled()) { - expectedFields.append("type"); + expectedFields.insert("type"); } } else if (type == EventType::CloneObject) { expectedFields = expectedCloneObjectFields; @@ -276,10 +276,10 @@ QStringList Event::getExpectedFields() } else if (type == EventType::HiddenItem) { expectedFields = expectedHiddenItemFields; if (projectConfig.getHiddenItemQuantityEnabled()) { - expectedFields.append("quantity"); + expectedFields.insert("quantity"); } if (projectConfig.getHiddenItemRequiresItemfinderEnabled()) { - expectedFields.append("underfoot"); + expectedFields.insert("underfoot"); } } else if (type == EventType::SecretBase) { expectedFields = expectedSecretBaseFields; @@ -291,7 +291,7 @@ QStringList Event::getExpectedFields() void Event::readCustomValues(QJsonObject values) { this->customValues.clear(); - QStringList expectedFields = this->getExpectedFields(); + QSet expectedFields = this->getExpectedFields(); for (QString key : values.keys()) { if (!expectedFields.contains(key)) { this->customValues[key] = values[key].toString(); @@ -466,6 +466,11 @@ void Event::setFrameFromMovement(QString facingDir) { } } +// All event groups excepts warps have IDs that start at 1 +int Event::getIndexOffset(QString group_type) { + return (group_type == EventGroup::Warp) ? 0 : 1; +} + bool Event::isValidType(QString event_type) { return EventTypeTable.contains(event_type); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c6cc63f0..33784144 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -719,10 +719,9 @@ void MainWindow::openWarpMap(QString map_name, QString event_id, QString event_g } // Select the target event. - if (event_group != EventGroup::Warp && event_index) - event_index--; + event_index -= Event::getIndexOffset(event_group); QList events = editor->map->events[event_group]; - if (events.length() > event_index) { + if (event_index < events.length() && event_index >= 0) { Event *event = events.at(event_index); for (DraggablePixmapItem *item : editor->getObjects()) { if (item->event == event) { @@ -1946,9 +1945,7 @@ void MainWindow::updateSelectedObjects() { QString event_type = item->event->get("event_type"); QString event_group_type = item->event->get("event_group_type"); QString map_name = item->event->get("map_name"); - int event_offs; - if (event_type == EventType::Warp) { event_offs = 0; } - else { event_offs = 1; } + int event_offs = Event::getIndexOffset(event_group_type); frame->ui->label_name->setText(QString("%1 Id").arg(event_type)); if (events.count() == 1) @@ -2453,7 +2450,7 @@ void MainWindow::eventTabChanged(int index) { void MainWindow::selectedEventIndexChanged(int index) { QString group = getEventGroupFromTabWidget(ui->tabWidget_EventType->currentWidget()); - int event_offs = group == EventGroup::Warp ? 0 : 1; + int event_offs = Event::getIndexOffset(group); Event *event = editor->map->events.value(group).at(index - event_offs); DraggablePixmapItem *selectedEvent = nullptr; for (QGraphicsItem *child : editor->events_group->childItems()) {