news.h
author peter1138
Thu, 12 Oct 2006 15:03:19 +0000
changeset 4831 ffc748f7e3e6
parent 4344 7e123fec5b0b
child 4873 11880cbbc9f6
permissions -rw-r--r--
(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 */