Merge remote-tracking branch 'tustin/path-in-config'

# Conflicts:
#	docsrc/manual/settings-and-options.rst
#	include/config.h
#	src/config.cpp
#	src/scriptapi/apimap.cpp
#	src/scriptapi/scripting.cpp
This commit is contained in:
Marcus Huderle
2022-09-25 10:02:24 -05:00
9 changed files with 343 additions and 128 deletions

View File

@@ -13,6 +13,8 @@
#define DEFAULT_BORDER_RSE (QList<int>{468, 469, 476, 477})
#define DEFAULT_BORDER_FRLG (QList<int>{20, 21, 28, 29})
#define CONFIG_BACKWARDS_COMPATABILITY
enum MapSortOrder {
Group = 0,
Area = 1,
@@ -138,6 +140,50 @@ enum BaseGameVersion {
pokeemerald,
};
enum ProjectFilePath {
data_map_folders,
data_scripts_folders,
data_layouts_folders,
data_event_scripts,
json_map_groups,
json_layouts,
json_wild_encounters,
json_region_map_entries,
json_region_porymap_cfg,
tilesets_headers,
tilesets_graphics,
tilesets_metatiles,
data_obj_event_gfx_pointers,
data_obj_event_gfx_info,
data_obj_event_pic_tables,
data_obj_event_gfx,
data_pokemon_gfx,
data_heal_locations,
data_region_map_entries,
constants_global,
constants_map_groups,
constants_items,
constants_opponents,
constants_flags,
constants_vars,
constants_weather,
constants_songs,
constants_heal_locations,
constants_pokemon,
constants_map_types,
constants_trainer_types,
constants_secret_bases,
constants_obj_event_movement,
constants_obj_events,
constants_event_bg,
constants_region_map_sections,
constants_metatile_labels,
constants_metatile_behaviors,
constants_fieldmap,
path_initial_facing_table,
path_pokemon_icon_table,
};
class ProjectConfig: public KeyValueConfigBase
{
public:
@@ -146,8 +192,6 @@ public:
}
virtual void reset() override {
this->baseGameVersion = BaseGameVersion::pokeemerald;
this->recentMap = QString();
this->useEncounterJson = true;
this->useCustomBorderSize = false;
this->enableEventWeatherTrigger = true;
this->enableEventSecretBase = true;
@@ -163,16 +207,12 @@ public:
this->newMapBorderMetatileIds = DEFAULT_BORDER_RSE;
this->prefabFilepath = QString();
this->prefabImportPrompted = false;
this->customScripts.clear();
this->filePaths.clear();
this->readKeys.clear();
}
void setBaseGameVersion(BaseGameVersion baseGameVersion);
BaseGameVersion getBaseGameVersion();
QString getBaseGameVersionString();
void setRecentMap(const QString &map);
QString getRecentMap();
void setEncounterJsonActive(bool active);
bool getEncounterJsonActive();
void setUsePoryScript(bool usePoryScript);
bool getUsePoryScript();
void setProjectDir(QString projectDir);
@@ -203,8 +243,8 @@ public:
int getNewMapElevation();
void setNewMapBorderMetatileIds(QList<int> metatileIds);
QList<int> getNewMapBorderMetatileIds();
void setCustomScripts(QList<QString> scripts);
QList<QString> getCustomScripts();
void setFilePath(ProjectFilePath pathId, QString path);
QString getFilePath(ProjectFilePath pathId);
void setPrefabFilepath(QString filepath);
QString getPrefabFilepath(bool setIfEmpty);
void setPrefabImportPrompted(bool prompted);
@@ -218,8 +258,7 @@ protected:
private:
BaseGameVersion baseGameVersion;
QString projectDir;
QString recentMap;
bool useEncounterJson;
QMap<ProjectFilePath, QString> filePaths;
bool usePoryScript;
bool useCustomBorderSize;
bool enableEventWeatherTrigger;
@@ -234,7 +273,6 @@ private:
int newMapMetatileId;
int newMapElevation;
QList<int> newMapBorderMetatileIds;
QList<QString> customScripts;
QStringList readKeys;
QString prefabFilepath;
bool prefabImportPrompted;
@@ -242,6 +280,45 @@ private:
extern ProjectConfig projectConfig;
class UserConfig: public KeyValueConfigBase
{
public:
UserConfig() {
reset();
}
virtual void reset() override {
this->recentMap = QString();
this->useEncounterJson = true;
this->customScripts.clear();
this->readKeys.clear();
}
void setRecentMap(const QString &map);
QString getRecentMap();
void setEncounterJsonActive(bool active);
bool getEncounterJsonActive();
void setProjectDir(QString projectDir);
QString getProjectDir();
void setCustomScripts(QList<QString> scripts);
QList<QString> getCustomScripts();
protected:
virtual QString getConfigFilepath() override;
virtual void parseConfigKeyValue(QString key, QString value) override;
virtual QMap<QString, QString> getKeyValueMap() override;
virtual void onNewConfigFileCreated() override;
virtual void setUnreadKeys() override;
#ifdef CONFIG_BACKWARDS_COMPATABILITY
friend class ProjectConfig;
#endif
private:
QString projectDir;
QString recentMap;
bool useEncounterJson;
QList<QString> customScripts;
QStringList readKeys;
};
extern UserConfig userConfig;
class QAction;
class Shortcut;