45 enum GrfLoadingStage {
58 GMB_DESERT_TREES_FIELDS = 0,
59 GMB_DESERT_PAVED_ROADS = 1,
60 GMB_FIELD_BOUNDING_BOX = 2,
62 GMB_AMBIENT_SOUND_CALLBACK = 4,
63 GMB_CATENARY_ON_3RD_TRACK = 5,
64 GMB_SECOND_ROCKY_TILE_SET = 6,
97 static const uint32_t INVALID_GRFID = 0xFFFFFFFF;
104 GRFLabel(uint8_t label, uint32_t nfo_line,
size_t pos) : label(label), nfo_line(nfo_line), pos(pos) {}
109 std::string filename;
116 std::vector<std::unique_ptr<struct StationSpec>> stations;
117 std::vector<std::unique_ptr<struct HouseSpec>> housespec;
118 std::vector<std::unique_ptr<struct IndustrySpec>> industryspec;
119 std::vector<std::unique_ptr<struct IndustryTileSpec>> indtspec;
120 std::vector<std::unique_ptr<struct ObjectSpec>> objectspec;
121 std::vector<std::unique_ptr<struct AirportSpec>> airportspec;
122 std::vector<std::unique_ptr<struct AirportTileSpec>> airtspec;
123 std::vector<std::unique_ptr<struct RoadStopSpec>> roadstops;
125 std::array<uint32_t, 0x80> param;
159 assert(this->param_end <= this->param.size());
160 return (number < this->
param_end) ? this->param[number] : 0;
204 void GrfMsgI(
int severity,
const std::string &msg);
205 #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)
Helper types related to the allocation of memory.
Functions related to bit mathematics.
constexpr debug_inline bool HasBit(const T x, const uint8_t y)
Checks if a bit in a value is set.
Types/functions related to cargoes.
Base class that provides memory initialization on dynamically created objects.
#define DECLARE_POSTFIX_INCREMENT(enum_type)
Some enums need to have allowed incrementing (i.e.
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.
Functions related to memory operations.
uint8_t _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.
StringID MapGRFStringID(uint32_t grfid, StringID str)
Used when setting an object's property to map to the GRF's strings while taking in consideration the ...
void ResetPersistentNewGRFData()
Reset NewGRF data which is stored persistently in savegames.
@ GSF_FAKE_TOWNS
Fake town GrfSpecFeature for NewGRF debugging (parent scope)
@ GSF_INVALID
An invalid spec feature.
@ GSF_FAKE_END
End of the fake features.
bool HasGrfMiscBit(GrfMiscBit bit)
Check for grf miscellaneous bits.
void LoadNewGRFFile(struct GRFConfig *config, GrfLoadingStage stage, Subdirectory subdir, bool temporary)
Load a particular NewGRF.
@ GMB_TRAIN_WIDTH_32_PIXELS
Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable;.
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.
@ 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.
@ 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.
void GrfMsgI(int severity, const std::string &msg)
Debug() function dedicated to newGRF debugging messages Function is essentially the same as Debug(grf...
CanalFeature
List of different canal 'features'.
void ShowNewGRFError()
Show the first NewGRF error we can find.
void ReloadNewGRFData()
Reload all NewGRF files during a running game.
Header of Action 04 "universal holder" structure.
The different types of rail.
RailType
Enumeration for all possible railtypes.
@ RAILTYPE_END
Used for iterations.
Enums and other types related to roads.
RoadType
The different roadtypes we support.
@ ROADTYPE_END
Used for iterations.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Canal properties local to the NewGRF.
uint8_t 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.
uint param_end
one more than the highest set parameter
std::array< uint8_t, NUM_CARGO > cargo_map
Inverse cargo translation table (CargoID -> local ID)
std::vector< RailTypeLabel > railtype_list
Railtype translation table.
uint32_t GetParam(uint number) const
Get GRF Parameter with range checking.
CanalProperties canal_local_properties[CF_END]
Canal properties as set by this NewGRF.
std::vector< RoadTypeLabel > roadtype_list
Roadtype translation table (road)
uint32_t grf_features
Bitset of GrfSpecFeature the grf uses.
GRFFile(const struct GRFConfig *config)
Constructor for GRFFile.
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.
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.