newgrf_config.cpp File Reference

Finding NewGRFs and configuring them. More...

#include "stdafx.h"
#include "debug.h"
#include "3rdparty/md5/md5.h"
#include "newgrf.h"
#include "gamelog.h"
#include "network/network_func.h"
#include "gfx_func.h"
#include "fileio_func.h"
#include "fios.h"

Go to the source code of this file.

Data Structures

class  GRFFileScanner
 Helper for scanning for files with GRF as extension. More...

Functions

void UpdateNewGRFConfigPalette ()
 Update the palettes of the graphics from the config file.
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 int CDECL GRFSorter (GRFConfig *const *p1, GRFConfig *const *p2)
 Simple sorter for GRFS.
void ScanNewGRFFiles ()
const GRFConfigFindGRFConfig (uint32 grfid, const uint8 *md5sum)
GRFConfigGetGRFConfig (uint32 grfid, uint32 mask)
char * GRFBuildParamList (char *dst, const GRFConfig *c, const char *last)

Variables

GRFConfig_all_grfs
 First item in list of all scanned NewGRFs.
GRFConfig_grfconfig
 First item in list of current GRF set up.
GRFConfig_grfconfig_newgame
 First item in list of default GRF set up.
GRFConfig_grfconfig_static
 First item in list of static GRF set up.
static const uint32 OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400)
 Base GRF ID for OpenTTD's base graphics GRFs.


Detailed Description

Finding NewGRFs and configuring them.

Definition in file newgrf_config.cpp.


Function Documentation

void AppendStaticGRFConfigs ( GRFConfig **  dst  ) 

Appends the static GRFs to a list of GRFs.

Parameters:
dst the head of the list to add to

Definition at line 197 of file newgrf_config.cpp.

References CopyGRFConfigList(), GRFConfig::next, and RemoveDuplicatesFromGRFConfigList().

void AppendToGRFConfigList ( GRFConfig **  dst,
GRFConfig el 
)

Appends an element to a list of GRFs.

Parameters:
dst the head of the list to add to
el the new tail to be

Definition at line 209 of file newgrf_config.cpp.

References GRFConfig::next, and RemoveDuplicatesFromGRFConfigList().

GRFConfig** CopyGRFConfigList ( GRFConfig **  dst,
const GRFConfig src,
bool  init_only 
)

Copy a GRF Config list.

Parameters:
dst pointer to destination list
src pointer to source list values
init_only the copied GRF will be processed up to GLS_INIT
Returns:
pointer to the last value added to the destination list

Definition at line 133 of file newgrf_config.cpp.

References ClrBit(), GRFError::custom_message, GRFError::data, GRFConfig::error, GRFConfig::filename, GCF_COPY, GCF_INIT_ONLY, GRFConfig::info, GRFConfig::name, GRFConfig::next, and SetBit().

Referenced by AppendStaticGRFConfigs(), NewGRFConfirmationCallback(), and NewGRFWindow::OnClick().

static int CDECL GRFSorter ( GRFConfig *const *  p1,
GRFConfig *const *  p2 
) [static]

Simple sorter for GRFS.

Parameters:
p1 the first GRFConfig *
p2 the second GRFConfig *
Returns:
the same strcmp would return for the name of the NewGRF.

Definition at line 353 of file newgrf_config.cpp.

References GRFConfig::filename, and GRFConfig::name.

GRFListCompatibility IsGoodGRFConfigList (  ) 

Check if all GRFs in the GRF config from a savegame can be loaded.

Returns:
will return any of the following 3 values:
  • GLC_ALL_GOOD: No problems occured, all GRF files were found and loaded
  • GLC_COMPATIBLE: For one or more GRF's no exact match was found, but a compatible GRF with the same grfid was found and used instead
  • GLC_NOT_FOUND: For one or more GRF's no match was found at all

Definition at line 235 of file newgrf_config.cpp.

References BSWAP32(), GRFConfig::error, GRFConfig::filename, GRFConfig::flags, GamelogGRFCompatible(), GamelogGRFRemove(), GCF_COMPATIBLE, GCF_COPY, GCS_NOT_FOUND, GLC_ALL_GOOD, GLC_COMPATIBLE, GLC_NOT_FOUND, GRFIdentifier::grfid, HasBit(), GRFConfig::info, lastof, GRFIdentifier::md5sum, md5sumToString(), GRFConfig::name, GRFConfig::next, SetBit(), and GRFConfig::status.

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.

Parameters:
list the list to remove the duplicates from

Definition at line 175 of file newgrf_config.cpp.

References GRFIdentifier::grfid, and GRFConfig::next.

Referenced by AppendStaticGRFConfigs(), and AppendToGRFConfigList().

void UpdateNewGRFConfigPalette (  ) 

Update the palettes of the graphics from the config file.

This is needed because the config file gets read and parsed before the palette is chosen (one can configure the base graphics set governing the palette in the config after all). As a result of this we update the settings from the config once we have determined the palette.

Definition at line 38 of file newgrf_config.cpp.

References _use_palette, GRFConfig::next, and PAL_WINDOWS.

Referenced by BaseGraphics::DeterminePalette().


Variable Documentation

const uint32 OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400) [static]

Base GRF ID for OpenTTD's base graphics GRFs.

Definition at line 495 of file newgrf_config.cpp.


Generated on Wed Dec 23 23:28:00 2009 for OpenTTD by  doxygen 1.5.6