Fix flags being listed out of order

This commit is contained in:
GriffinR 2020-07-13 16:36:43 -04:00 committed by huderlem
parent 70b8806737
commit 00ad1ec22a
4 changed files with 16 additions and 10 deletions

View file

@ -29,6 +29,7 @@ to a file, it probably is not a good idea to edit yourself unless otherwise note
include/constants/global.h, yes, no,
include/constants/map_groups.h, no, yes,
include/constants/items.h, yes, no,
include/constants/opponents.h, yes, no, reads max trainers constant
include/constants/flags.h, yes, no,
include/constants/vars.h, yes, no,
include/constants/weather.h, yes, no,

View file

@ -47,8 +47,8 @@ public:
QStringList readCArray(QString text, QString label);
QMap<QString, QString> readNamedIndexCArray(QString text, QString label);
QString readCIncbin(QString text, QString label);
QMap<QString, int> readCDefines(QString filename, QStringList prefixes);
void readCDefinesSorted(QString, QStringList, QStringList*);
QMap<QString, int> readCDefines(QString filename, QStringList prefixes, QMap<QString, int> = QMap<QString, int>());
void readCDefinesSorted(QString, QStringList, QStringList*, QMap<QString, int> = QMap<QString, int>());
QList<QStringList>* getLabelMacros(QList<QStringList>*, QString);
QStringList* getLabelValues(QList<QStringList>*, QString);
bool tryParseJsonFile(QJsonDocument *out, QString filepath);

View file

@ -252,8 +252,7 @@ QString ParseUtil::readCIncbin(QString filename, QString label) {
return path;
}
QMap<QString, int> ParseUtil::readCDefines(QString filename, QStringList prefixes) {
QMap<QString, int> allDefines;
QMap<QString, int> ParseUtil::readCDefines(QString filename, QStringList prefixes, QMap<QString, int> allDefines) {
QMap<QString, int> filteredDefines;
file = filename;
@ -293,8 +292,8 @@ QMap<QString, int> ParseUtil::readCDefines(QString filename, QStringList prefixe
return filteredDefines;
}
void ParseUtil::readCDefinesSorted(QString filename, QStringList prefixes, QStringList* definesToSet) {
QMap<QString, int> defines = readCDefines(filename, prefixes);
void ParseUtil::readCDefinesSorted(QString filename, QStringList prefixes, QStringList* definesToSet, QMap<QString, int> knownDefines) {
QMap<QString, int> defines = readCDefines(filename, prefixes, knownDefines);
// The defines should to be sorted by their underlying value, not alphabetically.
// Reverse the map and read out the resulting keys in order.

View file

@ -2171,13 +2171,19 @@ bool Project::readItemNames() {
}
bool Project::readFlagNames() {
// First read MAX_TRAINERS_COUNT, used to skip over trainer flags
// If this fails flags may simply be out of order, no need to check for success
QString opponentsFilename = "include/constants/opponents.h";
fileWatcher.addPath(root + "/" + opponentsFilename);
QMap<QString, int> maxTrainers = parser.readCDefines(opponentsFilename, QStringList() << "MAX_");
// Parse flags
flagNames->clear();
QStringList prefixes = (QStringList() << "FLAG_");
QString filename = "include/constants/flags.h";
fileWatcher.addPath(root + "/" + filename);
parser.readCDefinesSorted(filename, prefixes, flagNames);
QString flagsFilename = "include/constants/flags.h";
fileWatcher.addPath(root + "/" + flagsFilename);
parser.readCDefinesSorted(flagsFilename, prefixes, flagNames, maxTrainers);
if (flagNames->isEmpty()) {
logError(QString("Failed to read flag constants from %1").arg(filename));
logError(QString("Failed to read flag constants from %1").arg(flagsFilename));
return false;
}
return true;