Add getIndexOffset, change expected event fields to QSet

This commit is contained in:
GriffinR 2022-02-08 19:11:54 -05:00 committed by huderlem
parent 300d153849
commit af0abaa38d
3 changed files with 25 additions and 22 deletions

View file

@ -89,6 +89,7 @@ public:
static Event* createNewSecretBaseEvent(Project*); static Event* createNewSecretBaseEvent(Project*);
static bool isValidType(QString event_type); static bool isValidType(QString event_type);
static QString typeToGroup(QString event_type); static QString typeToGroup(QString event_type);
static int getIndexOffset(QString group_type);
OrderedJson::object buildObjectEventJSON(); OrderedJson::object buildObjectEventJSON();
OrderedJson::object buildCloneObjectEventJSON(const QMap<QString, QString> &); OrderedJson::object buildCloneObjectEventJSON(const QMap<QString, QString> &);
@ -101,7 +102,7 @@ public:
void setPixmapFromSpritesheet(QImage, int, int, bool); void setPixmapFromSpritesheet(QImage, int, int, bool);
int getPixelX(); int getPixelX();
int getPixelY(); int getPixelY();
QStringList getExpectedFields(); QSet<QString> getExpectedFields();
void readCustomValues(QJsonObject values); void readCustomValues(QJsonObject values);
void addCustomValuesTo(OrderedJson::object *obj); void addCustomValuesTo(OrderedJson::object *obj);
void setFrameFromMovement(QString); void setFrameFromMovement(QString);

View file

@ -195,7 +195,7 @@ int Event::getPixelY()
return (this->y() * 16) - qMax(0, this->spriteHeight - 16); return (this->y() * 16) - qMax(0, this->spriteHeight - 16);
} }
const QStringList expectedObjectFields = { const QSet<QString> expectedObjectFields = {
"graphics_id", "graphics_id",
"elevation", "elevation",
"movement_type", "movement_type",
@ -207,20 +207,20 @@ const QStringList expectedObjectFields = {
"flag", "flag",
}; };
const QStringList expectedCloneObjectFields = { const QSet<QString> expectedCloneObjectFields = {
"type", "type",
"graphics_id", "graphics_id",
"target_local_id", "target_local_id",
"target_map", "target_map",
}; };
const QStringList expectedWarpFields = { const QSet<QString> expectedWarpFields = {
"elevation", "elevation",
"dest_map", "dest_map",
"dest_warp_id", "dest_warp_id",
}; };
const QStringList expectedTriggerFields = { const QSet<QString> expectedTriggerFields = {
"type", "type",
"elevation", "elevation",
"var", "var",
@ -228,40 +228,40 @@ const QStringList expectedTriggerFields = {
"script", "script",
}; };
const QStringList expectedWeatherTriggerFields = { const QSet<QString> expectedWeatherTriggerFields = {
"type", "type",
"elevation", "elevation",
"weather", "weather",
}; };
const QStringList expectedSignFields = { const QSet<QString> expectedSignFields = {
"type", "type",
"elevation", "elevation",
"player_facing_dir", "player_facing_dir",
"script", "script",
}; };
const QStringList expectedHiddenItemFields = { const QSet<QString> expectedHiddenItemFields = {
"type", "type",
"elevation", "elevation",
"item", "item",
"flag", "flag",
}; };
const QStringList expectedSecretBaseFields = { const QSet<QString> expectedSecretBaseFields = {
"type", "type",
"elevation", "elevation",
"secret_base_id", "secret_base_id",
}; };
QStringList Event::getExpectedFields() QSet<QString> Event::getExpectedFields()
{ {
QString type = this->get("event_type"); QString type = this->get("event_type");
QStringList expectedFields = QStringList(); QSet<QString> expectedFields = QSet<QString>();
if (type == EventType::Object) { if (type == EventType::Object) {
expectedFields = expectedObjectFields; expectedFields = expectedObjectFields;
if (projectConfig.getEventCloneObjectEnabled()) { if (projectConfig.getEventCloneObjectEnabled()) {
expectedFields.append("type"); expectedFields.insert("type");
} }
} else if (type == EventType::CloneObject) { } else if (type == EventType::CloneObject) {
expectedFields = expectedCloneObjectFields; expectedFields = expectedCloneObjectFields;
@ -276,10 +276,10 @@ QStringList Event::getExpectedFields()
} else if (type == EventType::HiddenItem) { } else if (type == EventType::HiddenItem) {
expectedFields = expectedHiddenItemFields; expectedFields = expectedHiddenItemFields;
if (projectConfig.getHiddenItemQuantityEnabled()) { if (projectConfig.getHiddenItemQuantityEnabled()) {
expectedFields.append("quantity"); expectedFields.insert("quantity");
} }
if (projectConfig.getHiddenItemRequiresItemfinderEnabled()) { if (projectConfig.getHiddenItemRequiresItemfinderEnabled()) {
expectedFields.append("underfoot"); expectedFields.insert("underfoot");
} }
} else if (type == EventType::SecretBase) { } else if (type == EventType::SecretBase) {
expectedFields = expectedSecretBaseFields; expectedFields = expectedSecretBaseFields;
@ -291,7 +291,7 @@ QStringList Event::getExpectedFields()
void Event::readCustomValues(QJsonObject values) void Event::readCustomValues(QJsonObject values)
{ {
this->customValues.clear(); this->customValues.clear();
QStringList expectedFields = this->getExpectedFields(); QSet<QString> expectedFields = this->getExpectedFields();
for (QString key : values.keys()) { for (QString key : values.keys()) {
if (!expectedFields.contains(key)) { if (!expectedFields.contains(key)) {
this->customValues[key] = values[key].toString(); 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) { bool Event::isValidType(QString event_type) {
return EventTypeTable.contains(event_type); return EventTypeTable.contains(event_type);
} }

View file

@ -719,10 +719,9 @@ void MainWindow::openWarpMap(QString map_name, QString event_id, QString event_g
} }
// Select the target event. // Select the target event.
if (event_group != EventGroup::Warp && event_index) event_index -= Event::getIndexOffset(event_group);
event_index--;
QList<Event*> events = editor->map->events[event_group]; QList<Event*> 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); Event *event = events.at(event_index);
for (DraggablePixmapItem *item : editor->getObjects()) { for (DraggablePixmapItem *item : editor->getObjects()) {
if (item->event == event) { if (item->event == event) {
@ -1946,9 +1945,7 @@ void MainWindow::updateSelectedObjects() {
QString event_type = item->event->get("event_type"); QString event_type = item->event->get("event_type");
QString event_group_type = item->event->get("event_group_type"); QString event_group_type = item->event->get("event_group_type");
QString map_name = item->event->get("map_name"); QString map_name = item->event->get("map_name");
int event_offs; int event_offs = Event::getIndexOffset(event_group_type);
if (event_type == EventType::Warp) { event_offs = 0; }
else { event_offs = 1; }
frame->ui->label_name->setText(QString("%1 Id").arg(event_type)); frame->ui->label_name->setText(QString("%1 Id").arg(event_type));
if (events.count() == 1) if (events.count() == 1)
@ -2453,7 +2450,7 @@ void MainWindow::eventTabChanged(int index) {
void MainWindow::selectedEventIndexChanged(int index) void MainWindow::selectedEventIndexChanged(int index)
{ {
QString group = getEventGroupFromTabWidget(ui->tabWidget_EventType->currentWidget()); 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); Event *event = editor->map->events.value(group).at(index - event_offs);
DraggablePixmapItem *selectedEvent = nullptr; DraggablePixmapItem *selectedEvent = nullptr;
for (QGraphicsItem *child : editor->events_group->childItems()) { for (QGraphicsItem *child : editor->events_group->childItems()) {