|
@@ -124,67 +124,67 @@ struct GRFParameterInfo {
|
|
|
GRFParameterInfo(uint nr);
|
|
|
GRFParameterInfo(GRFParameterInfo &info);
|
|
|
~GRFParameterInfo();
|
|
|
struct GRFText *name; ///< The name of this parameter
|
|
|
struct GRFText *desc; ///< The description of this parameter
|
|
|
GRFParameterType type; ///< The type of this parameter
|
|
|
uint32 min_value; ///< The minimal value this parameter can have
|
|
|
uint32 max_value; ///< The maximal value of this parameter
|
|
|
uint32 def_value; ///< Default value of this parameter
|
|
|
byte param_nr; ///< GRF parameter to store content in
|
|
|
byte first_bit; ///< First bit to use in the GRF parameter
|
|
|
byte num_bit; ///< Number of bits to use for this parameter
|
|
|
SmallMap<uint32, struct GRFText *, 8> value_names; ///< Names for each value.
|
|
|
SmallMap<uint32, struct GRFText *> value_names; ///< Names for each value.
|
|
|
bool complete_labels; ///< True if all values have a label.
|
|
|
|
|
|
uint32 GetValue(struct GRFConfig *config) const;
|
|
|
void SetValue(struct GRFConfig *config, uint32 value);
|
|
|
void Finalize();
|
|
|
};
|
|
|
|
|
|
/** Reference counted wrapper around a GRFText pointer. */
|
|
|
struct GRFTextWrapper : public SimpleCountedObject {
|
|
|
struct GRFText *text; ///< The actual text
|
|
|
|
|
|
GRFTextWrapper();
|
|
|
~GRFTextWrapper();
|
|
|
};
|
|
|
|
|
|
/** Information about GRF, used in the game and (part of it) in savegames */
|
|
|
struct GRFConfig : ZeroedMemoryAllocator {
|
|
|
GRFConfig(const char *filename = NULL);
|
|
|
GRFConfig(const GRFConfig &config);
|
|
|
~GRFConfig();
|
|
|
|
|
|
GRFIdentifier ident; ///< grfid and md5sum to uniquely identify newgrfs
|
|
|
uint8 original_md5sum[16]; ///< MD5 checksum of original file if only a 'compatible' file was loaded
|
|
|
char *filename; ///< Filename - either with or without full path
|
|
|
GRFTextWrapper *name; ///< NOSAVE: GRF name (Action 0x08)
|
|
|
GRFTextWrapper *info; ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08)
|
|
|
GRFTextWrapper *url; ///< NOSAVE: URL belonging to this GRF.
|
|
|
GRFError *error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B)
|
|
|
GRFIdentifier ident; ///< grfid and md5sum to uniquely identify newgrfs
|
|
|
uint8 original_md5sum[16]; ///< MD5 checksum of original file if only a 'compatible' file was loaded
|
|
|
char *filename; ///< Filename - either with or without full path
|
|
|
GRFTextWrapper *name; ///< NOSAVE: GRF name (Action 0x08)
|
|
|
GRFTextWrapper *info; ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08)
|
|
|
GRFTextWrapper *url; ///< NOSAVE: URL belonging to this GRF.
|
|
|
GRFError *error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B)
|
|
|
|
|
|
uint32 version; ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown
|
|
|
uint32 min_loadable_version; ///< NOSAVE: Minimum compatible version a NewGRF can define
|
|
|
uint8 flags; ///< NOSAVE: GCF_Flags, bitset
|
|
|
GRFStatus status; ///< NOSAVE: GRFStatus, enum
|
|
|
uint32 grf_bugs; ///< NOSAVE: bugs in this GRF in this run, @see enum GRFBugs
|
|
|
uint32 param[0x80]; ///< GRF parameters
|
|
|
uint8 num_params; ///< Number of used parameters
|
|
|
uint8 num_valid_params; ///< NOSAVE: Number of valid parameters (action 0x14)
|
|
|
uint8 palette; ///< GRFPalette, bitset
|
|
|
uint32 version; ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown
|
|
|
uint32 min_loadable_version; ///< NOSAVE: Minimum compatible version a NewGRF can define
|
|
|
uint8 flags; ///< NOSAVE: GCF_Flags, bitset
|
|
|
GRFStatus status; ///< NOSAVE: GRFStatus, enum
|
|
|
uint32 grf_bugs; ///< NOSAVE: bugs in this GRF in this run, @see enum GRFBugs
|
|
|
uint32 param[0x80]; ///< GRF parameters
|
|
|
uint8 num_params; ///< Number of used parameters
|
|
|
uint8 num_valid_params; ///< NOSAVE: Number of valid parameters (action 0x14)
|
|
|
uint8 palette; ///< GRFPalette, bitset
|
|
|
std::vector<GRFParameterInfo *> param_info; ///< NOSAVE: extra information about the parameters
|
|
|
bool has_param_defaults; ///< NOSAVE: did this newgrf specify any defaults for it's parameters
|
|
|
bool has_param_defaults; ///< NOSAVE: did this newgrf specify any defaults for it's parameters
|
|
|
|
|
|
struct GRFConfig *next; ///< NOSAVE: Next item in the linked list
|
|
|
struct GRFConfig *next; ///< NOSAVE: Next item in the linked list
|
|
|
|
|
|
void CopyParams(const GRFConfig &src);
|
|
|
|
|
|
const char *GetTextfile(TextfileType type) const;
|
|
|
const char *GetName() const;
|
|
|
const char *GetDescription() const;
|
|
|
const char *GetURL() const;
|
|
|
|
|
|
void SetParameterDefaults();
|
|
|
void SetSuitablePalette();
|
|
|
void FinalizeParameterInfo();
|
|
|
};
|