#include "stdafx.h"
#include "openttd.h"
#include "debug.h"
#include "variables.h"
#include "saveload.h"
#include "md5.h"
#include "network/network_data.h"
#include "newgrf.h"
#include "newgrf_config.h"
#include "core/alloc_func.hpp"
#include "string_func.h"
#include "fileio.h"
#include "fios.h"
#include <sys/stat.h>
Go to the source code of this file.
Functions | |
static bool | CalcGRFMD5Sum (GRFConfig *config) |
bool | FillGRFDetails (GRFConfig *config, bool is_static) |
void | ClearGRFConfig (GRFConfig **config) |
void | ClearGRFConfigList (GRFConfig **config) |
GRFConfig ** | CopyGRFConfigList (GRFConfig **dst, const GRFConfig *src, bool init_only) |
Copy a GRF Config list. | |
static void | RemoveDuplicatesFromGRFConfigList (GRFConfig *list) |
Removes duplicates from lists of GRFConfigs. | |
void | AppendStaticGRFConfigs (GRFConfig **dst) |
Appends the static GRFs to a list of GRFs. | |
void | AppendToGRFConfigList (GRFConfig **dst, GRFConfig *el) |
Appends an element to a list of GRFs. | |
void | ResetGRFConfig (bool defaults) |
GRFListCompatibility | IsGoodGRFConfigList () |
Check if all GRFs in the GRF config from a savegame can be loaded. | |
static bool | ScanPathAddGrf (const char *filename) |
static uint | ScanPath (const char *path, int basepath_length) |
static uint | ScanTar (TarFileList::iterator tar) |
static int CDECL | GRFSorter (const void *p1, const void *p2) |
Simple sorter for GRFS. | |
void | ScanNewGRFFiles () |
const GRFConfig * | FindGRFConfig (uint32 grfid, const uint8 *md5sum) |
GRFConfig * | GetGRFConfig (uint32 grfid) |
char * | GRFBuildParamList (char *dst, const GRFConfig *c, const char *last) |
static void | Save_NGRF () |
static void | Load_NGRF () |
Variables | |
GRFConfig * | _all_grfs |
GRFConfig * | _grfconfig |
GRFConfig * | _grfconfig_newgame |
GRFConfig * | _grfconfig_static |
static const uint32 | OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400) |
Base GRF ID for OpenTTD's base graphics GRFs. | |
static const SaveLoad | _grfconfig_desc [] |
const ChunkHandler | _newgrf_chunk_handlers [] |
Definition in file newgrf_config.cpp.
void AppendStaticGRFConfigs | ( | GRFConfig ** | dst | ) |
Appends the static GRFs to a list of GRFs.
dst | the head of the list to add to |
Definition at line 181 of file newgrf_config.cpp.
References CopyGRFConfigList(), and RemoveDuplicatesFromGRFConfigList().
void AppendToGRFConfigList | ( | GRFConfig ** | dst, | |
GRFConfig * | el | |||
) |
Appends an element to a list of GRFs.
dst | the head of the list to add to | |
el | the new tail to be |
Definition at line 193 of file newgrf_config.cpp.
References RemoveDuplicatesFromGRFConfigList().
GRFConfig** CopyGRFConfigList | ( | GRFConfig ** | dst, | |
const GRFConfig * | src, | |||
bool | init_only | |||
) |
Copy a GRF Config list.
dst | pointer to destination list | |
src | pointer to source list values | |
init_only | the copied GRF will be processed up to GLS_INIT |
Definition at line 119 of file newgrf_config.cpp.
References ClrBit(), GCF_INIT_ONLY, and SetBit().
Referenced by AppendStaticGRFConfigs(), NewGRFConfirmationCallback(), and ShowNewGRFSettings().
static int CDECL GRFSorter | ( | const void * | p1, | |
const void * | p2 | |||
) | [static] |
Simple sorter for GRFS.
p1 | the first GRFConfig * | |
p2 | the second GRFConfig * |
Definition at line 378 of file newgrf_config.cpp.
GRFListCompatibility IsGoodGRFConfigList | ( | ) |
Check if all GRFs in the GRF config from a savegame can be loaded.
Definition at line 219 of file newgrf_config.cpp.
References BSWAP32(), buf, GCF_COMPATIBLE, GCF_COPY, GCS_NOT_FOUND, HasBit(), md5sumToString(), and SetBit().
static void RemoveDuplicatesFromGRFConfigList | ( | GRFConfig * | list | ) | [static] |
Removes duplicates from lists of GRFConfigs.
These duplicates are introduced when the _grfconfig_static GRFs are appended to the _grfconfig on a newgame or savegame. As the parameters of the static GRFs could be different that the parameters of the ones used non-statically. This can result in desyncs in multiplayers, so the duplicate static GRFs have to be removed.
This function _assumes_ that all static GRFs are placed after the non-static GRFs.
list | the list to remove the duplicates from |
Definition at line 159 of file newgrf_config.cpp.
Referenced by AppendStaticGRFConfigs(), and AppendToGRFConfigList().
const SaveLoad _grfconfig_desc[] [static] |
Initial value:
{ SLE_STR(GRFConfig, filename, SLE_STR, 0x40), SLE_VAR(GRFConfig, grfid, SLE_UINT32), SLE_ARR(GRFConfig, md5sum, SLE_UINT8, 16), SLE_ARR(GRFConfig, param, SLE_UINT32, 0x80), SLE_VAR(GRFConfig, num_params, SLE_UINT8), }
Definition at line 539 of file newgrf_config.cpp.
const ChunkHandler _newgrf_chunk_handlers[] |
Initial value:
{
{ 'NGRF', Save_NGRF, Load_NGRF, CH_ARRAY | CH_LAST }
}
const uint32 OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400) [static] |