Populate hidden item dropdown menu with item constants

This commit is contained in:
Marcus Huderle 2018-03-02 19:56:23 -08:00
parent 38360de140
commit 2bc949612d
3 changed files with 32 additions and 1 deletions

View file

@ -284,6 +284,7 @@ void MainWindow::loadDataStructures() {
Project *project = editor->project;
project->readMapAttributesTable();
project->readAllMapAttributes();
project->readItemNames();
}
void MainWindow::populateMapList() {
@ -644,6 +645,11 @@ void MainWindow::updateSelectedObjects() {
combo->addItem(value);
}
combo->addItems(*editor->project->mapNames);
} else if (key == "item") {
if (!editor->project->itemNames->contains(value)) {
combo->addItem(value);
}
combo->addItems(*editor->project->itemNames);
} else {
combo->addItem(value);
}

View file

@ -18,6 +18,7 @@ Project::Project()
groupNames = new QStringList;
map_groups = new QMap<QString, int>;
mapNames = new QStringList;
itemNames = new QStringList;
map_cache = new QMap<QString, Map*>;
mapConstantsToMapNames = new QMap<QString, QString>;
mapNamesToMapConstants = new QMap<QString, QString>;
@ -1062,6 +1063,29 @@ QStringList Project::getBattleScenes() {
return names;
}
void Project::readItemNames() {
QString text = readTextFile(root + "/include/constants/items.h");
if (!text.isNull()) {
QStringList itemDefinePrefixes;
itemDefinePrefixes << "ITEM_";
QMap<QString, int> itemDefines = readCDefines(text, itemDefinePrefixes);
// The item names should to be sorted by their underlying value, not alphabetically.
// Reverse the map and read out the resulting keys in order.
QMultiMap<int, QString> itemDefinesInverse;
for (QString itemName : itemDefines.keys()) {
itemDefinesInverse.insert(itemDefines[itemName], itemName);
}
for (int itemValue : itemDefinesInverse.keys()) {
QList<QString> names = itemDefinesInverse.values(itemValue);
for (QString name : names) {
itemNames->append(name);
}
}
}
}
QStringList Project::getSongNames() {
QStringList names;
QString text = readTextFile(root + "/include/constants/songs.h");

View file

@ -23,7 +23,7 @@ public:
QMap<int, QString> mapAttributesTableMaster;
QMap<QString, QMap<QString, QString>> mapAttributes;
QMap<QString, QMap<QString, QString>> mapAttributesMaster;
QStringList *itemNames = NULL;
QMap<QString, Map*> *map_cache;
Map* loadMap(QString);
@ -73,6 +73,7 @@ public:
QStringList getWeathers();
QStringList getMapTypes();
QStringList getBattleScenes();
void readItemNames();
void loadObjectPixmaps(QList<Event*> objects);
QMap<QString, int> getMapObjGfxConstants();