From 02b0bc94c57969f253517ad1295a18e98060fc44 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 3 Jul 2022 11:03:35 -0500 Subject: [PATCH] Make obj event gfx parsing backwards compatible --- src/project.cpp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/project.cpp b/src/project.cpp index 39e55150..beda1e79 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -2530,12 +2530,32 @@ QMap> Project::readObjEventGfxInfo() { QMap> gfxInfos; for (auto it = gfxInfoObjects.begin(); it != gfxInfoObjects.end(); it++) { QMap values; + int i = 0; for (const fex::ArrayValue &v : it->second.values()) { - if (v.type() != fex::ArrayValue::Type::kValuePair) - continue; - QString key = QString::fromStdString(v.pair().first); - QString value = QString::fromStdString(v.pair().second->string_value()); - values.insert(key, value); + if (v.type() == fex::ArrayValue::Type::kValuePair) { + QString key = QString::fromStdString(v.pair().first); + QString value = QString::fromStdString(v.pair().second->string_value()); + values.insert(key, value); + } else { + // This is for backwards compatibility with the old-style version of + // object_event_graphics_info.h, in which the structs didn't use + // attribute names to specify each struct member. + switch (i) { + case 8: + values.insert("inanimate", QString::fromStdString(v.string_value())); + break; + case 11: + values.insert("oam", QString::fromStdString(v.string_value())); + break; + case 12: + values.insert("subspriteTables", QString::fromStdString(v.string_value())); + break; + case 14: + values.insert("images", QString::fromStdString(v.string_value())); + break; + } + } + i++; } gfxInfos.insert(QString::fromStdString(it->first), values); }