(svn r12805) -Codechange: remove some bit magic related to the news display states. Patch by cirdan.

This commit is contained in:
rubidium
2008-04-20 11:40:33 +00:00
parent 8186344628
commit 650651064b
4 changed files with 52 additions and 75 deletions

View File

@@ -1654,15 +1654,13 @@ static const SettingDesc _currency_settings[] = {
#undef NO
#undef CR
static uint NewsDisplayLoadConfig(IniFile *ini, const char *grpname)
static void NewsDisplayLoadConfig(IniFile *ini, const char *grpname)
{
IniGroup *group = ini_getgroup(ini, grpname, -1);
IniItem *item;
/* By default, set everything to full (0xAAAAAAAA = 1010101010101010) */
uint res = 0xAAAAAAAA;
/* If no group exists, return everything full */
if (group == NULL) return res;
/* If no group exists, return */
if (group == NULL) return;
for (item = group->item; item != NULL; item = item->next) {
int news_item = -1;
@@ -1678,18 +1676,16 @@ static uint NewsDisplayLoadConfig(IniFile *ini, const char *grpname)
}
if (strcasecmp(item->value, "full") == 0) {
SB(res, news_item * 2, 2, 2);
_news_type_data[news_item].display = ND_FULL;
} else if (strcasecmp(item->value, "off") == 0) {
SB(res, news_item * 2, 2, 0);
_news_type_data[news_item].display = ND_OFF;
} else if (strcasecmp(item->value, "summarized") == 0) {
SB(res, news_item * 2, 2, 1);
_news_type_data[news_item].display = ND_SUMMARY;
} else {
DEBUG(misc, 0, "Invalid display value: %s", item->value);
continue;
}
}
return res;
}
/* Load a GRF configuration from the given group name */
@@ -1745,7 +1741,7 @@ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_stati
return first;
}
static void NewsDisplaySaveConfig(IniFile *ini, const char *grpname, uint news_display)
static void NewsDisplaySaveConfig(IniFile *ini, const char *grpname)
{
IniGroup *group = ini_getgroup(ini, grpname, -1);
IniItem **item;
@@ -1756,9 +1752,9 @@ static void NewsDisplaySaveConfig(IniFile *ini, const char *grpname, uint news_d
for (int i = 0; i < NT_END; i++) {
const char *value;
int v = GB(news_display, i * 2, 2);
int v = _news_type_data[i].display;
value = (v == 0 ? "off" : (v == 1 ? "summarized" : "full"));
value = (v == ND_OFF ? "off" : (v == ND_SUMMARY ? "summarized" : "full"));
*item = ini_item_alloc(group, _news_type_data[i].name, strlen(_news_type_data[i].name));
(*item)->value = (char*)pool_strdup(&ini->pool, value, strlen(value));
@@ -1847,7 +1843,7 @@ void LoadFromConfig()
HandleSettingDescs(ini, ini_load_settings, ini_load_setting_list);
_grfconfig_newgame = GRFLoadConfig(ini, "newgrf", false);
_grfconfig_static = GRFLoadConfig(ini, "newgrf-static", true);
_news_display_opt = NewsDisplayLoadConfig(ini, "news_display");
NewsDisplayLoadConfig(ini, "news_display");
CheckDifficultyLevels();
ini_free(ini);
}
@@ -1859,7 +1855,7 @@ void SaveToConfig()
HandleSettingDescs(ini, ini_save_settings, ini_save_setting_list);
GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
NewsDisplaySaveConfig(ini, "news_display", _news_display_opt);
NewsDisplaySaveConfig(ini, "news_display");
SaveVersionInConfig(ini);
ini_save(_config_file, ini);
ini_free(ini);