afegits metodes per a poder ciclar presets i altres opcions
esc en el joc + menu ja no tanca la app
This commit is contained in:
@@ -34,22 +34,22 @@ struct keyvalue_t {
|
||||
std::string key, value;
|
||||
};
|
||||
|
||||
char *resource_filename = NULL;
|
||||
char *resource_folder = NULL;
|
||||
char* resource_filename = NULL;
|
||||
char* resource_folder = NULL;
|
||||
int file_source = SOURCE_FILE;
|
||||
char scratch[255];
|
||||
static std::string config_folder;
|
||||
std::vector<keyvalue_t> config;
|
||||
|
||||
void file_setresourcefilename(const char *str) {
|
||||
void file_setresourcefilename(const char* str) {
|
||||
if (resource_filename != NULL) free(resource_filename);
|
||||
resource_filename = (char *)malloc(strlen(str) + 1);
|
||||
resource_filename = (char*)malloc(strlen(str) + 1);
|
||||
strcpy(resource_filename, str);
|
||||
}
|
||||
|
||||
void file_setresourcefolder(const char *str) {
|
||||
void file_setresourcefolder(const char* str) {
|
||||
if (resource_folder != NULL) free(resource_folder);
|
||||
resource_folder = (char *)malloc(strlen(str) + 1);
|
||||
resource_folder = (char*)malloc(strlen(str) + 1);
|
||||
strcpy(resource_folder, str);
|
||||
}
|
||||
|
||||
@@ -66,16 +66,16 @@ bool file_getdictionary() {
|
||||
char header[4];
|
||||
fi.read(header, 4);
|
||||
uint32_t num_files, toc_offset;
|
||||
fi.read((char *)&num_files, 4);
|
||||
fi.read((char *)&toc_offset, 4);
|
||||
fi.read((char*)&num_files, 4);
|
||||
fi.read((char*)&toc_offset, 4);
|
||||
fi.seekg(toc_offset);
|
||||
|
||||
for (uint32_t i = 0; i < num_files; ++i) {
|
||||
uint32_t file_offset, file_size;
|
||||
fi.read((char *)&file_offset, 4);
|
||||
fi.read((char *)&file_size, 4);
|
||||
fi.read((char*)&file_offset, 4);
|
||||
fi.read((char*)&file_size, 4);
|
||||
uint8_t path_size;
|
||||
fi.read((char *)&path_size, 1);
|
||||
fi.read((char*)&path_size, 1);
|
||||
char file_name[path_size + 1];
|
||||
fi.read(file_name, path_size);
|
||||
file_name[path_size] = 0;
|
||||
@@ -86,18 +86,18 @@ bool file_getdictionary() {
|
||||
return true;
|
||||
}
|
||||
|
||||
char *file_getfilenamewithfolder(const char *filename) {
|
||||
char* file_getfilenamewithfolder(const char* filename) {
|
||||
strcpy(scratch, resource_folder);
|
||||
strcat(scratch, filename);
|
||||
return scratch;
|
||||
}
|
||||
|
||||
FILE *file_getfilepointer(const char *resourcename, int &filesize, const bool binary) {
|
||||
FILE* file_getfilepointer(const char* resourcename, int& filesize, const bool binary) {
|
||||
if (file_source == SOURCE_FILE and toc.size() == 0) {
|
||||
if (not file_getdictionary()) file_setsource(SOURCE_FOLDER);
|
||||
}
|
||||
|
||||
FILE *f;
|
||||
FILE* f;
|
||||
|
||||
if (file_source == SOURCE_FILE) {
|
||||
bool found = false;
|
||||
@@ -129,9 +129,9 @@ FILE *file_getfilepointer(const char *resourcename, int &filesize, const bool bi
|
||||
return f;
|
||||
}
|
||||
|
||||
char *file_getfilebuffer(const char *resourcename, int &filesize, const bool zero_terminate) {
|
||||
FILE *f = file_getfilepointer(resourcename, filesize, true);
|
||||
char *buffer = (char *)malloc(zero_terminate ? filesize : filesize + 1);
|
||||
char* file_getfilebuffer(const char* resourcename, int& filesize, const bool zero_terminate) {
|
||||
FILE* f = file_getfilepointer(resourcename, filesize, true);
|
||||
char* buffer = (char*)malloc(zero_terminate ? filesize : filesize + 1);
|
||||
fread(buffer, filesize, 1, f);
|
||||
if (zero_terminate) buffer[filesize] = 0;
|
||||
fclose(f);
|
||||
@@ -140,23 +140,23 @@ char *file_getfilebuffer(const char *resourcename, int &filesize, const bool zer
|
||||
|
||||
// Crea la carpeta del sistema donde guardar datos.
|
||||
// Acepta rutas con subdirectorios (ej: "jailgames/aee") y crea toda la jerarquía.
|
||||
void file_setconfigfolder(const char *foldername) {
|
||||
void file_setconfigfolder(const char* foldername) {
|
||||
#ifdef _WIN32
|
||||
config_folder = std::string(getenv("APPDATA")) + "/" + foldername;
|
||||
#elif __APPLE__
|
||||
struct passwd *pw = getpwuid(getuid());
|
||||
const char *homedir = pw->pw_dir;
|
||||
struct passwd* pw = getpwuid(getuid());
|
||||
const char* homedir = pw->pw_dir;
|
||||
config_folder = std::string(homedir) + "/Library/Application Support/" + foldername;
|
||||
#elif __linux__
|
||||
struct passwd *pw = getpwuid(getuid());
|
||||
const char *homedir = pw->pw_dir;
|
||||
struct passwd* pw = getpwuid(getuid());
|
||||
const char* homedir = pw->pw_dir;
|
||||
config_folder = std::string(homedir) + "/.config/" + foldername;
|
||||
#endif
|
||||
|
||||
std::filesystem::create_directories(config_folder);
|
||||
}
|
||||
|
||||
const char *file_getconfigfolder() {
|
||||
const char* file_getconfigfolder() {
|
||||
static std::string folder;
|
||||
folder = config_folder + "/";
|
||||
return folder.c_str();
|
||||
@@ -165,12 +165,12 @@ const char *file_getconfigfolder() {
|
||||
void file_loadconfigvalues() {
|
||||
config.clear();
|
||||
std::string config_file = config_folder + "/config.txt";
|
||||
FILE *f = fopen(config_file.c_str(), "r");
|
||||
FILE* f = fopen(config_file.c_str(), "r");
|
||||
if (!f) return;
|
||||
|
||||
char line[1024];
|
||||
while (fgets(line, sizeof(line), f)) {
|
||||
char *value = strchr(line, '=');
|
||||
char* value = strchr(line, '=');
|
||||
if (value) {
|
||||
*value = '\0';
|
||||
value++;
|
||||
@@ -183,7 +183,7 @@ void file_loadconfigvalues() {
|
||||
|
||||
void file_saveconfigvalues() {
|
||||
std::string config_file = config_folder + "/config.txt";
|
||||
FILE *f = fopen(config_file.c_str(), "w");
|
||||
FILE* f = fopen(config_file.c_str(), "w");
|
||||
if (f) {
|
||||
for (auto pair : config) {
|
||||
fprintf(f, "%s=%s\n", pair.key.c_str(), pair.value.c_str());
|
||||
@@ -192,7 +192,7 @@ void file_saveconfigvalues() {
|
||||
}
|
||||
}
|
||||
|
||||
const char *file_getconfigvalue(const char *key) {
|
||||
const char* file_getconfigvalue(const char* key) {
|
||||
if (config.empty()) file_loadconfigvalues();
|
||||
for (auto pair : config) {
|
||||
if (pair.key == std::string(key)) {
|
||||
@@ -203,9 +203,9 @@ const char *file_getconfigvalue(const char *key) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void file_setconfigvalue(const char *key, const char *value) {
|
||||
void file_setconfigvalue(const char* key, const char* value) {
|
||||
if (config.empty()) file_loadconfigvalues();
|
||||
for (auto &pair : config) {
|
||||
for (auto& pair : config) {
|
||||
if (pair.key == std::string(key)) {
|
||||
pair.value = value;
|
||||
file_saveconfigvalues();
|
||||
|
||||
Reference in New Issue
Block a user