diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/newgrf.cpp | 311 |
1 files changed, 272 insertions, 39 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 056e1f7b6..65d8b2f49 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -127,6 +127,7 @@ static GrfProcessingState _cur; class OTTDByteReaderSignal { }; +/** Class to read from a NewGRF file */ class ByteReader { protected: byte *data; @@ -217,7 +218,7 @@ typedef void (*SpecialSpriteHandler)(ByteReader *buf); static const uint MAX_STATIONS = 256; -/* Temporary data used when loading only */ +/** Temporary engine data used when loading only */ struct GRFTempEngineData { uint16 cargo_allowed; uint16 cargo_disallowed; @@ -228,14 +229,15 @@ struct GRFTempEngineData { uint8 rv_max_speed; ///< Temporary storage of RV prop 15, maximum speed in mph/0.8 }; -static GRFTempEngineData *_gted; +static GRFTempEngineData *_gted; ///< Temporary engine data used during NewGRF loading -/* Contains the GRF ID of the owner of a vehicle if it has been reserved. +/** + * Contains the GRF ID of the owner of a vehicle if it has been reserved. * GRM for vehicles is only used if dynamic engine allocation is disabled, * so 256 is the number of original engines. */ static uint32 _grm_engines[256]; -/* Contains the GRF ID of the owner of a cargo if it has been reserved */ +/** Contains the GRF ID of the owner of a cargo if it has been reserved */ static uint32 _grm_cargos[NUM_CARGO * 2]; struct GRFLocation { @@ -281,6 +283,11 @@ void CDECL grfmsg(int severity, const char *str, ...) DEBUG(grf, severity, "[%s:%d] %s", _cur.grfconfig->filename, _cur.nfo_line, buf); } +/** + * Obtain a NewGRF file by its grfID + * @param grfid The grfID to obtain the file for + * @return The file. + */ static GRFFile *GetFileByGRFID(uint32 grfid) { const GRFFile * const *end = _grf_files.End(); @@ -290,6 +297,11 @@ static GRFFile *GetFileByGRFID(uint32 grfid) return NULL; } +/** + * Obtain a NewGRF file by its filename + * @param filename The filename to obtain the file for. + * @return The file. + */ static GRFFile *GetFileByFilename(const char *filename) { const GRFFile * const *end = _grf_files.End(); @@ -313,9 +325,9 @@ static void ClearTemporaryNewGRFData(GRFFile *gf) /** * Disable a GRF - * @param message Error message or STR_NULL - * @param config GRFConfig to disable, NULL for current - * @return Error message of the GRF for further customisation + * @param message Error message or STR_NULL. + * @param config GRFConfig to disable, NULL for current. + * @return Error message of the GRF for further customisation. */ static GRFError *DisableGrf(StringID message = STR_NULL, GRFConfig *config = NULL) { @@ -346,9 +358,9 @@ static StringIDToGRFIDMapping _string_to_grf_mapping; /** * 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 - * @param grfid Id of the grf file - * @param str StringID that we want to have the equivalent in OoenTTD - * @return the properly adjusted StringID + * @param grfid Id of the grf file. + * @param str StringID that we want to have the equivalent in OoenTTD. + * @return The properly adjusted StringID. */ StringID MapGRFStringID(uint32 grfid, StringID str) { @@ -374,6 +386,11 @@ StringID MapGRFStringID(uint32 grfid, StringID str) static std::map<uint32, uint32> _grf_id_overrides; +/** + * Set the override for a NewGRF + * @param source_grfid The grfID which wants to override another NewGRF. + * @param target_grfid The grfID which is being overridden. + */ static void SetNewGRFOverride(uint32 source_grfid, uint32 target_grfid) { _grf_id_overrides[source_grfid] = target_grfid; @@ -382,11 +399,11 @@ static void SetNewGRFOverride(uint32 source_grfid, uint32 target_grfid) /** * Returns the engine associated to a certain internal_id, resp. allocates it. - * @param file NewGRF that wants to change the engine - * @param type Vehicle type - * @param internal_id Engine ID inside the NewGRF - * @param static_access If the engine is not present, return NULL instead of allocating a new engine. (Used for static Action 0x04) - * @return The requested engine + * @param file NewGRF that wants to change the engine. + * @param type Vehicle type. + * @param internal_id Engine ID inside the NewGRF. + * @param static_access If the engine is not present, return NULL instead of allocating a new engine. (Used for static Action 0x04). + * @return The requested engine. */ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 internal_id, bool static_access = false) { @@ -473,6 +490,16 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 intern return e; } +/** + * Return the ID of a new engine + * @param file The NewGRF file providing the engine. + * @param type The Vehicle type. + * @param internal_id NewGRF-internal ID of the engine. + * @return The new EngineID. + * @note depending on the dynamic_engine setting and a possible override + * property the grfID may be unique or overwriting or partially re-defining + * properties of an existing engine. + */ EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id) { uint32 scope_grfid = INVALID_GRFID; // If not using dynamic_engines, all newgrfs share their ID range @@ -487,7 +514,7 @@ EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_i /** * Map the colour modifiers of TTDPatch to those that Open is using. - * @param grf_sprite pointer to the structure been modified + * @param grf_sprite Pointer to the structure been modified. */ static void MapSpriteMappingRecolour(PalSpriteID *grf_sprite) { @@ -517,7 +544,7 @@ static void MapSpriteMappingRecolour(PalSpriteID *grf_sprite) * @param action1_pitch Factor to multiply action 1 sprite indices with. * @param action1_max Maximal valid action 1 index. * @param [out] grf_sprite Read sprite and palette. - * @return read TileLayoutFlags. + * @return Read TileLayoutFlags. */ static TileLayoutFlags ReadSpriteLayoutSprite(ByteReader *buf, bool read_flags, bool invert_action1_flag, uint action1_offset, uint action1_pitch, uint action1_max, PalSpriteID *grf_sprite) { @@ -627,7 +654,7 @@ static void ReadSpriteLayoutRegisters(ByteReader *buf, TileLayoutFlags flags, bo * @param allow_var10 Whether the spritelayout may specifiy var10 values for resolving multiple action-1-2-3 chains * @param no_z_position Whether bounding boxes have no Z offset * @param dts Layout container to output into - * @return true on error (GRF was disabled) + * @return True on error (GRF was disabled). */ static bool ReadSpriteLayout(ByteReader *buf, uint num_building_sprites, uint action1_offset, uint action1_pitch, uint action1_max, bool allow_var10, bool no_z_position, NewGRFSpriteLayout *dts) { @@ -706,6 +733,7 @@ static void ConvertTTDBasePrice(uint32 base_pointer, const char *error_location, *index = (Price)((base_pointer - start) / size); } +/** Possible return values for the FeatureChangeInfo functions */ enum ChangeInfoResult { CIR_SUCCESS, ///< Variable was parsed and read CIR_DISABLED, ///< GRF was disabled due to error @@ -716,6 +744,13 @@ enum ChangeInfoResult { typedef ChangeInfoResult (*VCI_Handler)(uint engine, int numinfo, int prop, ByteReader *buf); +/** + * Define properties common to all vehicles + * @param ei Engine info. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult CommonVehicleChangeInfo(EngineInfo *ei, int prop, ByteReader *buf) { switch (prop) { @@ -751,6 +786,14 @@ static ChangeInfoResult CommonVehicleChangeInfo(EngineInfo *ei, int prop, ByteRe return CIR_SUCCESS; } +/** + * Define properties for rail vehicles + * @param engine :ocal ID of the first vehicle. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1008,6 +1051,14 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop return ret; } +/** + * Define properties for road vehicles + * @param engine Local ID of the first vehicle. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1154,6 +1205,14 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop return ret; } +/** + * Define properties for ships + * @param engine Local ID of the first vehicle. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1288,6 +1347,14 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop return ret; } +/** + * Define properties for aircraft + * @param engine Local ID of the aircraft. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1406,6 +1473,14 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int return ret; } +/** + * Define properties for stations + * @param stdid StationID of the first station tile. + * @param numinfo Number of subsequent station tiles to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1640,6 +1715,14 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte return ret; } +/** + * Define properties for water features + * @param id Type of the first water feature. + * @param numinfo Number of subsequent water feature ids to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1670,6 +1753,14 @@ static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteRead return ret; } +/** + * Define properties for bridges + * @param brid BridgeID of the bridge. + * @param numinfo Number of subsequent bridgeIDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1774,6 +1865,12 @@ static ChangeInfoResult BridgeChangeInfo(uint brid, int numinfo, int prop, ByteR return ret; } +/** + * Ignore a house property + * @param prop Property to read. + * @param buf Property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -1830,6 +1927,14 @@ static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) return ret; } +/** + * Define properties for houses + * @param hid HouseID of the house. + * @param numinfo Number of subsequent houseIDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2066,7 +2171,7 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt * Get the language map associated with a given NewGRF and language. * @param grfid The NewGRF to get the map for. * @param language_id The (NewGRF) language ID to get the map for. - * @return the LanguageMap, or NULL if it couldn't be found. + * @return The LanguageMap, or NULL if it couldn't be found. */ /* static */ const LanguageMap *LanguageMap::GetLanguageMap(uint32 grfid, uint8 language_id) { @@ -2075,6 +2180,14 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt return (grffile != NULL && grffile->language_map != NULL && language_id < MAX_LANG) ? &grffile->language_map[language_id] : NULL; } +/** + * Define properties for global variables + * @param gvid ID of the global variable. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2361,6 +2474,14 @@ static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, B } +/** + * Define properties for cargos + * @param cid Local ID of the cargo. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2492,6 +2613,14 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea } +/** + * Define properties for sound effects + * @param sid Local ID of the sound. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2541,6 +2670,12 @@ static ChangeInfoResult SoundEffectChangeInfo(uint sid, int numinfo, int prop, B return ret; } +/** + * Ignore an industry tile property + * @param prop The property to ignore. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2569,6 +2704,14 @@ static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) return ret; } +/** + * Define properties for industry tiles + * @param indtid Local ID of the industry tile. + * @param numinfo Number of subsequent industry tile IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2681,6 +2824,12 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr return ret; } +/** + * Ignore an industry property + * @param prop The property to ignore. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -2762,9 +2911,9 @@ static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader *buf) /** * Validate the industry layout; e.g. to prevent duplicate tiles. - * @param layout the layout to check - * @param size the size of the layout - * @return true if the layout is deemed valid + * @param layout The layout to check. + * @param size The size of the layout. + * @return True if the layout is deemed valid. */ static bool ValidateIndustryLayout(const IndustryTileTable *layout, int size) { @@ -2793,6 +2942,14 @@ static void CleanIndustryTileTable(IndustrySpec *ind) } } +/** + * Define properties for industries + * @param indid Local ID of the industry. + * @param numinfo Number of subsequent industry IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3126,6 +3283,14 @@ static void DuplicateTileTable(AirportSpec *as) as->depot_table = depot_table; } +/** + * Define properties for airports + * @param airport Local ID of the airport. + * @param numinfo Number of subsequent airport IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3292,6 +3457,12 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B return ret; } +/** + * Ignore properties for objects + * @param prop The property to ignore. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3329,6 +3500,14 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) return ret; } +/** + * Define properties for objects + * @param id Local ID of the object. + * @param numinfo Number of subsequent objectIDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -3450,6 +3629,14 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea return ret; } +/** + * Define properties for railtypes + * @param id ID of the railtype. + * @param numinfo Number of subsequent IDs to change the property for. + * @param prop The property to change. + * @param buf The property value. + * @return ChangeInfoResult. + */ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteReader *buf) { ChangeInfoResult ret = CIR_SUCCESS; @@ -4923,11 +5110,11 @@ static void FeatureNewName(ByteReader *buf) /** * Sanitize incoming sprite offsets for Action 5 graphics replacements. - * @param num the number of sprites to load. - * @param offset offset from the base. - * @param max_sprites the maximum number of sprites that can be loaded in this action 5. - * @param name used for error warnings. - * @return the number of sprites that is going to be skipped + * @param num The number of sprites to load. + * @param offset Offset from the base. + * @param max_sprites The maximum number of sprites that can be loaded in this action 5. + * @param name Used for error warnings. + * @return The number of sprites that is going to be skipped. */ static uint16 SanitizeSpriteOffset(uint16& num, uint16 offset, int max_sprites, const char *name) { @@ -5388,7 +5575,7 @@ static void CfgApply(ByteReader *buf) * We could just tell the NewGRF querying that the file doesn't exist, * but that might give unwanted results. Disabling the NewGRF gives the * best result as no NewGRF author can complain about that. - * @param c the NewGRF to disable. + * @param c The NewGRF to disable. */ static void DisableStaticNewGRFInfluencingNonStaticNewGRFs(GRFConfig *c) { @@ -5920,7 +6107,7 @@ static uint32 PerformGRM(uint32 *grm, uint16 num_ids, uint16 count, uint8 op, ui } -/* Action 0x0D */ +/** Action 0x0D: Set parameter */ static void ParamSet(ByteReader *buf) { /* <0D> <target> <operation> <source1> <source2> [<data>] @@ -6269,7 +6456,7 @@ static void GRFInhibit(ByteReader *buf) } } -/* Action 0x0F */ +/** Action 0x0F - Define Town names */ static void FeatureTownName(ByteReader *buf) { /* <0F> <id> <style-name> <num-parts> <parts> @@ -6353,7 +6540,7 @@ static void FeatureTownName(ByteReader *buf) } } -/* Action 0x10 */ +/** Action 0x10 - Define goto label */ static void DefineGotoLabel(ByteReader *buf) { /* <10> <label> [<comment>] @@ -6537,7 +6724,7 @@ static void LoadGRFSound(ByteReader *buf) MemSetT(sound, 0); } -/* Action 0x12 */ +/** Action 0x12 */ static void LoadFontGlyph(ByteReader *buf) { /* <12> <num_def> <font_size> <num_char> <base_char> @@ -6564,7 +6751,7 @@ static void LoadFontGlyph(ByteReader *buf) } } -/* Action 0x12 (SKIP) */ +/** Action 0x12 (SKIP) */ static void SkipAct12(ByteReader *buf) { /* <12> <num_def> <font_size> <num_char> <base_char> @@ -6590,7 +6777,7 @@ static void SkipAct12(ByteReader *buf) grfmsg(3, "SkipAct12: Skipping %d sprites", _cur.skip_sprites); } -/* Action 0x13 */ +/** Action 0x13 */ static void TranslateGRFStrings(ByteReader *buf) { /* <13> <grfid> <num-ent> <offset> <text...> @@ -6933,6 +7120,7 @@ static bool ChangeGRFParamValueNames(ByteReader *buf) return true; } +/** Action14 parameter tags */ AllowedSubtags _tags_parameters[] = { AllowedSubtags('NAME', ChangeGRFParamName), AllowedSubtags('DESC', ChangeGRFParamDescription), @@ -6978,6 +7166,7 @@ static bool HandleParameterInfo(ByteReader *buf) return true; } +/** Action14 tags for the INFO node */ AllowedSubtags _tags_info[] = { AllowedSubtags('NAME', ChangeGRFName), AllowedSubtags('DESC', ChangeGRFDescription), @@ -6989,6 +7178,7 @@ AllowedSubtags _tags_info[] = { AllowedSubtags() }; +/** Action14 root tags */ AllowedSubtags _tags_root[] = { AllowedSubtags('INFO', _tags_info), AllowedSubtags() @@ -6997,6 +7187,8 @@ AllowedSubtags _tags_root[] = { /** * Try to skip the current node and all subnodes (if it's a branch node). + * @param buf Buffer. + * @param type The node type to skip. * @return True if we could skip the node, false if an error occured. */ static bool SkipUnknownInfo(ByteReader *buf, byte type) @@ -7031,6 +7223,14 @@ static bool SkipUnknownInfo(ByteReader *buf, byte type) return true; } +/** + * Handle the nodes of an Action14 + * @param type Type of node. + * @param id ID. + * @param buf Buffer. + * @param subtags Allowed subtags. + * @return Whether all tags could be handled. + */ static bool HandleNode(byte type, uint32 id, ByteReader *buf, AllowedSubtags subtags[]) { uint i = 0; @@ -7063,6 +7263,12 @@ static bool HandleNode(byte type, uint32 id, ByteReader *buf, AllowedSubtags sub return SkipUnknownInfo(buf, type); } +/** + * Handle the contents of a 'C' choice of an Action14 + * @param buf Buffer. + * @param subtags List of subtags. + * @return Whether the nodes could all be handled. + */ static bool HandleNodes(ByteReader *buf, AllowedSubtags subtags[]) { byte type = buf->ReadByte(); @@ -7074,14 +7280,17 @@ static bool HandleNodes(ByteReader *buf, AllowedSubtags subtags[]) return true; } -/* Action 0x14 */ +/** + * Handle Action 0x14 + * @param buf Buffer. + */ static void StaticGRFInfo(ByteReader *buf) { /* <14> <type> <id> <text/data...> */ HandleNodes(buf, _tags_root); } -/* 'Action 0xFF' */ +/** 'Action 0xFF' */ static void GRFDataBlock(ByteReader *buf) { /* <FF> <name_len> <name> '\0' <data> */ @@ -7111,8 +7320,11 @@ static void GRFDataBlock(ByteReader *buf) } } - -/* Used during safety scan on unsafe actions */ +/** + * Set the current NewGRF as unsafe for static use + * @param buf Unused. + * @note Used during safety scan on unsafe actions. + */ static void GRFUnsafe(ByteReader *buf) { SetBit(_cur.grfconfig->flags, GCF_UNSAFE); @@ -7122,6 +7334,7 @@ static void GRFUnsafe(ByteReader *buf) } +/** Initialize the TTDPatch flags */ static void InitializeGRFSpecial() { _ttdpatch_flags[0] = ((_settings_game.station.never_expire_airports ? 1 : 0) << 0x0C) // keepsmallairport @@ -7206,6 +7419,7 @@ static void InitializeGRFSpecial() | (1 << 0x1F); // any switch is on } +/** Reset and clear all NewGRF stations */ static void ResetCustomStations() { const GRFFile * const *end = _grf_files.End(); @@ -7240,6 +7454,7 @@ static void ResetCustomStations() } } +/** Reset and clear all NewGRF houses */ static void ResetCustomHouses() { const GRFFile * const *end = _grf_files.End(); @@ -7255,6 +7470,7 @@ static void ResetCustomHouses() } } +/** Reset and clear all NewGRF airports */ static void ResetCustomAirports() { const GRFFile * const *end = _grf_files.End(); @@ -7291,6 +7507,7 @@ static void ResetCustomAirports() } } +/** Reset and clear all NewGRF industries */ static void ResetCustomIndustries() { const GRFFile * const *end = _grf_files.End(); @@ -7330,6 +7547,7 @@ static void ResetCustomIndustries() } } +/** Reset and clear all NewObjects */ static void ResetCustomObjects() { const GRFFile * const *end = _grf_files.End(); @@ -7345,7 +7563,7 @@ static void ResetCustomObjects() } } - +/** Reset and clear all NewGRFs */ static void ResetNewGRF() { const GRFFile * const *end = _grf_files.End(); @@ -7362,6 +7580,7 @@ static void ResetNewGRF() _cur.grffile = NULL; } +/** Clear all NewGRF errors */ static void ResetNewGRFErrors() { for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) { @@ -7480,6 +7699,10 @@ void ResetPersistentNewGRFData() _airporttile_mngr.ResetMapping(); } +/** + * Construct the Cargo Mapping + * @note This is the reverse of a cargo translation table + */ static void BuildCargoTranslationMap() { memset(_cur.grffile->cargo_map, 0xFF, sizeof(_cur.grffile->cargo_map)); @@ -7503,6 +7726,10 @@ static void BuildCargoTranslationMap() } } +/** + * Prepare loading a NewGRF file with its config + * @param config The NewGRF configuration struct with name, id, parameters and alike. + */ static void InitNewGRFFile(const GRFConfig *config) { GRFFile *newfile = GetFileByFilename(config->filename); @@ -8337,6 +8564,7 @@ void InitDepotWindowBlockSizes(); extern void InitGRFTownGeneratorNames(); +/** Finish loading NewGRFs and execute needed post-processing */ static void AfterLoadGRFs() { for (StringIDToGRFIDMapping::iterator it = _string_to_grf_mapping.begin(); it != _string_to_grf_mapping.end(); it++) { @@ -8519,6 +8747,11 @@ void LoadNewGRF(uint load_index, uint file_index) _display_opt = display_opt; } +/** + * Check for grf miscelaneous bits + * @param bit The bit to check. + * @return Whether the bit is set. + */ bool HasGrfMiscBit(GrfMiscBit bit) { return HasBit(_misc_grf_features, bit); |