Add completion suggestions for global event scripts

This commit is contained in:
BigBahss 2021-01-29 22:05:40 -05:00
parent d2386fac9b
commit 3ccf433d1e
3 changed files with 28 additions and 3 deletions

View file

@ -60,6 +60,7 @@ public:
QStringList *secretBaseIds = nullptr; QStringList *secretBaseIds = nullptr;
QStringList *bgEventFacingDirections = nullptr; QStringList *bgEventFacingDirections = nullptr;
QStringList *trainerTypes = nullptr; QStringList *trainerTypes = nullptr;
QStringList eventScriptLabels;
QMap<QString, int> metatileBehaviorMap; QMap<QString, int> metatileBehaviorMap;
QMap<int, QString> metatileBehaviorMapInverse; QMap<int, QString> metatileBehaviorMapInverse;
QMap<QString, QString> facingDirections; QMap<QString, QString> facingDirections;
@ -167,6 +168,7 @@ public:
bool readMetatileBehaviors(); bool readMetatileBehaviors();
bool readHealLocations(); bool readHealLocations();
bool readMiscellaneousConstants(); bool readMiscellaneousConstants();
bool readEventScriptLabels();
void loadEventPixmaps(QList<Event*> objects); void loadEventPixmaps(QList<Event*> objects);
QMap<QString, int> getEventObjGfxConstants(); QMap<QString, int> getEventObjGfxConstants();
@ -177,6 +179,7 @@ public:
QString getScriptDefaultString(bool usePoryScript, QString mapName) const; QString getScriptDefaultString(bool usePoryScript, QString mapName) const;
QString getMapScriptsFilePath(const QString &mapName) const; QString getMapScriptsFilePath(const QString &mapName) const;
QStringList getEventScriptsFilePaths() const; QStringList getEventScriptsFilePaths() const;
QCompleter *getEventScriptLabelCompleter(const QStringList &additionalCompletions) const;
bool loadMapBorder(Map *map); bool loadMapBorder(Map *map);
@ -220,6 +223,8 @@ private:
static int max_object_events; static int max_object_events;
QWidget *parent; QWidget *parent;
QStringListModel *eventScriptLabelModel = nullptr;
QCompleter *eventScriptLabelCompleter = nullptr;
signals: signals:
void reloadProject(); void reloadProject();

View file

@ -876,8 +876,9 @@ bool MainWindow::loadDataStructures() {
&& project->readHealLocations() && project->readHealLocations()
&& project->readMiscellaneousConstants() && project->readMiscellaneousConstants()
&& project->readSpeciesIconPaths() && project->readSpeciesIconPaths()
&& project->readWildMonData(); && project->readWildMonData()
&& project->readEventScriptLabels();
return success && loadProjectCombos(); return success && loadProjectCombos();
} }
@ -1917,7 +1918,9 @@ void MainWindow::updateSelectedObjects() {
"normal movement behavior actions."); "normal movement behavior actions.");
combo->setMinimumContentsLength(4); combo->setMinimumContentsLength(4);
} else if (key == "script_label") { } else if (key == "script_label") {
combo->addItems(editor->map->eventScriptLabels()); const auto localScriptLabels = editor->map->eventScriptLabels();
combo->addItems(localScriptLabels);
combo->setCompleter(editor->project->getEventScriptLabelCompleter(localScriptLabels));
combo->setToolTip("The script which is executed with this event."); combo->setToolTip("The script which is executed with this event.");
} else if (key == "trainer_type") { } else if (key == "trainer_type") {
combo->addItems(*editor->project->trainerTypes); combo->addItems(*editor->project->trainerTypes);

View file

@ -2399,6 +2399,18 @@ bool Project::readMiscellaneousConstants() {
return true; return true;
} }
bool Project::readEventScriptLabels() {
for (const auto &filePath : getEventScriptsFilePaths())
eventScriptLabels << ParseUtil::getGlobalScriptLabels(filePath);
eventScriptLabelModel = new QStringListModel(eventScriptLabels, this);
eventScriptLabelCompleter = new QCompleter(eventScriptLabelModel, this);
eventScriptLabelCompleter->setCaseSensitivity(Qt::CaseInsensitive);
eventScriptLabelCompleter->setFilterMode(Qt::MatchContains);
return true;
}
QString Project::fixPalettePath(QString path) { QString Project::fixPalettePath(QString path) {
path = path.replace(QRegExp("\\.gbapal$"), ".pal"); path = path.replace(QRegExp("\\.gbapal$"), ".pal");
return path; return path;
@ -2462,6 +2474,11 @@ QStringList Project::getEventScriptsFilePaths() const {
return filePaths; return filePaths;
} }
QCompleter *Project::getEventScriptLabelCompleter(const QStringList &additionalCompletions) const {
eventScriptLabelModel->setStringList(eventScriptLabels + additionalCompletions);
return eventScriptLabelCompleter;
}
void Project::loadEventPixmaps(QList<Event*> objects) { void Project::loadEventPixmaps(QList<Event*> objects) {
bool needs_update = false; bool needs_update = false;
for (Event *object : objects) { for (Event *object : objects) {