#pragma once #include #include #define SOURCE_FILE 0 #define SOURCE_FOLDER 1 // Unitat per a la gestió de l'acces a arxius namespace file { // Funcions d'acces als recursos (gràfics, musiques...) // ----------------------------------------------------------------------------------------------------------- /// @brief Estableix el nom de l'arxiu on estàn guardats els recursos (es "data.jf2" per defecte) /// @param str nom de l'arxiu de recursos void setResourceFilename(const std::string str); /// @brief Estableix el nom de la carpeta on estàn guardats els recursos (es "data" per defecte) /// @param str nom de la carpeta de recursos void setResourceFolder(const std::string str); /// @brief Estableix d'on s'han de obtenir els recursos (arxius individuals dins d'una carpeta o arxiu de recursos) /// @param src SOURCE_FILE o SOURCE_FOLDER, si es vol que se pillen recursos de arxiu o de carpeta void setSource(const int src); /// @brief Obté un "FILE*" al arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos). Recordar tancar-lo al acabar amb ell. /// @param resourcename el nom de l'arxiu que volem obrir /// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu /// @param binary si volem obrir el arxiu en format binary /// @return un punter FILE* al arxiu FILE *getFilePointer(const std::string resourcename, int &filesize, const bool binary = false); /// @brief Obté un buffer de memòria en format "char*" del arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos). /// @brief Recordar alliberar la memoria del buffer amb free(buffer) al acabar amb ell. /// @param resourcename el nom de l'arxiu del que volem obrindre el buffer /// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu /// @return un array de "filesize" bytes amb el contingut del arxiu char *getFileBuffer(const std::string resourcename, int &filesize); // Funcions d'access a la configuració (clau = valor) // ----------------------------------------------------------------------------------------------------------- /// @brief Estableix el nom de la carpeta on es guardarà la configuració /// @param foldername nom de la carpeta void setConfigFolder(const std::string foldername); /// @brief Obté el nom de la carpeta on es guardarà la configuració /// @return nom de la carpeta const std::string getConfigFolder(); /// @brief Obté un valor de l'arxiu de configuració per a la clau donada (o cadena buida si no existeix) /// @param key clau de la que obtindre el valor /// @return el valor de la clau especificada const std::string getConfigValue(const std::string key); /// @brief Estableix un valor en l'arxiu de configuració per a la clau donada /// @param key clau a la que establir un valor /// @param value valor a establir per a la clau void setConfigValue(const std::string key, const std::string value); }