newgrf_sl.cpp

Go to the documentation of this file.
00001 /* $Id: newgrf_sl.cpp 15903 2009-03-30 23:15:05Z rubidium $ */
00002 
00005 #include "../stdafx.h"
00006 #include "../newgrf_config.h"
00007 #include "../core/bitmath_func.hpp"
00008 #include "../core/alloc_func.hpp"
00009 #include "../gfx_func.h"
00010 
00011 #include "saveload.h"
00012 
00013 static const SaveLoad _grfconfig_desc[] = {
00014       SLE_STR(GRFConfig, filename,         SLE_STR,    0x40),
00015       SLE_VAR(GRFConfig, grfid,            SLE_UINT32),
00016       SLE_ARR(GRFConfig, md5sum,           SLE_UINT8,  16),
00017       SLE_ARR(GRFConfig, param,            SLE_UINT32, 0x80),
00018       SLE_VAR(GRFConfig, num_params,       SLE_UINT8),
00019   SLE_CONDVAR(GRFConfig, windows_paletted, SLE_BOOL,   101, SL_MAX_VERSION),
00020   SLE_END()
00021 };
00022 
00023 
00024 static void Save_NGRF()
00025 {
00026   int index = 0;
00027 
00028   for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
00029     if (HasBit(c->flags, GCF_STATIC)) continue;
00030     SlSetArrayIndex(index++);
00031     SlObject(c, _grfconfig_desc);
00032   }
00033 }
00034 
00035 
00036 static void Load_NGRF()
00037 {
00038   ClearGRFConfigList(&_grfconfig);
00039   while (SlIterateArray() != -1) {
00040     GRFConfig *c = CallocT<GRFConfig>(1);
00041     SlObject(c, _grfconfig_desc);
00042     if (CheckSavegameVersion(101)) c->windows_paletted = (_use_palette == PAL_WINDOWS);
00043     AppendToGRFConfigList(&_grfconfig, c);
00044   }
00045 
00046   /* Append static NewGRF configuration */
00047   AppendStaticGRFConfigs(&_grfconfig);
00048 }
00049 
00050 extern const ChunkHandler _newgrf_chunk_handlers[] = {
00051   { 'NGRF', Save_NGRF, Load_NGRF, CH_ARRAY | CH_LAST }
00052 };

Generated on Thu Sep 24 19:35:05 2009 for OpenTTD by  doxygen 1.5.6