Commit d4ae3326 authored by nanahira's avatar nanahira

sort load config

parent eeb06426
...@@ -1207,66 +1207,15 @@ void Game::RefreshBot() { ...@@ -1207,66 +1207,15 @@ void Game::RefreshBot() {
if(botInfo.size() == 0) if(botInfo.size() == 0)
SetStaticText(stBotInfo, 200, guiFont, dataManager.GetSysString(1385)); SetStaticText(stBotInfo, 200, guiFont, dataManager.GetSysString(1385));
} }
void Game::LoadConfig() { bool Game::LoadConfigFromFile(const char* file) {
FILE* fp = fopen("system.conf", "r"); FILE* fp = fopen(file, "r");
#ifndef YGOPRO_COMPAT_MYCARD if(!fp){
FILE* fp_user = fopen("system_user.conf", "r"); return false;
#endif //YGOPRO_COMPAT_MYCARD }
char linebuf[256]; char linebuf[256];
char strbuf[32]; char strbuf[32];
char valbuf[256]; char valbuf[256];
wchar_t wstr[256]; wchar_t wstr[256];
gameConf.use_d3d = 0;
gameConf.use_image_scale = 1;
gameConf.antialias = 0;
gameConf.serverport = 7911;
gameConf.textfontsize = 12;
gameConf.nickname[0] = 0;
gameConf.gamename[0] = 0;
gameConf.bot_deck_path[0] = 0;
gameConf.lastcategory[0] = 0;
gameConf.lastdeck[0] = 0;
gameConf.numfont[0] = 0;
gameConf.textfont[0] = 0;
gameConf.lasthost[0] = 0;
gameConf.lastport[0] = 0;
gameConf.roompass[0] = 0;
//settings
gameConf.chkMAutoPos = 0;
gameConf.chkSTAutoPos = 1;
gameConf.chkRandomPos = 0;
gameConf.chkAutoChain = 0;
gameConf.chkWaitChain = 0;
gameConf.chkIgnore1 = 0;
gameConf.chkIgnore2 = 0;
gameConf.default_rule = DEFAULT_DUEL_RULE;
gameConf.hide_setname = 0;
gameConf.hide_hint_button = 0;
gameConf.control_mode = 0;
gameConf.draw_field_spell = 1;
gameConf.separate_clear_button = 1;
gameConf.auto_search_limit = 0;
gameConf.search_multiple_keywords = 1;
gameConf.search_regex = 0;
gameConf.chkIgnoreDeckChanges = 0;
gameConf.defaultOT = 1;
gameConf.enable_bot_mode = 1;
gameConf.quick_animation = 0;
gameConf.auto_save_replay = 0;
gameConf.draw_single_chain = 0;
gameConf.prefer_expansion_script = 0;
gameConf.enable_sound = true;
gameConf.sound_volume = 0.5;
gameConf.enable_music = true;
gameConf.music_volume = 0.5;
gameConf.music_mode = 1;
gameConf.window_maximized = false;
gameConf.window_width = 1024;
gameConf.window_height = 640;
gameConf.resize_popup_menu = false;
gameConf.chkEnablePScale = 1;
gameConf.skin_index = -1;
if(fp) {
while(fgets(linebuf, 256, fp)) { while(fgets(linebuf, 256, fp)) {
sscanf(linebuf, "%s = %s", strbuf, valbuf); sscanf(linebuf, "%s = %s", strbuf, valbuf);
if(!strcmp(strbuf, "antialias")) { if(!strcmp(strbuf, "antialias")) {
...@@ -1395,148 +1344,71 @@ void Game::LoadConfig() { ...@@ -1395,148 +1344,71 @@ void Game::LoadConfig() {
} }
} }
} }
fclose(fp); return true;
} }
#ifndef YGOPRO_COMPAT_MYCARD void Game::LoadConfig() {
if(fp_user) { gameConf.use_d3d = 0;
while(fgets(linebuf, 256, fp_user)) { gameConf.use_image_scale = 1;
sscanf(linebuf, "%s = %s", strbuf, valbuf); gameConf.antialias = 0;
if(!strcmp(strbuf, "antialias")) { gameConf.serverport = 7911;
gameConf.antialias = atoi(valbuf); gameConf.textfontsize = 12;
} else if(!strcmp(strbuf, "use_d3d")) { gameConf.nickname[0] = 0;
gameConf.use_d3d = atoi(valbuf) > 0; gameConf.gamename[0] = 0;
} else if(!strcmp(strbuf, "use_image_scale")) { gameConf.bot_deck_path[0] = 0;
gameConf.use_image_scale = atoi(valbuf) > 0; gameConf.lastcategory[0] = 0;
} else if(!strcmp(strbuf, "pro_version")) { gameConf.lastdeck[0] = 0;
PRO_VERSION = atoi(valbuf); gameConf.numfont[0] = 0;
} else if(!strcmp(strbuf, "errorlog")) { gameConf.textfont[0] = 0;
enable_log = atoi(valbuf); gameConf.lasthost[0] = 0;
} else if(!strcmp(strbuf, "textfont")) { gameConf.lastport[0] = 0;
BufferIO::DecodeUTF8(valbuf, wstr); gameConf.roompass[0] = 0;
int textfontsize; //settings
sscanf(linebuf, "%s = %s %d", strbuf, valbuf, &textfontsize); gameConf.chkMAutoPos = 0;
gameConf.textfontsize = textfontsize; gameConf.chkSTAutoPos = 1;
BufferIO::CopyWStr(wstr, gameConf.textfont, 256); gameConf.chkRandomPos = 0;
} else if(!strcmp(strbuf, "numfont")) { gameConf.chkAutoChain = 0;
BufferIO::DecodeUTF8(valbuf, wstr); gameConf.chkWaitChain = 0;
BufferIO::CopyWStr(wstr, gameConf.numfont, 256); gameConf.chkIgnore1 = 0;
} else if(!strcmp(strbuf, "serverport")) { gameConf.chkIgnore2 = 0;
gameConf.serverport = atoi(valbuf);
} else if(!strcmp(strbuf, "lasthost")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.lasthost, 100);
} else if(!strcmp(strbuf, "lastport")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.lastport, 20);
} else if(!strcmp(strbuf, "roompass")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.roompass, 20);
} else if(!strcmp(strbuf, "automonsterpos")) {
gameConf.chkMAutoPos = atoi(valbuf);
} else if(!strcmp(strbuf, "autospellpos")) {
gameConf.chkSTAutoPos = atoi(valbuf);
} else if(!strcmp(strbuf, "randompos")) {
gameConf.chkRandomPos = atoi(valbuf);
} else if(!strcmp(strbuf, "autochain")) {
gameConf.chkAutoChain = atoi(valbuf);
} else if(!strcmp(strbuf, "waitchain")) {
gameConf.chkWaitChain = atoi(valbuf);
} else if(!strcmp(strbuf, "mute_opponent")) {
gameConf.chkIgnore1 = atoi(valbuf);
} else if(!strcmp(strbuf, "mute_spectators")) {
gameConf.chkIgnore2 = atoi(valbuf);
} else if(!strcmp(strbuf, "default_rule")) {
gameConf.default_rule = atoi(valbuf);
if(gameConf.default_rule <= 0)
gameConf.default_rule = DEFAULT_DUEL_RULE; gameConf.default_rule = DEFAULT_DUEL_RULE;
} else if(!strcmp(strbuf, "hide_setname")) { gameConf.hide_setname = 0;
gameConf.hide_setname = atoi(valbuf); gameConf.hide_hint_button = 0;
} else if(!strcmp(strbuf, "hide_hint_button")) { gameConf.control_mode = 0;
gameConf.hide_hint_button = atoi(valbuf); gameConf.draw_field_spell = 1;
} else if(!strcmp(strbuf, "control_mode")) { gameConf.separate_clear_button = 1;
gameConf.control_mode = atoi(valbuf); gameConf.auto_search_limit = 0;
} else if(!strcmp(strbuf, "draw_field_spell")) { gameConf.search_multiple_keywords = 1;
gameConf.draw_field_spell = atoi(valbuf); gameConf.search_regex = 0;
} else if(!strcmp(strbuf, "separate_clear_button")) { gameConf.chkIgnoreDeckChanges = 0;
gameConf.separate_clear_button = atoi(valbuf); gameConf.defaultOT = 1;
} else if(!strcmp(strbuf, "auto_search_limit")) { gameConf.enable_bot_mode = 1;
gameConf.auto_search_limit = atoi(valbuf); gameConf.quick_animation = 0;
} else if(!strcmp(strbuf, "search_multiple_keywords")) { gameConf.auto_save_replay = 0;
gameConf.search_multiple_keywords = atoi(valbuf); gameConf.draw_single_chain = 0;
} else if(!strcmp(strbuf, "search_regex")) { gameConf.prefer_expansion_script = 0;
gameConf.search_regex = atoi(valbuf); gameConf.enable_sound = true;
} else if(!strcmp(strbuf, "ignore_deck_changes")) { gameConf.sound_volume = 0.5;
gameConf.chkIgnoreDeckChanges = atoi(valbuf); gameConf.enable_music = true;
} else if(!strcmp(strbuf, "default_ot")) { gameConf.music_volume = 0.5;
gameConf.defaultOT = atoi(valbuf); gameConf.music_mode = 1;
} else if(!strcmp(strbuf, "enable_bot_mode")) { gameConf.window_maximized = false;
gameConf.enable_bot_mode = atoi(valbuf); gameConf.window_width = 1024;
} else if(!strcmp(strbuf, "quick_animation")) { gameConf.window_height = 640;
gameConf.quick_animation = atoi(valbuf); gameConf.resize_popup_menu = false;
} else if(!strcmp(strbuf, "auto_save_replay")) { gameConf.chkEnablePScale = 1;
gameConf.auto_save_replay = atoi(valbuf); gameConf.skin_index = -1;
} else if(!strcmp(strbuf, "draw_single_chain")) { LoadConfigFromFile("system.conf"); //default config
gameConf.draw_single_chain = atoi(valbuf); #ifdef YGOPRO_COMPAT_MYCARD
} else if(!strcmp(strbuf, "prefer_expansion_script")) {
gameConf.prefer_expansion_script = atoi(valbuf);
} else if(!strcmp(strbuf, "window_maximized")) {
gameConf.window_maximized = atoi(valbuf) > 0;
} else if(!strcmp(strbuf, "window_width")) {
gameConf.window_width = atoi(valbuf);
} else if(!strcmp(strbuf, "window_height")) {
gameConf.window_height = atoi(valbuf);
} else if(!strcmp(strbuf, "resize_popup_menu")) {
gameConf.resize_popup_menu = atoi(valbuf) > 0;
#ifdef YGOPRO_USE_IRRKLANG
} else if(!strcmp(strbuf, "enable_sound")) {
gameConf.enable_sound = atoi(valbuf) > 0;
} else if(!strcmp(strbuf, "sound_volume")) {
gameConf.sound_volume = atof(valbuf) / 100;
} else if(!strcmp(strbuf, "enable_music")) {
gameConf.enable_music = atoi(valbuf) > 0;
} else if(!strcmp(strbuf, "music_volume")) {
gameConf.music_volume = atof(valbuf) / 100;
} else if(!strcmp(strbuf, "music_mode")) {
gameConf.music_mode = atoi(valbuf);
#endif
} else if(!strcmp(strbuf, "enable_pendulum_scale")) {
gameConf.chkEnablePScale = atoi(valbuf);
} else if (!strcmp(strbuf, "skin_index")) {
gameConf.skin_index = atoi(valbuf);
} else {
// options allowing multiple words
sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf);
if (!strcmp(strbuf, "nickname")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.nickname, 20);
} else if (!strcmp(strbuf, "gamename")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.gamename, 20);
} else if (!strcmp(strbuf, "bot_deck_path")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.bot_deck_path, 64);
} else if (!strcmp(strbuf, "lastcategory")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.lastcategory, 64);
} else if (!strcmp(strbuf, "lastdeck")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.lastdeck, 64);
} else if (!strcmp(strbuf, "locale")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.locale, 64);
}
}
}
fclose(fp_user);
} else
#else // YGOPRO_COMPAT_MYCARD
if(!gameConf.locale || wcslen(gameConf.locale) <= 0) if(!gameConf.locale || wcslen(gameConf.locale) <= 0)
#else // YGOPRO_COMPAT_MYCARD
if(!LoadConfigFromFile("system_user.conf"))
#endif #endif
{ {
unsigned int lcid = 0; unsigned int lcid = 0;
#ifdef _WIN32 #ifdef _WIN32
lcid = ((unsigned int)GetSystemDefaultLangID()) & 0xff; lcid = ((unsigned int)GetSystemDefaultLangID()) & 0xff;
#else #else
/* temp broken
char* locale_str = getenv("LANG"); char* locale_str = getenv("LANG");
if(locale_str) { if(locale_str) {
if(strstr(locale_str, "zh")) if(strstr(locale_str, "zh"))
...@@ -1557,6 +1429,7 @@ void Game::LoadConfig() { ...@@ -1557,6 +1429,7 @@ void Game::LoadConfig() {
if(strstr(locale_str, "pt")) if(strstr(locale_str, "pt"))
lcid = 0x16; lcid = 0x16;
} }
*/
#endif #endif
switch(lcid) { switch(lcid) {
case 0x04: { case 0x04: {
...@@ -1584,6 +1457,9 @@ void Game::LoadConfig() { ...@@ -1584,6 +1457,9 @@ void Game::LoadConfig() {
break; break;
} }
} }
#ifndef YGOPRO_COMPAT_MYCARD
SaveConfig();
#endif
} }
} }
void Game::SaveConfig() { void Game::SaveConfig() {
......
...@@ -162,6 +162,7 @@ public: ...@@ -162,6 +162,7 @@ public:
void WaitFrameSignal(int frame); void WaitFrameSignal(int frame);
void DrawThumb(code_pointer cp, position2di pos, const std::unordered_map<int,int>* lflist, bool drag = false); void DrawThumb(code_pointer cp, position2di pos, const std::unordered_map<int,int>* lflist, bool drag = false);
void DrawDeckBd(); void DrawDeckBd();
bool LoadConfigFromFile(const char* file);
void LoadConfig(); void LoadConfig();
void SaveConfig(); void SaveConfig();
void ShowCardInfo(int code, bool resize = false); void ShowCardInfo(int code, bool resize = false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment