tron@2186: /* $Id$ */ tron@2186: dominik@455: #ifndef NEWGRF_H dominik@455: #define NEWGRF_H dominik@455: pasky@463: #include "station.h" peter1138@5228: #include "newgrf_config.h" pasky@463: peter1138@5225: typedef enum GrfLoadingStage { peter1138@5228: GLS_FILESCAN, peter1138@5329: GLS_SAFETYSCAN, peter1138@5225: GLS_LABELSCAN, peter1138@5225: GLS_INIT, peter1138@5225: GLS_ACTIVATION, peter1138@5225: GLS_END, peter1138@5225: } GrfLoadingStage; peter1138@5225: Darkvater@3561: typedef struct GRFLabel { Darkvater@3561: byte label; Darkvater@3561: uint32 nfo_line; Darkvater@3561: uint32 pos; Darkvater@3561: struct GRFLabel *next; Darkvater@3561: } GRFLabel; Darkvater@3561: Darkvater@3628: typedef struct GRFFile { dominik@455: char *filename; dominik@455: uint32 grfid; dominik@455: uint16 sprite_offset; peter1138@3640: byte grf_version; Darkvater@3628: struct GRFFile *next; dominik@455: dominik@455: /* A sprite group contains all sprites of a given vehicle (or multiple dominik@455: * vehicles) when carrying given cargo. It consists of several sprite dominik@455: * sets. Group ids are refered as "cargo id"s by TTDPatch dominik@455: * documentation, contributing to the global confusion. dominik@455: * dominik@455: * A sprite set contains all sprites of a given vehicle carrying given dominik@455: * cargo at a given *stage* - that is usually its load stage. Ie. you dominik@455: * can have a spriteset for an empty wagon, wagon full of coal, dominik@455: * half-filled wagon etc. Each spriteset contains eight sprites (one dominik@455: * per direction) or four sprites if the vehicle is symmetric. */ dominik@455: peter1138@3707: SpriteID spriteset_start; dominik@455: int spriteset_numsets; dominik@455: int spriteset_numents; dominik@455: int spriteset_feature; dominik@455: dominik@455: int spritegroups_count; peter1138@3865: struct SpriteGroup **spritegroups; dominik@455: peter1138@4656: uint sound_offset; peter1138@4656: peter1138@3768: StationSpec **stations; tron@2345: tron@2345: uint32 param[0x80]; tron@2345: uint param_end; /// one more than the highest set parameter Darkvater@3561: Darkvater@3561: GRFLabel *label; ///< Pointer to the first label. This is a linked list, not an array. Darkvater@3628: } GRFFile; dominik@455: tron@1477: extern GRFFile *_first_grffile; dominik@455: peter1138@3638: extern SpriteID _signal_base; peter1138@5210: extern SpriteID _coast_base; peter1138@4742: extern bool _have_2cc; pasky@463: peter1138@5228: void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage); tron@2342: void LoadNewGRF(uint load_index, uint file_index); Darkvater@5352: void ReloadNewGRFData(void); // in openttd.c dominik@455: Darkvater@5568: void CDECL grfmsg(int severity, const char *str, ...); Darkvater@5568: dominik@455: #endif /* NEWGRF_H */