#ifndef CONFIG_H #define CONFIG_H #include #include enum MapSortOrder { Group = 0, Area = 1, Layout = 2, }; class KeyValueConfigBase : public QObject { public: void save(); void load(); virtual ~KeyValueConfigBase(); protected: virtual QString getConfigFilepath() = 0; virtual void parseConfigKeyValue(QString key, QString value) = 0; virtual QMap getKeyValueMap() = 0; virtual void onNewConfigFileCreated() = 0; }; class PorymapConfig: public KeyValueConfigBase { public: PorymapConfig() { this->recentProject = ""; this->recentMap = ""; this->mapSortOrder = MapSortOrder::Group; this->prettyCursors = true; } void setRecentProject(QString project); void setRecentMap(QString map); void setMapSortOrder(MapSortOrder order); void setPrettyCursors(bool enabled); QString getRecentProject(); QString getRecentMap(); MapSortOrder getMapSortOrder(); bool getPrettyCursors(); protected: QString getConfigFilepath(); void parseConfigKeyValue(QString key, QString value); QMap getKeyValueMap(); void onNewConfigFileCreated() {} private: QString recentProject; QString recentMap; MapSortOrder mapSortOrder; bool prettyCursors; }; extern PorymapConfig porymapConfig; enum BaseGameVersion { pokeruby, pokeemerald, }; class ProjectConfig: public KeyValueConfigBase { public: ProjectConfig() { this->baseGameVersion = BaseGameVersion::pokeemerald; } void setBaseGameVersion(BaseGameVersion baseGameVersion); BaseGameVersion getBaseGameVersion(); void setProjectDir(QString projectDir); protected: QString getConfigFilepath(); void parseConfigKeyValue(QString key, QString value); QMap getKeyValueMap(); void onNewConfigFileCreated(); private: BaseGameVersion baseGameVersion; QString projectDir; }; extern ProjectConfig projectConfig; #endif // CONFIG_H