45enum GrfLoadingStage : uint8_t {
58 DesertTreesFields = 0,
62 AmbientSoundCallback = 4,
63 CatenaryOn3rdTrack = 5,
64 SecondRockyTileSet = 6,
98 GSF_ORIGINAL_STRINGS = 0x48,
104static const uint32_t INVALID_GRFID = 0xFFFFFFFF;
111 GRFLabel(uint8_t label, uint32_t nfo_line,
size_t pos) : label(label), nfo_line(nfo_line), pos(pos) {}
116 std::string filename{};
118 uint8_t grf_version = 0;
120 uint sound_offset = 0;
121 uint16_t num_sounds = 0;
123 std::vector<std::unique_ptr<struct StationSpec>> stations;
124 std::vector<std::unique_ptr<struct HouseSpec>> housespec;
125 std::vector<std::unique_ptr<struct IndustrySpec>> industryspec;
126 std::vector<std::unique_ptr<struct IndustryTileSpec>> indtspec;
127 std::vector<std::unique_ptr<struct ObjectSpec>> objectspec;
128 std::vector<std::unique_ptr<struct AirportSpec>> airportspec;
129 std::vector<std::unique_ptr<struct AirportTileSpec>> airtspec;
130 std::vector<std::unique_ptr<struct RoadStopSpec>> roadstops;
132 std::vector<uint32_t> param{};
140 std::unordered_map<uint16_t, BadgeID> badge_map{};
143 std::array<RailType, RAILTYPE_END> railtype_map{};
146 std::array<RoadType, ROADTYPE_END> roadtype_map{};
149 std::array<RoadType, ROADTYPE_END> tramtype_map{};
171 return (number < std::size(this->param)) ? this->param[number] : 0;
225void GrfMsgI(
int severity,
const std::string &msg);
226#define GrfMsg(severity, format_string, ...) do { if ((severity) == 0 || _debug_grf_level >= (severity)) GrfMsgI(severity, fmt::format(FMT_STRING(format_string) __VA_OPT__(,) __VA_ARGS__)); } while (false)
Functions related to bit mathematics.
Types/functions related to cargoes.
constexpr bool Test(Tvalue_type value) const
Test if the value-th bit is set.
PriceCategory
Categories of a price bases.
Price
Enumeration of all base prices for use with Prices.
#define DECLARE_INCREMENT_DECREMENT_OPERATORS(enum_type)
For some enums it is useful to have pre/post increment/decrement operators.
Types for Standard In/Out file operations.
Subdirectory
The different kinds of subdirectories OpenTTD uses.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
GrfMiscBits _misc_grf_features
Miscellaneous GRF features, set by Action 0x0D, parameter 0x9E.
bool GetGlobalVariable(uint8_t param, uint32_t *value, const GRFFile *grffile)
Reads a variable common to VarAction2 and Action7/9/D.
void ResetPersistentNewGRFData()
Reset NewGRF data which is stored persistently in savegames.
@ SHORE_REPLACE_ACTION_A
Shore sprites were replaced by ActionA (using grass tiles for the corner-shores).
@ SHORE_REPLACE_NONE
No shore sprites were replaced.
@ SHORE_REPLACE_ONLY_NEW
Only corner-shores were loaded by Action5 (openttd(w/d).grf only).
@ SHORE_REPLACE_ACTION_5
Shore sprites were replaced by Action5.
bool HasGrfMiscBit(GrfMiscBit bit)
Check for grf miscellaneous bits.
CanalFeature
List of different canal 'features'.
@ 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.
@ TRAMWAY_REPLACE_DEPOT_NONE
No tram depot graphics were loaded.
StringID MapGRFStringID(uint32_t grfid, GRFStringID str)
Used when setting an object's property to map to the GRF's strings while taking in consideration the ...
GRFLoadedFeatures _loaded_newgrf_features
Indicates which are the newgrf features currently loaded ingame.
void LoadNewGRF(SpriteID load_index, uint num_baseset)
Load all the NewGRFs.
void ResetNewGRFData()
Reset all NewGRF loaded data.
@ GSF_FAKE_TOWNS
Fake town GrfSpecFeature for NewGRF debugging (parent scope)
@ GSF_DEFAULT
Unspecified feature, default badge.
@ GSF_INVALID
An invalid spec feature.
@ GSF_FAKE_END
End of the fake features.
void GrfMsgI(int severity, const std::string &msg)
Debug() function dedicated to newGRF debugging messages Function is essentially the same as Debug(grf...
@ TrainWidth32Pixels
Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable;.
void LoadNewGRFFile(GRFConfig &config, GrfLoadingStage stage, Subdirectory subdir, bool temporary)
Load a particular NewGRF.
void ShowNewGRFError()
Show the first NewGRF error we can find.
void ReloadNewGRFData()
Reload all NewGRF files during a running game.
Types related to NewGRF badges.
Callbacks that NewGRFs could implement.
Header of Action 04 "universal holder" structure.
The different types of rail.
Enums and other types related to roads.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Canal properties local to the NewGRF.
CanalCallbackMasks callback_mask
Bitmask of canal callbacks that have to be called.
uint8_t flags
Flags controlling display.
Information about GRF, used in the game and (part of it) in savegames.
Dynamic data of a loaded NewGRF.
std::array< CanalProperties, CF_END > canal_local_properties
Canal properties as set by this NewGRF.
std::array< uint8_t, NUM_CARGO > cargo_map
Inverse cargo translation table (CargoType -> local ID)
std::vector< RailTypeLabel > railtype_list
Railtype translation table.
uint32_t GetParam(uint number) const
Get GRF Parameter with range checking.
std::vector< RoadTypeLabel > roadtype_list
Roadtype translation table (road)
std::vector< RoadTypeLabel > tramtype_list
Roadtype translation table (tram)
std::vector< CargoLabel > cargo_list
Cargo translation table (local ID -> label)
uint traininfo_vehicle_width
Width (in pixels) of a 8/8 train vehicle in depot GUI and vehicle details.
std::vector< BadgeID > badge_list
Badge translation table (local index -> global index)
GrfSpecFeatures grf_features
Bitset of GrfSpecFeature the grf uses.
int traininfo_vehicle_pitch
Vertical offset for drawing train images in depot GUI and vehicle details.
std::unordered_map< uint8_t, LanguageMap > language_map
Mappings related to the languages.
std::vector< GRFLabel > labels
List of labels.
PriceMultipliers price_base_multipliers
Price base multipliers as set by the grf.
bool has_2CC
Set if any vehicle is loaded which uses 2cc (two company colours).
ShoreReplacement shore
In which way shore sprites were replaced.
uint64_t used_liveries
Bitmask of LiveryScheme used by the defined engines.
TramReplacement tram
In which way tram depots were replaced.
Describes properties of price bases.
Price fallback_price
Fallback price multiplier for new prices but old grfs.
PriceCategory category
Price is affected by certain difficulty settings.
Money start_price
Default value at game start, before adding multipliers.
GrfSpecFeature grf_feature
GRF Feature that decides whether price multipliers apply locally or globally, GSF_END if none.