aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/qt_sdl/Config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/qt_sdl/Config.cpp')
-rw-r--r--src/frontend/qt_sdl/Config.cpp402
1 files changed, 213 insertions, 189 deletions
diff --git a/src/frontend/qt_sdl/Config.cpp b/src/frontend/qt_sdl/Config.cpp
index 7a0ec69..a8df8ee 100644
--- a/src/frontend/qt_sdl/Config.cpp
+++ b/src/frontend/qt_sdl/Config.cpp
@@ -106,9 +106,10 @@ int FirmwareBirthdayDay;
int FirmwareFavouriteColour;
std::string FirmwareMessage;
std::string FirmwareMAC;
-bool RandomizeMAC;
-bool SocketBindAnyAddr;
+int MPAudioMode;
+int MPRecvTimeout;
+
std::string LANDevice;
bool DirectLAN;
@@ -141,200 +142,196 @@ bool DSiBatteryCharging;
const char* kConfigFile = "melonDS.ini";
+const char* kUniqueConfigFile = "melonDS.%d.ini";
ConfigEntry ConfigFile[] =
{
- {"Key_A", 0, &KeyMapping[0], -1},
- {"Key_B", 0, &KeyMapping[1], -1},
- {"Key_Select", 0, &KeyMapping[2], -1},
- {"Key_Start", 0, &KeyMapping[3], -1},
- {"Key_Right", 0, &KeyMapping[4], -1},
- {"Key_Left", 0, &KeyMapping[5], -1},
- {"Key_Up", 0, &KeyMapping[6], -1},
- {"Key_Down", 0, &KeyMapping[7], -1},
- {"Key_R", 0, &KeyMapping[8], -1},
- {"Key_L", 0, &KeyMapping[9], -1},
- {"Key_X", 0, &KeyMapping[10], -1},
- {"Key_Y", 0, &KeyMapping[11], -1},
-
- {"Joy_A", 0, &JoyMapping[0], -1},
- {"Joy_B", 0, &JoyMapping[1], -1},
- {"Joy_Select", 0, &JoyMapping[2], -1},
- {"Joy_Start", 0, &JoyMapping[3], -1},
- {"Joy_Right", 0, &JoyMapping[4], -1},
- {"Joy_Left", 0, &JoyMapping[5], -1},
- {"Joy_Up", 0, &JoyMapping[6], -1},
- {"Joy_Down", 0, &JoyMapping[7], -1},
- {"Joy_R", 0, &JoyMapping[8], -1},
- {"Joy_L", 0, &JoyMapping[9], -1},
- {"Joy_X", 0, &JoyMapping[10], -1},
- {"Joy_Y", 0, &JoyMapping[11], -1},
-
- {"HKKey_Lid", 0, &HKKeyMapping[HK_Lid], -1},
- {"HKKey_Mic", 0, &HKKeyMapping[HK_Mic], -1},
- {"HKKey_Pause", 0, &HKKeyMapping[HK_Pause], -1},
- {"HKKey_Reset", 0, &HKKeyMapping[HK_Reset], -1},
- {"HKKey_FastForward", 0, &HKKeyMapping[HK_FastForward], -1},
- {"HKKey_FastForwardToggle", 0, &HKKeyMapping[HK_FastForwardToggle], -1},
- {"HKKey_FullscreenToggle", 0, &HKKeyMapping[HK_FullscreenToggle], -1},
- {"HKKey_SwapScreens", 0, &HKKeyMapping[HK_SwapScreens], -1},
- {"HKKey_SolarSensorDecrease", 0, &HKKeyMapping[HK_SolarSensorDecrease], -1},
- {"HKKey_SolarSensorIncrease", 0, &HKKeyMapping[HK_SolarSensorIncrease], -1},
- {"HKKey_FrameStep", 0, &HKKeyMapping[HK_FrameStep], -1},
-
- {"HKJoy_Lid", 0, &HKJoyMapping[HK_Lid], -1},
- {"HKJoy_Mic", 0, &HKJoyMapping[HK_Mic], -1},
- {"HKJoy_Pause", 0, &HKJoyMapping[HK_Pause], -1},
- {"HKJoy_Reset", 0, &HKJoyMapping[HK_Reset], -1},
- {"HKJoy_FastForward", 0, &HKJoyMapping[HK_FastForward], -1},
- {"HKJoy_FastForwardToggle", 0, &HKJoyMapping[HK_FastForwardToggle], -1},
- {"HKJoy_FullscreenToggle", 0, &HKJoyMapping[HK_FullscreenToggle], -1},
- {"HKJoy_SwapScreens", 0, &HKJoyMapping[HK_SwapScreens], -1},
- {"HKJoy_SolarSensorDecrease", 0, &HKJoyMapping[HK_SolarSensorDecrease], -1},
- {"HKJoy_SolarSensorIncrease", 0, &HKJoyMapping[HK_SolarSensorIncrease], -1},
- {"HKJoy_FrameStep", 0, &HKJoyMapping[HK_FrameStep], -1},
-
- {"JoystickID", 0, &JoystickID, 0},
-
- {"WindowWidth", 0, &WindowWidth, 256},
- {"WindowHeight", 0, &WindowHeight, 384},
- {"WindowMax", 1, &WindowMaximized, false},
-
- {"ScreenRotation", 0, &ScreenRotation, 0},
- {"ScreenGap", 0, &ScreenGap, 0},
- {"ScreenLayout", 0, &ScreenLayout, 0},
- {"ScreenSwap", 1, &ScreenSwap, false},
- {"ScreenSizing", 0, &ScreenSizing, 0},
- {"IntegerScaling", 1, &IntegerScaling, false},
- {"ScreenAspectTop",0, &ScreenAspectTop,0},
- {"ScreenAspectBot",0, &ScreenAspectBot,0},
- {"ScreenFilter", 1, &ScreenFilter, true},
-
- {"ScreenUseGL", 1, &ScreenUseGL, false},
- {"ScreenVSync", 1, &ScreenVSync, false},
- {"ScreenVSyncInterval", 0, &ScreenVSyncInterval, 1},
-
- {"3DRenderer", 0, &_3DRenderer, 0},
- {"Threaded3D", 1, &Threaded3D, true},
-
- {"GL_ScaleFactor", 0, &GL_ScaleFactor, 1},
- {"GL_BetterPolygons", 1, &GL_BetterPolygons, false},
-
- {"LimitFPS", 1, &LimitFPS, true},
+ {"Key_A", 0, &KeyMapping[0], -1, true},
+ {"Key_B", 0, &KeyMapping[1], -1, true},
+ {"Key_Select", 0, &KeyMapping[2], -1, true},
+ {"Key_Start", 0, &KeyMapping[3], -1, true},
+ {"Key_Right", 0, &KeyMapping[4], -1, true},
+ {"Key_Left", 0, &KeyMapping[5], -1, true},
+ {"Key_Up", 0, &KeyMapping[6], -1, true},
+ {"Key_Down", 0, &KeyMapping[7], -1, true},
+ {"Key_R", 0, &KeyMapping[8], -1, true},
+ {"Key_L", 0, &KeyMapping[9], -1, true},
+ {"Key_X", 0, &KeyMapping[10], -1, true},
+ {"Key_Y", 0, &KeyMapping[11], -1, true},
+
+ {"Joy_A", 0, &JoyMapping[0], -1, true},
+ {"Joy_B", 0, &JoyMapping[1], -1, true},
+ {"Joy_Select", 0, &JoyMapping[2], -1, true},
+ {"Joy_Start", 0, &JoyMapping[3], -1, true},
+ {"Joy_Right", 0, &JoyMapping[4], -1, true},
+ {"Joy_Left", 0, &JoyMapping[5], -1, true},
+ {"Joy_Up", 0, &JoyMapping[6], -1, true},
+ {"Joy_Down", 0, &JoyMapping[7], -1, true},
+ {"Joy_R", 0, &JoyMapping[8], -1, true},
+ {"Joy_L", 0, &JoyMapping[9], -1, true},
+ {"Joy_X", 0, &JoyMapping[10], -1, true},
+ {"Joy_Y", 0, &JoyMapping[11], -1, true},
+
+ {"HKKey_Lid", 0, &HKKeyMapping[HK_Lid], -1, true},
+ {"HKKey_Mic", 0, &HKKeyMapping[HK_Mic], -1, true},
+ {"HKKey_Pause", 0, &HKKeyMapping[HK_Pause], -1, true},
+ {"HKKey_Reset", 0, &HKKeyMapping[HK_Reset], -1, true},
+ {"HKKey_FastForward", 0, &HKKeyMapping[HK_FastForward], -1, true},
+ {"HKKey_FastForwardToggle", 0, &HKKeyMapping[HK_FastForwardToggle], -1, true},
+ {"HKKey_FullscreenToggle", 0, &HKKeyMapping[HK_FullscreenToggle], -1, true},
+ {"HKKey_SwapScreens", 0, &HKKeyMapping[HK_SwapScreens], -1, true},
+ {"HKKey_SolarSensorDecrease", 0, &HKKeyMapping[HK_SolarSensorDecrease], -1, true},
+ {"HKKey_SolarSensorIncrease", 0, &HKKeyMapping[HK_SolarSensorIncrease], -1, true},
+ {"HKKey_FrameStep", 0, &HKKeyMapping[HK_FrameStep], -1, true},
+
+ {"HKJoy_Lid", 0, &HKJoyMapping[HK_Lid], -1, true},
+ {"HKJoy_Mic", 0, &HKJoyMapping[HK_Mic], -1, true},
+ {"HKJoy_Pause", 0, &HKJoyMapping[HK_Pause], -1, true},
+ {"HKJoy_Reset", 0, &HKJoyMapping[HK_Reset], -1, true},
+ {"HKJoy_FastForward", 0, &HKJoyMapping[HK_FastForward], -1, true},
+ {"HKJoy_FastForwardToggle", 0, &HKJoyMapping[HK_FastForwardToggle], -1, true},
+ {"HKJoy_FullscreenToggle", 0, &HKJoyMapping[HK_FullscreenToggle], -1, true},
+ {"HKJoy_SwapScreens", 0, &HKJoyMapping[HK_SwapScreens], -1, true},
+ {"HKJoy_SolarSensorDecrease", 0, &HKJoyMapping[HK_SolarSensorDecrease], -1, true},
+ {"HKJoy_SolarSensorIncrease", 0, &HKJoyMapping[HK_SolarSensorIncrease], -1, true},
+ {"HKJoy_FrameStep", 0, &HKJoyMapping[HK_FrameStep], -1, true},
+
+ {"JoystickID", 0, &JoystickID, 0, true},
+
+ {"WindowWidth", 0, &WindowWidth, 256, true},
+ {"WindowHeight", 0, &WindowHeight, 384, true},
+ {"WindowMax", 1, &WindowMaximized, false, true},
+
+ {"ScreenRotation", 0, &ScreenRotation, 0, true},
+ {"ScreenGap", 0, &ScreenGap, 0, true},
+ {"ScreenLayout", 0, &ScreenLayout, 0, true},
+ {"ScreenSwap", 1, &ScreenSwap, false, true},
+ {"ScreenSizing", 0, &ScreenSizing, 0, true},
+ {"IntegerScaling", 1, &IntegerScaling, false, true},
+ {"ScreenAspectTop",0, &ScreenAspectTop,0, true},
+ {"ScreenAspectBot",0, &ScreenAspectBot,0, true},
+ {"ScreenFilter", 1, &ScreenFilter, true, true},
+
+ {"ScreenUseGL", 1, &ScreenUseGL, false, false},
+ {"ScreenVSync", 1, &ScreenVSync, false, false},
+ {"ScreenVSyncInterval", 0, &ScreenVSyncInterval, 1, false},
+
+ {"3DRenderer", 0, &_3DRenderer, 0, false},
+ {"Threaded3D", 1, &Threaded3D, true, false},
+
+ {"GL_ScaleFactor", 0, &GL_ScaleFactor, 1, false},
+ {"GL_BetterPolygons", 1, &GL_BetterPolygons, false, false},
+
+ {"LimitFPS", 1, &LimitFPS, true, false},
{"AudioSync", 1, &AudioSync, false},
- {"ShowOSD", 1, &ShowOSD, true},
+ {"ShowOSD", 1, &ShowOSD, true, false},
- {"ConsoleType", 0, &ConsoleType, 0},
- {"DirectBoot", 1, &DirectBoot, true},
+ {"ConsoleType", 0, &ConsoleType, 0, false},
+ {"DirectBoot", 1, &DirectBoot, true, false},
#ifdef JIT_ENABLED
- {"JIT_Enable", 1, &JIT_Enable, false},
- {"JIT_MaxBlockSize", 0, &JIT_MaxBlockSize, 32},
- {"JIT_BranchOptimisations", 1, &JIT_BranchOptimisations, true},
- {"JIT_LiteralOptimisations", 1, &JIT_LiteralOptimisations, true},
+ {"JIT_Enable", 1, &JIT_Enable, false, false},
+ {"JIT_MaxBlockSize", 0, &JIT_MaxBlockSize, 32, false},
+ {"JIT_BranchOptimisations", 1, &JIT_BranchOptimisations, true, false},
+ {"JIT_LiteralOptimisations", 1, &JIT_LiteralOptimisations, true, false},
#ifdef __APPLE__
- {"JIT_FastMemory", 1, &JIT_FastMemory, false},
+ {"JIT_FastMemory", 1, &JIT_FastMemory, false, false},
#else
- {"JIT_FastMemory", 1, &JIT_FastMemory, true},
+ {"JIT_FastMemory", 1, &JIT_FastMemory, true, false},
#endif
#endif
- {"ExternalBIOSEnable", 1, &ExternalBIOSEnable, false},
-
- {"BIOS9Path", 2, &BIOS9Path, (std::string)""},
- {"BIOS7Path", 2, &BIOS7Path, (std::string)""},
- {"FirmwarePath", 2, &FirmwarePath, (std::string)""},
-
- {"DSiBIOS9Path", 2, &DSiBIOS9Path, (std::string)""},
- {"DSiBIOS7Path", 2, &DSiBIOS7Path, (std::string)""},
- {"DSiFirmwarePath", 2, &DSiFirmwarePath, (std::string)""},
- {"DSiNANDPath", 2, &DSiNANDPath, (std::string)""},
-
- {"DLDIEnable", 1, &DLDIEnable, false},
- {"DLDISDPath", 2, &DLDISDPath, (std::string)"dldi.bin"},
- {"DLDISize", 0, &DLDISize, 0},
- {"DLDIReadOnly", 1, &DLDIReadOnly, false},
- {"DLDIFolderSync", 1, &DLDIFolderSync, false},
- {"DLDIFolderPath", 2, &DLDIFolderPath, (std::string)""},
-
- {"DSiSDEnable", 1, &DSiSDEnable, false},
- {"DSiSDPath", 2, &DSiSDPath, (std::string)"dsisd.bin"},
- {"DSiSDSize", 0, &DSiSDSize, 0},
- {"DSiSDReadOnly", 1, &DSiSDReadOnly, false},
- {"DSiSDFolderSync", 1, &DSiSDFolderSync, false},
- {"DSiSDFolderPath", 2, &DSiSDFolderPath, (std::string)""},
-
- {"FirmwareOverrideSettings", 1, &FirmwareOverrideSettings, false},
- {"FirmwareUsername", 2, &FirmwareUsername, (std::string)"melonDS"},
- {"FirmwareLanguage", 0, &FirmwareLanguage, 1},
- {"FirmwareBirthdayMonth", 0, &FirmwareBirthdayMonth, 1},
- {"FirmwareBirthdayDay", 0, &FirmwareBirthdayDay, 1},
- {"FirmwareFavouriteColour", 0, &FirmwareFavouriteColour, 0},
- {"FirmwareMessage", 2, &FirmwareMessage, (std::string)""},
- {"FirmwareMAC", 2, &FirmwareMAC, (std::string)""},
- {"RandomizeMAC", 1, &RandomizeMAC, false},
-
- {"SockBindAnyAddr", 1, &SocketBindAnyAddr, false},
- {"LANDevice", 2, &LANDevice, (std::string)""},
- {"DirectLAN", 1, &DirectLAN, false},
-
- {"SavStaRelocSRAM", 1, &SavestateRelocSRAM, false},
-
- {"AudioInterp", 0, &AudioInterp, 0},
- {"AudioBitrate", 0, &AudioBitrate, 0},
- {"AudioVolume", 0, &AudioVolume, 256},
- {"MicInputType", 0, &MicInputType, 1},
- {"MicWavPath", 2, &MicWavPath, (std::string)""},
-
- {"LastROMFolder", 2, &LastROMFolder, (std::string)""},
-
- {"RecentROM_0", 2, &RecentROMList[0], (std::string)""},
- {"RecentROM_1", 2, &RecentROMList[1], (std::string)""},
- {"RecentROM_2", 2, &RecentROMList[2], (std::string)""},
- {"RecentROM_3", 2, &RecentROMList[3], (std::string)""},
- {"RecentROM_4", 2, &RecentROMList[4], (std::string)""},
- {"RecentROM_5", 2, &RecentROMList[5], (std::string)""},
- {"RecentROM_6", 2, &RecentROMList[6], (std::string)""},
- {"RecentROM_7", 2, &RecentROMList[7], (std::string)""},
- {"RecentROM_8", 2, &RecentROMList[8], (std::string)""},
- {"RecentROM_9", 2, &RecentROMList[9], (std::string)""},
-
- {"SaveFilePath", 2, &SaveFilePath, (std::string)""},
- {"SavestatePath", 2, &SavestatePath, (std::string)""},
- {"CheatFilePath", 2, &CheatFilePath, (std::string)""},
-
- {"EnableCheats", 1, &EnableCheats, false},
-
- {"MouseHide", 1, &MouseHide, false},
- {"MouseHideSeconds", 0, &MouseHideSeconds, 5},
- {"PauseLostFocus", 1, &PauseLostFocus, false},
-
- {"DSBatteryLevelOkay", 1, &DSBatteryLevelOkay, true},
- {"DSiBatteryLevel", 0, &DSiBatteryLevel, 0xF},
- {"DSiBatteryCharging", 1, &DSiBatteryCharging, true},
-
- {"", -1, nullptr, 0}
+ {"ExternalBIOSEnable", 1, &ExternalBIOSEnable, false, false},
+
+ {"BIOS9Path", 2, &BIOS9Path, (std::string)"", false},
+ {"BIOS7Path", 2, &BIOS7Path, (std::string)"", false},
+ {"FirmwarePath", 2, &FirmwarePath, (std::string)"", false},
+
+ {"DSiBIOS9Path", 2, &DSiBIOS9Path, (std::string)"", false},
+ {"DSiBIOS7Path", 2, &DSiBIOS7Path, (std::string)"", false},
+ {"DSiFirmwarePath", 2, &DSiFirmwarePath, (std::string)"", false},
+ {"DSiNANDPath", 2, &DSiNANDPath, (std::string)"", false},
+
+ {"DLDIEnable", 1, &DLDIEnable, false, false},
+ {"DLDISDPath", 2, &DLDISDPath, (std::string)"dldi.bin", false},
+ {"DLDISize", 0, &DLDISize, 0, false},
+ {"DLDIReadOnly", 1, &DLDIReadOnly, false, false},
+ {"DLDIFolderSync", 1, &DLDIFolderSync, false, false},
+ {"DLDIFolderPath", 2, &DLDIFolderPath, (std::string)"", false},
+
+ {"DSiSDEnable", 1, &DSiSDEnable, false, false},
+ {"DSiSDPath", 2, &DSiSDPath, (std::string)"dsisd.bin", false},
+ {"DSiSDSize", 0, &DSiSDSize, 0, false},
+ {"DSiSDReadOnly", 1, &DSiSDReadOnly, false, false},
+ {"DSiSDFolderSync", 1, &DSiSDFolderSync, false, false},
+ {"DSiSDFolderPath", 2, &DSiSDFolderPath, (std::string)"", false},
+
+ {"FirmwareOverrideSettings", 1, &FirmwareOverrideSettings, false, true},
+ {"FirmwareUsername", 2, &FirmwareUsername, (std::string)"melonDS", true},
+ {"FirmwareLanguage", 0, &FirmwareLanguage, 1, true},
+ {"FirmwareBirthdayMonth", 0, &FirmwareBirthdayMonth, 1, true},
+ {"FirmwareBirthdayDay", 0, &FirmwareBirthdayDay, 1, true},
+ {"FirmwareFavouriteColour", 0, &FirmwareFavouriteColour, 0, true},
+ {"FirmwareMessage", 2, &FirmwareMessage, (std::string)"", true},
+ {"FirmwareMAC", 2, &FirmwareMAC, (std::string)"", true},
+
+ {"MPAudioMode", 0, &MPAudioMode, 1, false},
+ {"MPRecvTimeout", 0, &MPRecvTimeout, 25, false},
+
+ {"LANDevice", 2, &LANDevice, (std::string)"", false},
+ {"DirectLAN", 1, &DirectLAN, false, false},
+
+ {"SavStaRelocSRAM", 1, &SavestateRelocSRAM, false, false},
+
+ {"AudioInterp", 0, &AudioInterp, 0, false},
+ {"AudioBitrate", 0, &AudioBitrate, 0, false},
+ {"AudioVolume", 0, &AudioVolume, 256, true},
+ {"MicInputType", 0, &MicInputType, 1, false},
+ {"MicWavPath", 2, &MicWavPath, (std::string)"", false},
+
+ {"LastROMFolder", 2, &LastROMFolder, (std::string)"", true},
+
+ {"RecentROM_0", 2, &RecentROMList[0], (std::string)"", true},
+ {"RecentROM_1", 2, &RecentROMList[1], (std::string)"", true},
+ {"RecentROM_2", 2, &RecentROMList[2], (std::string)"", true},
+ {"RecentROM_3", 2, &RecentROMList[3], (std::string)"", true},
+ {"RecentROM_4", 2, &RecentROMList[4], (std::string)"", true},
+ {"RecentROM_5", 2, &RecentROMList[5], (std::string)"", true},
+ {"RecentROM_6", 2, &RecentROMList[6], (std::string)"", true},
+ {"RecentROM_7", 2, &RecentROMList[7], (std::string)"", true},
+ {"RecentROM_8", 2, &RecentROMList[8], (std::string)"", true},
+ {"RecentROM_9", 2, &RecentROMList[9], (std::string)"", true},
+
+ {"SaveFilePath", 2, &SaveFilePath, (std::string)"", true},
+ {"SavestatePath", 2, &SavestatePath, (std::string)"", true},
+ {"CheatFilePath", 2, &CheatFilePath, (std::string)"", true},
+
+ {"EnableCheats", 1, &EnableCheats, false, true},
+
+ {"MouseHide", 1, &MouseHide, false, false},
+ {"MouseHideSeconds", 0, &MouseHideSeconds, 5, false},
+ {"PauseLostFocus", 1, &PauseLostFocus, false, false},
+
+ {"DSBatteryLevelOkay", 1, &DSBatteryLevelOkay, true, true},
+ {"DSiBatteryLevel", 0, &DSiBatteryLevel, 0xF, true},
+ {"DSiBatteryCharging", 1, &DSiBatteryCharging, true, true},
+
+ {"", -1, nullptr, 0, false}
};
-void Load()
+void LoadFile(int inst)
{
- ConfigEntry* entry = &ConfigFile[0];
- for (;;)
+ FILE* f;
+ if (inst > 0)
{
- if (!entry->Value) break;
-
- switch (entry->Type)
- {
- case 0: *(int*)entry->Value = std::get<int>(entry->Default); break;
- case 1: *(bool*)entry->Value = std::get<bool>(entry->Default); break;
- case 2: *(std::string*)entry->Value = std::get<std::string>(entry->Default); break;
- }
-
- entry++;
+ char name[100] = {0};
+ snprintf(name, 99, kUniqueConfigFile, inst+1);
+ f = Platform::OpenLocalFile(name, "r");
}
+ else
+ f = Platform::OpenLocalFile(kConfigFile, "r");
- FILE* f = Platform::OpenLocalFile(kConfigFile, "r");
if (!f) return;
char linebuf[1024];
@@ -349,13 +346,13 @@ void Load()
entryname[31] = '\0';
if (ret < 2) continue;
- ConfigEntry* entry = &ConfigFile[0];
- for (;;)
+ for (ConfigEntry* entry = &ConfigFile[0]; entry->Value; entry++)
{
- if (!entry->Value) break;
-
if (!strncmp(entry->Name, entryname, 32))
{
+ if ((inst > 0) && (!entry->InstanceUnique))
+ break;
+
switch (entry->Type)
{
case 0: *(int*)entry->Value = strtol(entryval, NULL, 10); break;
@@ -365,23 +362,52 @@ void Load()
break;
}
-
- entry++;
}
}
fclose(f);
}
+void Load()
+{
+
+ for (ConfigEntry* entry = &ConfigFile[0]; entry->Value; entry++)
+ {
+ switch (entry->Type)
+ {
+ case 0: *(int*)entry->Value = std::get<int>(entry->Default); break;
+ case 1: *(bool*)entry->Value = std::get<bool>(entry->Default); break;
+ case 2: *(std::string*)entry->Value = std::get<std::string>(entry->Default); break;
+ }
+ }
+
+ LoadFile(0);
+
+ int inst = Platform::InstanceID();
+ if (inst > 0)
+ LoadFile(inst);
+}
+
void Save()
{
- FILE* f = Platform::OpenLocalFile(kConfigFile, "w");
+ int inst = Platform::InstanceID();
+
+ FILE* f;
+ if (inst > 0)
+ {
+ char name[100] = {0};
+ snprintf(name, 99, kUniqueConfigFile, inst+1);
+ f = Platform::OpenLocalFile(name, "w");
+ }
+ else
+ f = Platform::OpenLocalFile(kConfigFile, "w");
+
if (!f) return;
- ConfigEntry* entry = &ConfigFile[0];
- for (;;)
+ for (ConfigEntry* entry = &ConfigFile[0]; entry->Value; entry++)
{
- if (!entry->Value) break;
+ if ((inst > 0) && (!entry->InstanceUnique))
+ continue;
switch (entry->Type)
{
@@ -389,8 +415,6 @@ void Save()
case 1: fprintf(f, "%s=%d\r\n", entry->Name, *(bool*)entry->Value ? 1:0); break;
case 2: fprintf(f, "%s=%s\r\n", entry->Name, (*(std::string*)entry->Value).c_str()); break;
}
-
- entry++;
}
fclose(f);