cave-story-solaris/src/Config.cpp
Gabriel Ravier 564d42dbd2 src: Change from using asprintf-based code to using std::string-based code
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-06-29 18:33:22 +02:00

72 lines
1.8 KiB
C++

#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "WindowsWrapper.h"
#include "Config.h"
#include "File.h"
#include "Main.h"
const char* const gConfigName = "Config.dat";
const char* const gProof = "DOUKUTSU20041206";
BOOL LoadConfigData(CONFIG *conf)
{
// Clear old configuration data
memset(conf, 0, sizeof(CONFIG));
// Open file
FILE *fp = fopen((gModulePath + '/' + gConfigName).c_str(), "rb");
if (fp == NULL)
return FALSE;
// Read the version id and font name
fread(conf->proof, sizeof(conf->proof), 1, fp);
fread(conf->font_name, sizeof(conf->font_name), 1, fp);
// Read control settings
conf->move_button_mode = File_ReadLE32(fp);
conf->attack_button_mode = File_ReadLE32(fp);
conf->ok_button_mode = File_ReadLE32(fp);
// Read display mode (320x240, 640x480, 24-bit fullscreen, 32-bit fullscreen) TODO: add more things?
conf->display_mode = File_ReadLE32(fp);
// Read joystick configuration (if enabled, and mappings)
conf->bJoystick = File_ReadLE32(fp);
for (int button = 0; button < 8; button++)
conf->joystick_button[button] = File_ReadLE32(fp);
// Close file
fclose(fp);
// Check if version is not correct, and return if it failed
if (strcmp(conf->proof, gProof))
{
memset(conf, 0, sizeof(CONFIG));
return FALSE;
}
return TRUE;
}
void DefaultConfigData(CONFIG *conf)
{
// Clear old configuration data
memset(conf, 0, sizeof(CONFIG));
// Fun fact: The Linux port added this line:
// conf->display_mode = 1;
// Reset joystick settings (as these can't simply be set to 0)
conf->bJoystick = TRUE;
conf->joystick_button[0] = 2;
conf->joystick_button[1] = 1;
conf->joystick_button[2] = 5;
conf->joystick_button[3] = 6;
conf->joystick_button[4] = 3;
conf->joystick_button[5] = 4;
conf->joystick_button[6] = 6;
conf->joystick_button[7] = 3;
}