(svn r6755) - Fix: Pass the newly created vehicle when checking for articulated engines. As this could result in more parts being added than previously counted, we check to see if we need to allocate more vehicles as we add parts.
/* $Id$ */
#ifndef NEWS_H
#define NEWS_H
struct NewsItem {
StringID string_id;
uint16 duration;
Date date;
byte flags;
byte display_mode;
byte type;
byte callback;
TileIndex data_a;
TileIndex data_b;
uint32 params[10];
};
typedef bool ValidationProc ( uint data_a, uint data_b );
typedef void DrawNewsCallbackProc(Window *w);
typedef StringID GetNewsStringCallbackProc(const NewsItem *ni);
#define NEWS_FLAGS(mode,flag,type,cb) ((cb)<<24 | (type)<<16 | (flag)<<8 | (mode))
void AddNewsItem(StringID string, uint32 flags, uint data_a, uint data_b);
void NewsLoop(void);
void DrawNewsBorder(const Window *w);
void InitNewsItemStructs(void);
VARDEF NewsItem _statusbar_news_item;
enum {
NT_ARRIVAL_PLAYER = 0,
NT_ARRIVAL_OTHER = 1,
NT_ACCIDENT = 2,
NT_COMPANY_INFO = 3,
NT_ECONOMY = 4,
NT_ADVICE = 5,
NT_NEW_VEHICLES = 6,
NT_ACCEPTANCE = 7,
NT_SUBSIDIES = 8,
NT_GENERAL = 9,
};
enum NewsMode {
NM_SMALL = 0,
NM_NORMAL = 1,
NM_THIN = 2,
NM_CALLBACK = 3,
};
enum NewsFlags {
NF_VIEWPORT = 0x01,
NF_TILE = 0x04,
NF_VEHICLE = 0x08,
NF_FORCE_BIG = 0x10,
NF_NOEXPIRE = 0x20,
NF_INCOLOR = 0x40,
};
enum {
DNC_TRAINAVAIL = 0,
DNC_ROADAVAIL = 1,
DNC_SHIPAVAIL = 2,
DNC_AIRCRAFTAVAIL = 3,
DNC_BANKRUPCY = 4,
};
/**
* Delete a news item type about a vehicle
* if the news item type is INVALID_STRING_ID all news about the vehicle get
* deleted
*/
void DeleteVehicleNews(VehicleID, StringID news);
#endif /* NEWS_H */