newgrf.h
author bjarni
Wed, 27 Sep 2006 11:34:27 +0000
changeset 4646 d3d73ee03bbc
parent 3865 b80b50f14fcd
child 4656 9c1d8c4d3e60
permissions -rw-r--r--
(svn r6522) -Feature: [depot window] the buttons are now "scaled" resized
This means that "Build vehicle", "Clone vehicle" and "Location" will always fill the space from the left window border to the resize button and they are equal in size
The sell button will also use all the space between the start/stop buttons and the resize button and for trains, the sell button is split into two buttons in equal sizes
This will prevent the issue where a small window is resized into a large one and the buttons remains pretty small
-Codechange: [depot window] The enum with widget names is now changed into automatic numbering so all lines will not have to be changed each time a new widget is added
/* $Id$ */

#ifndef NEWGRF_H
#define NEWGRF_H

#include "station.h"

typedef struct GRFLabel {
	byte label;
	uint32 nfo_line;
	uint32 pos;
	struct GRFLabel *next;
} GRFLabel;

typedef struct GRFFile {
	char *filename;
	uint32 grfid;
	uint16 flags;
	uint16 sprite_offset;
	byte grf_version;
	struct 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. */

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

	int spritegroups_count;
	struct SpriteGroup **spritegroups;

	StationSpec **stations;

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

	GRFLabel *label; ///< Pointer to the first label. This is a linked list, not an array.
} GRFFile;

extern GRFFile *_first_grffile;

typedef struct GRFConfig {
	const char *filename;
	uint32 param[0x80];
	byte num_params;

	struct GRFConfig *next;
} GRFConfig;

extern GRFConfig *_first_grfconfig;
extern SpriteID _signal_base;

void LoadNewGRF(uint load_index, uint file_index);

#endif /* NEWGRF_H */