newgrf.h
author Darkvater
Mon, 20 Feb 2006 19:42:39 +0000
changeset 3046 baa216f9911a
parent 2766 3a33fe670d29
child 3501 0a0c5bcc9a72
permissions -rw-r--r--
(svn r3626) - Merge the SlGlobVarList (global variables) and SaveLoad (offset in struct, variable determined runtime) structs. The only difference between these two is the last element that either holds the address or the offset in the struct. Which one to take is determined by which function is called; SlObject or SlGlobList.
/* $Id$ */

#ifndef NEWGRF_H
#define NEWGRF_H

#include "sprite.h"
#include "station.h"

typedef struct GRFFile GRFFile;
struct GRFFile {
	char *filename;
	uint32 grfid;
	uint16 flags;
	uint16 sprite_offset;
	SpriteID first_spriteset; ///< Holds the first spriteset's sprite offset.
	GRFFile *next;

	/* A sprite group contains all sprites of a given vehicle (or multiple
	 * vehicles) when carrying given cargo. It consists of several sprite
	 * sets.  Group ids are refered as "cargo id"s by TTDPatch
	 * documentation, contributing to the global confusion.
	 *
	 * A sprite set contains all sprites of a given vehicle carrying given
	 * cargo at a given *stage* - that is usually its load stage. Ie. you
	 * can have a spriteset for an empty wagon, wagon full of coal,
	 * half-filled wagon etc.  Each spriteset contains eight sprites (one
	 * per direction) or four sprites if the vehicle is symmetric. */

	int spriteset_start;
	int spriteset_numsets;
	int spriteset_numents;
	int spriteset_feature;

	int spritegroups_count;
	SpriteGroup **spritegroups;

	StationSpec stations[256];

	uint32 param[0x80];
	uint param_end; /// one more than the highest set parameter
};

extern GRFFile *_first_grffile;


void LoadNewGRF(uint load_index, uint file_index);

#endif /* NEWGRF_H */