#ifndef _SYSTEMDATA_H_ #define _SYSTEMDATA_H_ #include #include #include "FolderData.h" #include "Window.h" #include "MetaData.h" #include "PlatformId.h" class GameData; class SystemData { public: SystemData(const std::string& name, const std::string& fullName, const std::string& startPath, const std::vector& extensions, const std::string& command, PlatformIds::PlatformId platformId = PlatformIds::PLATFORM_UNKNOWN); ~SystemData(); FolderData* getRootFolder(); std::string getName(); std::string getFullName(); std::string getStartPath(); std::vector getExtensions(); PlatformIds::PlatformId getPlatformId(); std::string getGamelistPath(); bool hasGamelist(); std::vector getGameMDD(); unsigned int getGameCount(); void launchGame(Window* window, GameData* game); static void deleteSystems(); static bool loadConfig(const std::string& path, bool writeExampleIfNonexistant = true); //Load the system config file at getConfigPath(). Returns true if no errors were encountered. An example can be written if the file doesn't exist. static void writeExampleConfig(const std::string& path); static std::string getConfigPath(); static std::vector sSystemVector; private: std::string mName; std::string mFullName; std::string mStartPath; std::vector mSearchExtensions; std::string mLaunchCommand; PlatformIds::PlatformId mPlatformId; void populateFolder(FolderData* folder); FolderData* mRootFolder; }; #endif