src/news.h
author rubidium
Mon, 24 Sep 2007 20:56:33 +0000
changeset 8123 2f8dfb527d7c
parent 8094 58a8fe00746a
child 6871 5a9dc001e1ad
permissions -rw-r--r--
(svn r11158) -Codechange: reduce the amount of Random calls needed when we do not have NewGRF industries that actually need the random bits.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2101
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2101
diff changeset
     2
6674
64f4781b4653 (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6609
diff changeset
     3
/** @file news.h */
64f4781b4653 (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6609
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#ifndef NEWS_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     6
#define NEWS_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     8
struct NewsItem {
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
     9
	StringID string_id; ///< Message text (sometimes also used for storing other info)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    10
	uint16 duration;    ///< Remaining time for showing this news message
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    11
	Date date;          ///< Date of the news
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    12
	byte flags;         ///< NewsFlags bits @see NewsFlags
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    13
	byte display_mode;  ///< Display mode value @see NewsMode
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    14
	byte type;          ///< News category @see NewsType
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    15
	byte callback;      ///< Call-back function
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    16
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    17
	TileIndex data_a;   ///< Reference to tile or vehicle
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    18
	TileIndex data_b;   ///< Reference to second tile or vehicle
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    19
7502
71f5d2c6a605 (svn r10262) -Fix (r10258): some places that needed to be changed to uint64 were hidden/forgotten, which caused memory corruptions and that in caused all kinds of assertions to trigger.
rubidium
parents: 6987
diff changeset
    20
	uint64 params[10];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    21
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    22
715
83805642c830 (svn r1167) Feature: Added the possibility to add validation functions to NewsItems. This is now done for "Train in depot" messages. Before displaying such a message, it checks if the train really still is in the depot. Can be applied to other news items as well.
dominik
parents: 427
diff changeset
    23
typedef bool ValidationProc ( uint data_a, uint data_b );
83805642c830 (svn r1167) Feature: Added the possibility to add validation functions to NewsItems. This is now done for "Train in depot" messages. Before displaying such a message, it checks if the train really still is in the depot. Can be applied to other news items as well.
dominik
parents: 427
diff changeset
    24
typedef void DrawNewsCallbackProc(Window *w);
2101
763d0d48f39c (svn r2611) - CodeChange: use standardized truncutation with the newsmessage-history window as well
Darkvater
parents: 715
diff changeset
    25
typedef StringID GetNewsStringCallbackProc(const NewsItem *ni);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    26
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    27
/**
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    28
 * Macro for creating news flags.
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    29
 * @param mode (bits 0 - 7) Display_mode, one of the NewsMode enums (NM_)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    30
 * @param flag (bits 8 - 15) OR-able news flags, any of the NewsFlags enums (NF_)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    31
 * @param type (bits 16-23) News category, one of the NewsType enums (NT_)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    32
 * @param cb (bits 24-31) Call-back function, one of the NewsCallback enums (DNC_) or 0 if no callback
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    33
 * @see NewsMode
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    34
 * @see NewsFlags
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    35
 * @see NewsType
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    36
 * @see NewsCallback
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    37
 * @see AddNewsItem
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    38
 */
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6674
diff changeset
    39
#define NEWS_FLAGS(mode, flag, type, cb) ((cb) << 24 | (type) << 16 | (flag) << 8 | (mode))
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    40
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    41
void AddNewsItem(StringID string, uint32 flags, uint data_a, uint data_b);
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6535
diff changeset
    42
void NewsLoop();
427
d87c7d677d2f (svn r626) Merge r438 to trunk:
tron
parents: 0
diff changeset
    43
void DrawNewsBorder(const Window *w);
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6535
diff changeset
    44
void InitNewsItemStructs();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    45
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    46
VARDEF NewsItem _statusbar_news_item;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    47
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    48
/** Type of news. */
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    49
enum NewsType {
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    50
	NT_ARRIVAL_PLAYER,  ///< Cargo arrived for player
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    51
	NT_ARRIVAL_OTHER,   ///< Cargo arrived for competitor
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    52
	NT_ACCIDENT,        ///< An accident or disaster has occurred
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    53
	NT_COMPANY_INFO,    ///< Company info (new companies, bankrupcy messages)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    54
	NT_OPENCLOSE,       ///< Opening and closing of industries
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    55
	NT_ECONOMY,         ///< Economic changes (recession, industry up/dowm)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    56
	NT_ADVICE,          ///< Bits of news about vehicles of the player
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    57
	NT_NEW_VEHICLES,    ///< New vehicle has become available
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    58
	NT_ACCEPTANCE,      ///< A type of cargo is (no longer) accepted
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    59
	NT_SUBSIDIES,       ///< News about subsidies (announcements, expirations, acceptance)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    60
	NT_GENERAL,         ///< General news (from towns)
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    61
	NT_END,             ///< end-of-array marker
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    62
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    63
6609
7c466c7c850a (svn r9097) -Fix [FS#525]: open and close messages now have their own setting, so you can hide economy changes, but do show open/close of industries
truelight
parents: 6605
diff changeset
    64
extern const char *_news_display_name[NT_END];
7c466c7c850a (svn r9097) -Fix [FS#525]: open and close messages now have their own setting, so you can hide economy changes, but do show open/close of industries
truelight
parents: 6605
diff changeset
    65
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    66
/**
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    67
 * News mode.
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    68
 * @see NEWS_FLAGS
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    69
 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    70
enum NewsMode {
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    71
	NM_SMALL    = 0, ///< Show only a small popup informing us about vehicle age for example
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    72
	NM_NORMAL   = 1, ///< Show a simple news message (height 170 pixels)
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    73
	NM_THIN     = 2, ///< Show a simple news message (height 130 pixels)
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    74
	NM_CALLBACK = 3, ///< Do some special processing before displaying news message. Which callback to call is in NewsCallback
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    75
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    76
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    77
/**
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    78
 * Various OR-able news-item flags.
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    79
 * note: NF_INCOLOR is set automatically if needed
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    80
 * @see NEWS_FLAGS
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    81
 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    82
enum NewsFlags {
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    83
	NF_VIEWPORT  = (1 << 1), ///< Does the news message have a viewport? (ingame picture of happening)
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    84
	NF_TILE      = (1 << 2), ///< When clicked on the news message scroll to a given tile? Tile is in data_a/data_b
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    85
	NF_VEHICLE   = (1 << 3), ///< When clicked on the message scroll to the vehicle? VehicleID is in data_a
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    86
	NF_FORCE_BIG = (1 << 4), ///< Force the appearance of a news message if it has already been shown (internal)
4874
b95cdd66085f (svn r6804) -Codechange: Remove the unused NF_NOEXPIRE flag.
Darkvater
parents: 4873
diff changeset
    87
	NF_INCOLOR   = (1 << 5), ///< Show the newsmessage in colour, otherwise it defaults to black & white
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    88
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    89
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    90
/** Special news items */
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    91
enum NewsCallback {
6535
1a5437f36d78 (svn r9001) -Codechange: remove duplication of functions and strings with respect to the news of new vehicles.
rubidium
parents: 5726
diff changeset
    92
	DNC_VEHICLEAVAIL  = 0, ///< Show new vehicle available message. StringID is EngineID
1a5437f36d78 (svn r9001) -Codechange: remove duplication of functions and strings with respect to the news of new vehicles.
rubidium
parents: 5726
diff changeset
    93
	DNC_BANKRUPCY     = 1, ///< Show bankrupcy message. StringID is PlayerID (0-3) and NewsBankrupcy (4-7)
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    94
};
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    95
8094
58a8fe00746a (svn r11125) -Documentation: add/update the documentation of news*. Based on a patch by Progman.
rubidium
parents: 7502
diff changeset
    96
/** Kinds of bankrupcy */
4873
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    97
enum NewsBankrupcy {
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    98
	NB_BTROUBLE    = (1 << 4), ///< Company is in trouble (warning)
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
    99
	NB_BMERGER     = (2 << 4), ///< Company has been bought by another company
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
   100
	NB_BBANKRUPT   = (3 << 4), ///< Company has gone bankrupt
7cb19235cf60 (svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents: 4344
diff changeset
   101
	NB_BNEWCOMPANY = (4 << 4), ///< A new company has been started
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   102
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   103
3139
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   104
/**
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   105
 * Delete a news item type about a vehicle
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   106
 * if the news item type is INVALID_STRING_ID all news about the vehicle get
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   107
 * deleted
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   108
 */
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   109
void DeleteVehicleNews(VehicleID, StringID news);
4c950c7ec5c9 (svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents: 2186
diff changeset
   110
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   111
#endif /* NEWS_H */