summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-07-31 09:36:09 +0000
committerrubidium <rubidium@openttd.org>2010-07-31 09:36:09 +0000
commitf7794e313f993bbb8394bfc6c27f6cd00fc534a0 (patch)
treeb47ce8754e0390f5b2769210ded01d440674d79d /src
parent75c4a2d2fb4c400eb2eef6e1e1fa1bf3573c5be0 (diff)
downloadopenttd-f7794e313f993bbb8394bfc6c27f6cd00fc534a0.tar.xz
(svn r20252) -Codechange: deduplicate logic for setting a suitable (initial) palette for NewGRFs
Diffstat (limited to 'src')
-rw-r--r--src/newgrf_config.cpp16
-rw-r--r--src/newgrf_config.h2
-rw-r--r--src/saveload/newgrf_sl.cpp2
3 files changed, 16 insertions, 4 deletions
diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp
index d7769a394..9ce1962ce 100644
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -85,6 +85,16 @@ const char *GRFConfig::GetDescription() const
return GetGRFStringFromGRFText(this->info);
}
+/**
+ * Set the palette of this GRFConfig to something suitable.
+ * That is either the setting coming from the NewGRF or
+ * the globally used palette.
+ */
+void GRFConfig::SetSuitablePalette()
+{
+ this->windows_paletted = (_use_palette == PAL_WINDOWS);
+}
+
GRFConfig *_all_grfs;
GRFConfig *_grfconfig;
GRFConfig *_grfconfig_newgame;
@@ -133,8 +143,8 @@ GRFError::~GRFError()
*/
void UpdateNewGRFConfigPalette()
{
- for (GRFConfig *c = _grfconfig_newgame; c != NULL; c = c->next) c->windows_paletted = (_use_palette == PAL_WINDOWS);
- for (GRFConfig *c = _grfconfig_static; c != NULL; c = c->next) c->windows_paletted = (_use_palette == PAL_WINDOWS);
+ for (GRFConfig *c = _grfconfig_newgame; c != NULL; c = c->next) c->SetSuitablePalette();
+ for (GRFConfig *c = _grfconfig_static; c != NULL; c = c->next) c->SetSuitablePalette();
}
/** Calculate the MD5 sum for a GRF, and store it in the config.
@@ -191,7 +201,7 @@ bool FillGRFDetails(GRFConfig *config, bool is_static)
if (HasBit(config->flags, GCF_UNSAFE)) return false;
}
- config->windows_paletted = (_use_palette == PAL_WINDOWS);
+ config->SetSuitablePalette();
return CalcGRFMD5Sum(config);
}
diff --git a/src/newgrf_config.h b/src/newgrf_config.h
index 56131e766..3c851a139 100644
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -108,6 +108,8 @@ struct GRFConfig : ZeroedMemoryAllocator {
const char *GetName() const;
const char *GetDescription() const;
+
+ void SetSuitablePalette();
};
extern GRFConfig *_all_grfs; ///< First item in list of all scanned NewGRFs
diff --git a/src/saveload/newgrf_sl.cpp b/src/saveload/newgrf_sl.cpp
index 735306c3c..f132bc03f 100644
--- a/src/saveload/newgrf_sl.cpp
+++ b/src/saveload/newgrf_sl.cpp
@@ -47,7 +47,7 @@ static void Load_NGRF_common(GRFConfig *&grfconfig)
while (SlIterateArray() != -1) {
GRFConfig *c = new GRFConfig();
SlObject(c, _grfconfig_desc);
- if (CheckSavegameVersion(101)) c->windows_paletted = (_use_palette == PAL_WINDOWS);
+ if (CheckSavegameVersion(101)) c->SetSuitablePalette();
AppendToGRFConfigList(&grfconfig, c);
}
}