(svn r5888) -Fix: [autoreplace] if vehicles breakdowns and service are turned off, the vehicles failed to enter any depots
now they will quickly go to a depot if set to be replaced
the tradeoff is that a vehicle set to be replaced and without a depot in the orders will forget about the orders and head for a depot. If the replace fails (lack of money), it will exit and try to head for the depot again
also all vehicles of that type will rush to the depots at once, risking causing traffic jams. This is because there is no way to even it out like normal depot visits offers
Tip: add a depot to the orders of all vehicles, set it to service only and it will always be skipped unless the vehicle is set to be replaced. This should help on the jam issue and if the replace fails, the vehicle will go though a whole round of the orders and make more money before trying again
/* $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 */