- [NEW] Afegides funcions pa guardar i carregar del arxiu de configuració enters, floats i bools, a més de cadenes que ja estaven.

- [NEW] Ja guarda i recupera la configuració de zoom, fullscreen i shader.
This commit is contained in:
2025-07-02 10:26:08 +02:00
parent b403dbad52
commit 4670b52378
4 changed files with 59 additions and 9 deletions

View File

@@ -120,7 +120,8 @@ namespace draw
// Inicialització de tot el que fa falta per a carregar gràfics i pintar en pantalla
void init(const char *titol, const uint16_t width, const uint16_t height, const int zoom, const bool fullscreen, const float ratio)
{
screen_zoom = zoom;
screen_zoom = file::getConfigValueInteger("zoom", zoom);
screen_fullscreen = file::getConfigValueBool("fullscreen", fullscreen);
window_ratio = ratio;
canvas_width = width;
canvas_height = height;
@@ -195,8 +196,7 @@ namespace draw
screen_zoom = value;
destroyDisplay();
createDisplay();
char strzoom[3];
file::setConfigValue("zoom", SDL_itoa(screen_zoom, strzoom, 10));
file::setConfigValueInteger("zoom", screen_zoom);
}
const int getZoom()
@@ -232,7 +232,7 @@ namespace draw
screen_fullscreen=value;
destroyDisplay();
createDisplay();
file::setConfigValue("fullscreen", screen_fullscreen?"true":"false");
file::setConfigValueBool("fullscreen", screen_fullscreen);
}
void loadShader()
@@ -253,6 +253,7 @@ namespace draw
screen_shader = (char*)malloc(strlen(shader_file)+1);
strcpy(screen_shader, shader_file);
loadShader();
if (file::getConfigValueBool("shader_enabled", false)) enableShader();
}
void enableShader()
@@ -261,6 +262,7 @@ namespace draw
shader::enable();
//destroyDisplay();
//createDisplay();
file::setConfigValueBool("shader_enabled", shader_enabled);
}
void disableShader()
@@ -269,6 +271,7 @@ namespace draw
shader::disable();
//destroyDisplay();
//createDisplay();
file::setConfigValueBool("shader_enabled", shader_enabled);
}
void toggleShader()

View File

@@ -207,7 +207,7 @@ namespace file
}
}
const char* getConfigValue(const char *key) {
const char* getConfigValueString(const char *key) {
if (config.empty()) loadConfigValues();
for (auto pair : config) {
if (pair.key == std::string(key)) {
@@ -218,7 +218,28 @@ namespace file
return NULL;
}
void setConfigValue(const char* key, const char* value) {
const int getConfigValueInteger(const char *key, const int default_value)
{
const char* value = getConfigValueString(key);
if (!value) return default_value;
return atoi(value);
}
const float getConfigValueFloat(const char *key, const float default_value)
{
const char* value = getConfigValueString(key);
if (!value) return default_value;
return atof(value);
}
const bool getConfigValueBool(const char *key, const bool default_value)
{
const char* value = getConfigValueString(key);
if (!value) return default_value;
return strcmp(value, "true")==0?true:false;
}
void setConfigValueString(const char* key, const char* value) {
if (config.empty()) loadConfigValues();
for (auto &pair : config) {
if (pair.key == std::string(key)) {
@@ -231,4 +252,24 @@ namespace file
saveConfigValues();
return;
}
void setConfigValueInteger(const char* key, const int value)
{
char tmp[256];
sprintf(tmp, "%i", value);
setConfigValueString(key, tmp);
}
void setConfigValueFloat(const char* key, const float value)
{
char tmp[256];
sprintf(tmp, "%.2f", value);
setConfigValueString(key, tmp);
}
void setConfigValueBool(const char* key, const bool value)
{
setConfigValueString(key, value?"true":"false");
}
}

View File

@@ -16,6 +16,12 @@ namespace file
FILE *getFilePointer(const char *resourcename, int& filesize, const bool binary=false);
char *getFileBuffer(const char *resourcename, int& filesize, const bool zero_terminate=false);
const char* getConfigValue(const char *key);
void setConfigValue(const char* key, const char* value);
const char* getConfigValueString(const char *key);
const int getConfigValueInteger(const char *key, const int default_value=0);
const float getConfigValueFloat(const char *key, const float default_value=0.0f);
const bool getConfigValueBool(const char *key, const bool default_value=false);
void setConfigValueString(const char* key, const char* value);
void setConfigValueInteger(const char* key, const int value);
void setConfigValueFloat(const char* key, const float value);
void setConfigValueBool(const char* key, const bool value);
}

View File

@@ -4,13 +4,13 @@
void game::init()
{
file::setConfigFolder("arounders");
draw::init("Arounders", 320, 200, 3, false, 3.0f/4.0f);
draw::setShader("gbc.glsl");
draw::setTrans(0);
audio::init(48000, SDL_AUDIO_S16, 2);
draw::hideCursor();
file::setConfigFolder("arounders");
font::init();
game::setUpdateTicks(16);