author | rubidium |
Wed, 09 Jan 2008 18:11:12 +0000 | |
branch | noai |
changeset 9723 | eee46cb39750 |
parent 9722 | ebf0ece7d8f6 |
child 9724 | b39bc69bb2f2 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
9505 | 3 |
/** @file news.h */ |
4 |
||
0 | 5 |
#ifndef NEWS_H |
6 |
#define NEWS_H |
|
7 |
||
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
8 |
#include "window_type.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
9 |
#include "vehicle_type.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
10 |
#include "tile_type.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
11 |
#include "date_type.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
12 |
|
0 | 13 |
struct NewsItem { |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
14 |
StringID string_id; ///< Message text (sometimes also used for storing other info) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
15 |
uint16 duration; ///< Remaining time for showing this news message |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
16 |
Date date; ///< Date of the news |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
17 |
byte flags; ///< NewsFlags bits @see NewsFlags |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
18 |
byte display_mode; ///< Display mode value @see NewsMode |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
19 |
byte type; ///< News category @see NewsType |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
20 |
byte callback; ///< Call-back function |
0 | 21 |
|
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
22 |
TileIndex data_a; ///< Reference to tile or vehicle |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
23 |
TileIndex data_b; ///< Reference to second tile or vehicle |
0 | 24 |
|
9629 | 25 |
uint64 params[10]; |
0 | 26 |
}; |
27 |
||
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
|
28 |
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
|
29 |
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
|
30 |
typedef StringID GetNewsStringCallbackProc(const NewsItem *ni); |
0 | 31 |
|
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
32 |
/** |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
33 |
* Macro for creating news flags. |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
34 |
* @param mode (bits 0 - 7) Display_mode, one of the NewsMode enums (NM_) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
35 |
* @param flag (bits 8 - 15) OR-able news flags, any of the NewsFlags enums (NF_) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
36 |
* @param type (bits 16-23) News category, one of the NewsType enums (NT_) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
37 |
* @param cb (bits 24-31) Call-back function, one of the NewsCallback enums (DNC_) or 0 if no callback |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
38 |
* @see NewsMode |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
39 |
* @see NewsFlags |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
40 |
* @see NewsType |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
41 |
* @see NewsCallback |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
42 |
* @see AddNewsItem |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
43 |
*/ |
9601
b499fdd106d5
(svn r9713) [NoAI] -Sync with trunk (r9631:9712).
rubidium
parents:
9505
diff
changeset
|
44 |
#define NEWS_FLAGS(mode, flag, type, cb) ((cb) << 24 | (type) << 16 | (flag) << 8 | (mode)) |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
45 |
|
0 | 46 |
void AddNewsItem(StringID string, uint32 flags, uint data_a, uint data_b); |
6573 | 47 |
void NewsLoop(); |
427 | 48 |
void DrawNewsBorder(const Window *w); |
6573 | 49 |
void InitNewsItemStructs(); |
0 | 50 |
|
51 |
VARDEF NewsItem _statusbar_news_item; |
|
52 |
||
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
53 |
/** Type of news. */ |
4873
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
54 |
enum NewsType { |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
55 |
NT_ARRIVAL_PLAYER, ///< Cargo arrived for player |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
56 |
NT_ARRIVAL_OTHER, ///< Cargo arrived for competitor |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
57 |
NT_ACCIDENT, ///< An accident or disaster has occurred |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
58 |
NT_COMPANY_INFO, ///< Company info (new companies, bankrupcy messages) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
59 |
NT_OPENCLOSE, ///< Opening and closing of industries |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
60 |
NT_ECONOMY, ///< Economic changes (recession, industry up/dowm) |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9703
diff
changeset
|
61 |
NT_INDUSTRY_PLAYER, ///< Production changes of industry serviced by local player |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9703
diff
changeset
|
62 |
NT_INDUSTRY_OTHER, ///< Production changes of industry serviced by competitor(s) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9703
diff
changeset
|
63 |
NT_INDUSTRY_NOBODY, ///< Other industry production changes |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
64 |
NT_ADVICE, ///< Bits of news about vehicles of the player |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
65 |
NT_NEW_VEHICLES, ///< New vehicle has become available |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
66 |
NT_ACCEPTANCE, ///< A type of cargo is (no longer) accepted |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
67 |
NT_SUBSIDIES, ///< News about subsidies (announcements, expirations, acceptance) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
68 |
NT_GENERAL, ///< General news (from towns) |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
69 |
NT_END, ///< end-of-array marker |
0 | 70 |
}; |
71 |
||
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
|
72 |
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
|
73 |
|
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
74 |
/** |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
75 |
* News mode. |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
76 |
* @see NEWS_FLAGS |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
77 |
*/ |
0 | 78 |
enum NewsMode { |
4873
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
79 |
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
|
80 |
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
|
81 |
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
|
82 |
NM_CALLBACK = 3, ///< Do some special processing before displaying news message. Which callback to call is in NewsCallback |
0 | 83 |
}; |
84 |
||
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
85 |
/** |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
86 |
* Various OR-able news-item flags. |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
87 |
* note: NF_INCOLOR is set automatically if needed |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
88 |
* @see NEWS_FLAGS |
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
89 |
*/ |
0 | 90 |
enum NewsFlags { |
4873
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
91 |
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
|
92 |
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
|
93 |
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
|
94 |
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
|
95 |
NF_INCOLOR = (1 << 5), ///< Show the newsmessage in colour, otherwise it defaults to black & white |
0 | 96 |
}; |
97 |
||
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
98 |
/** Special news items */ |
4873
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
99 |
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
|
100 |
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
|
101 |
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
|
102 |
}; |
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
103 |
|
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9629
diff
changeset
|
104 |
/** Kinds of bankrupcy */ |
4873
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
105 |
enum NewsBankrupcy { |
7cb19235cf60
(svn r6803) -Codechange: Substitute magic numbers by an enum for the news windows
Darkvater
parents:
4344
diff
changeset
|
106 |
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
|
107 |
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
|
108 |
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
|
109 |
NB_BNEWCOMPANY = (4 << 4), ///< A new company has been started |
0 | 110 |
}; |
111 |
||
3139
4c950c7ec5c9
(svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents:
2186
diff
changeset
|
112 |
/** |
4c950c7ec5c9
(svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents:
2186
diff
changeset
|
113 |
* 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
|
114 |
* 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
|
115 |
* deleted |
4c950c7ec5c9
(svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents:
2186
diff
changeset
|
116 |
*/ |
4c950c7ec5c9
(svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents:
2186
diff
changeset
|
117 |
void DeleteVehicleNews(VehicleID, StringID news); |
4c950c7ec5c9
(svn r3757) -Feature: Delete news items about vehicles, when they get stale
tron
parents:
2186
diff
changeset
|
118 |
|
0 | 119 |
#endif /* NEWS_H */ |