OpenTTD Source  12.0-beta2
newgrf.h File Reference
#include "cargotype.h"
#include "rail_type.h"
#include "road_type.h"
#include "fileio_type.h"
#include "core/bitmath_func.hpp"
#include "core/alloc_type.hpp"
#include "core/smallvec_type.hpp"

Go to the source code of this file.

Data Structures

struct  CanalProperties
 Canal properties local to the NewGRF. More...
 
struct  GRFLabel
 
struct  GRFFile
 Dynamic data of a loaded NewGRF. More...
 
struct  GRFLoadedFeatures
 

Enumerations

enum  CanalFeature {
  CF_WATERSLOPE, CF_LOCKS, CF_DIKES, CF_ICON,
  CF_DOCKS, CF_RIVER_SLOPE, CF_RIVER_EDGE, CF_RIVER_GUI,
  CF_BUOY, CF_END
}
 List of different canal 'features'. More...
 
enum  GrfLoadingStage {
  GLS_FILESCAN, GLS_SAFETYSCAN, GLS_LABELSCAN, GLS_INIT,
  GLS_RESERVE, GLS_ACTIVATION, GLS_END
}
 
enum  GrfMiscBit {
  GMB_DESERT_TREES_FIELDS = 0, GMB_DESERT_PAVED_ROADS = 1, GMB_FIELD_BOUNDING_BOX = 2, GMB_TRAIN_WIDTH_32_PIXELS = 3,
  GMB_AMBIENT_SOUND_CALLBACK = 4, GMB_CATENARY_ON_3RD_TRACK = 5, GMB_SECOND_ROCKY_TILE_SET = 6
}
 
enum  GrfSpecFeature {
  GSF_TRAINS, GSF_ROADVEHICLES, GSF_SHIPS, GSF_AIRCRAFT,
  GSF_STATIONS, GSF_CANALS, GSF_BRIDGES, GSF_HOUSES,
  GSF_GLOBALVAR, GSF_INDUSTRYTILES, GSF_INDUSTRIES, GSF_CARGOES,
  GSF_SOUNDFX, GSF_AIRPORTS, GSF_SIGNALS, GSF_OBJECTS,
  GSF_RAILTYPES, GSF_AIRPORTTILES, GSF_ROADTYPES, GSF_TRAMTYPES,
  GSF_END, GSF_FAKE_TOWNS = GSF_END, GSF_FAKE_END, GSF_INVALID = 0xFF
}
 
enum  ShoreReplacement { SHORE_REPLACE_NONE, SHORE_REPLACE_ACTION_5, SHORE_REPLACE_ACTION_A, SHORE_REPLACE_ONLY_NEW }
 
enum  TramReplacement { TRAMWAY_REPLACE_DEPOT_NONE, TRAMWAY_REPLACE_DEPOT_WITH_TRACK, TRAMWAY_REPLACE_DEPOT_NO_TRACK }
 

Functions

static bool HasGrfMiscBit (GrfMiscBit bit)
 Check for grf miscellaneous bits. More...
 
void LoadNewGRFFile (struct GRFConfig *config, GrfLoadingStage stage, Subdirectory subdir, bool temporary)
 Load a particular NewGRF. More...
 
void LoadNewGRF (uint load_index, uint num_baseset)
 Load all the NewGRFs. More...
 
void ReloadNewGRFData ()
 Reload all NewGRF files during a running game. More...
 
void ResetNewGRFData ()
 Reset all NewGRF loaded data.
 
void ResetPersistentNewGRFData ()
 Reset NewGRF data which is stored persistently in savegames.
 
void CDECL grfmsg (int severity, const char *str,...) WARN_FORMAT(2
 
void CDECL bool GetGlobalVariable (byte param, uint32 *value, const GRFFile *grffile)
 Reads a variable common to VarAction2 and Action7/9/D. More...
 
StringID MapGRFStringID (uint32 grfid, StringID str)
 Used when setting an object's property to map to the GRF's strings while taking in consideration the "drift" between TTDPatch string system and OpenTTD's one. More...
 
void ShowNewGRFError ()
 Show the first NewGRF error we can find.
 

Variables

static const uint32 INVALID_GRFID = 0xFFFFFFFF
 
GRFLoadedFeatures _loaded_newgrf_features
 Indicates which are the newgrf features currently loaded ingame.
 

Detailed Description

Base for the NewGRF implementation.

Definition in file newgrf.h.

Enumeration Type Documentation

◆ CanalFeature

List of different canal 'features'.

Each feature gets an entry in the canal spritegroup table

Definition at line 25 of file newgrf.h.

◆ GrfMiscBit

enum GrfMiscBit
Enumerator
GMB_TRAIN_WIDTH_32_PIXELS 

Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable;.

See also
GRFFile::traininfo_vehicle_width

Definition at line 56 of file newgrf.h.

◆ GrfSpecFeature

Enumerator
GSF_FAKE_TOWNS 

Fake town GrfSpecFeature for NewGRF debugging (parent scope)

GSF_FAKE_END 

End of the fake features.

GSF_INVALID 

An invalid spec feature.

Definition at line 66 of file newgrf.h.

◆ ShoreReplacement

Enumerator
SHORE_REPLACE_NONE 

No shore sprites were replaced.

SHORE_REPLACE_ACTION_5 

Shore sprites were replaced by Action5.

SHORE_REPLACE_ACTION_A 

Shore sprites were replaced by ActionA (using grass tiles for the corner-shores).

SHORE_REPLACE_ONLY_NEW 

Only corner-shores were loaded by Action5 (openttd(w/d).grf only).

Definition at line 161 of file newgrf.h.

◆ TramReplacement

Enumerator
TRAMWAY_REPLACE_DEPOT_NONE 

No tram depot graphics were loaded.

TRAMWAY_REPLACE_DEPOT_WITH_TRACK 

Electrified depot graphics with tram track were loaded.

TRAMWAY_REPLACE_DEPOT_NO_TRACK 

Electrified depot graphics without tram track were loaded.

Definition at line 168 of file newgrf.h.

Function Documentation

◆ GetGlobalVariable()

void CDECL bool GetGlobalVariable ( byte  param,
uint32 *  value,
const GRFFile grffile 
)

Reads a variable common to VarAction2 and Action7/9/D.

Returns VarAction2 variable 'param' resp. Action7/9/D variable '0x80 + param'. If a variable is not accessible from all four actions, it is handled in the action specific functions.

Parameters
paramvariable number (as for VarAction2, for Action7/9/D you have to subtract 0x80 first).
valuereturns the value of the variable.
grffileNewGRF querying the variable
Returns
true iff the variable is known and the value is returned in 'value'.

Definition at line 6255 of file newgrf.cpp.

References _cur_year, _date, _date_fract, _settings_game, _tick_counter, Clamp(), ConvertDateToYMD(), ConvertYMDToDate(), YearMonthDay::day, DAYS_TILL_ORIGINAL_BASE_YEAR, GameSettings::game_creation, IsLeapYear(), GameCreationSettings::landscape, YearMonthDay::month, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR, VehicleSettings::road_side, GameSettings::vehicle, and YearMonthDay::year.

◆ HasGrfMiscBit()

static bool HasGrfMiscBit ( GrfMiscBit  bit)
inlinestatic

Check for grf miscellaneous bits.

Parameters
bitThe bit to check.
Returns
Whether the bit is set.

Definition at line 186 of file newgrf.h.

References _misc_grf_features, and HasBit().

Referenced by AmbientSoundEffect().

◆ LoadNewGRF()

void LoadNewGRF ( uint  load_index,
uint  num_baseset 
)

Load all the NewGRFs.

Parameters
load_indexThe offset for the first sprite to add.
num_basesetNumber of NewGRFs at the front of the list to look up in the baseset dir instead of the newgrf dir.

Definition at line 9775 of file newgrf.cpp.

References _cur_year, _date, _date_fract, _display_opt, _grfconfig, _networking, _settings_game, _tick_counter, ConvertYMDToDate(), GameSettings::game_creation, GCS_NOT_FOUND, GCS_UNKNOWN, InitializeGRFSpecial(), GRFConfig::next, ResetNewGRFData(), GameCreationSettings::starting_year, and GRFConfig::status.

◆ LoadNewGRFFile()

void LoadNewGRFFile ( GRFConfig config,
GrfLoadingStage  stage,
Subdirectory  subdir,
bool  temporary 
)

Load a particular NewGRF.

Parameters
configThe configuration of the to be loaded NewGRF.
stageThe loading stage of the NewGRF.
subdirThe sub directory to find the NewGRF in.
temporaryThe NewGRF/sprite file is to be loaded temporarily and should be closed immediately, contrary to loading the SpriteFile and having it cached by the SpriteCache.

Definition at line 9449 of file newgrf.cpp.

References GRFConfig::filename.

Referenced by FillGRFDetails().

◆ MapGRFStringID()

StringID MapGRFStringID ( uint32  grfid,
StringID  str 
)

Used when setting an object's property to map to the GRF's strings while taking in consideration the "drift" between TTDPatch string system and OpenTTD's one.

Parameters
grfidId of the grf file.
strStringID that we want to have the equivalent in OoenTTD.
Returns
The properly adjusted StringID.

Definition at line 563 of file newgrf.cpp.

References GetGRFStringID(), IsInsideMM(), and TTDPStringIDToOTTDStringIDMapping().

◆ ReloadNewGRFData()

void ReloadNewGRFData ( )

Reload all NewGRF files during a running game.

This is a cut-down version of AfterLoadGame(). XXX - We need to reset the vehicle position hash because with a non-empty hash AfterLoadVehicles() will loop infinitely. We need AfterLoadVehicles() to recalculate vehicle data as some NewGRF vehicle sets could have been removed or added and changed statistics

Definition at line 3182 of file afterload.cpp.

References GfxLoadSprites(), LoadStringWidthTable(), and RecomputePrices().

Referenced by ClickChangeMaxHlCheat(), and NewGRFConfirmationCallback().