summaryrefslogtreecommitdiff
path: root/src/news_gui.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-11-15 22:20:33 +0000
committerrubidium <rubidium@openttd.org>2007-11-15 22:20:33 +0000
commit4dcd71038dae4f16bf09f5801527c6cc1de0fe50 (patch)
tree88015240b86be132230200ee9125a9aa2693955d /src/news_gui.cpp
parent70c7a44a4d6fb087ec2cbc00ca30fc9ed82e4cba (diff)
downloadopenttd-4dcd71038dae4f16bf09f5801527c6cc1de0fe50.tar.xz
(svn r11442) -Feature: make news messages related to the industry (production) changes better configurable; you can now disable news messages popping up for industries you are not servicing. Patch by Alberth.
Diffstat (limited to 'src/news_gui.cpp')
-rw-r--r--src/news_gui.cpp193
1 files changed, 113 insertions, 80 deletions
diff --git a/src/news_gui.cpp b/src/news_gui.cpp
index bf862da22..f26cc11a8 100644
--- a/src/news_gui.cpp
+++ b/src/news_gui.cpp
@@ -341,6 +341,9 @@ static const byte _news_items_age[NT_END] = {
60, ///< NT_COMPANY_INFO
90, ///< NT_OPENCLOSE
30, ///< NT_ECONOMY
+ 30, ///< NT_INDUSTRY_PLAYER
+ 30, ///< NT_INDUSTRY_OTHER
+ 30, ///< NT_INDUSTRY_NOBODY
150, ///< NT_ADVICE
30, ///< NT_NEW_VEHICLES
90, ///< NT_ACCEPTANCE
@@ -394,17 +397,20 @@ static WindowDesc _news_type0_desc = {
};
static const SoundFx _news_sounds[NT_END] = {
- SND_1D_APPLAUSE,
- SND_1D_APPLAUSE,
- SND_BEGIN,
- SND_BEGIN,
- SND_BEGIN,
- SND_BEGIN,
- SND_BEGIN,
- SND_1E_OOOOH,
- SND_BEGIN,
- SND_BEGIN,
- SND_BEGIN,
+ SND_1D_APPLAUSE, ///< NT_ARRIVAL_PLAYER
+ SND_1D_APPLAUSE, ///< NT_ARRIVAL_OTHER
+ SND_BEGIN, ///< NT_ACCIDENT
+ SND_BEGIN, ///< NT_COMPANY_INFO
+ SND_BEGIN, ///< NT_OPENCLOSE
+ SND_BEGIN, ///< NT_ECONOMY
+ SND_BEGIN, ///< NT_INDUSTRY_PLAYER
+ SND_BEGIN, ///< NT_INDUSTRY_OTHER
+ SND_BEGIN, ///< NT_INDUSTRY_NOBODY
+ SND_BEGIN, ///< NT_ADVICE
+ SND_1E_OOOOH, ///< NT_NEW_VEHICLES
+ SND_BEGIN, ///< NT_ACCEPTANCE
+ SND_BEGIN, ///< NT_SUBSIDIES
+ SND_BEGIN, ///< NT_GENERAL
};
const char *_news_display_name[NT_END] = {
@@ -414,6 +420,9 @@ const char *_news_display_name[NT_END] = {
"company_info",
"openclose",
"economy",
+ "production_player",
+ "production_other",
+ "production_nobody",
"advice",
"new_vehicles",
"acceptance",
@@ -771,6 +780,7 @@ void ShowMessageHistory()
}
+/** News settings window widget offset constants */
enum {
WIDGET_NEWSOPT_BTN_SUMMARY = 4, ///< Button that adjusts at once the level for all settings
WIDGET_NEWSOPT_DROP_SUMMARY, ///< Drop down button for same upper button
@@ -880,83 +890,106 @@ static void MessageOptionsWndProc(Window *w, WindowEvent *e)
}
}
+
+/*
+* The news settings window widgets
+*
+* Main part of the window is a list of news-setting lines, one for each news category.
+* Each line is constructed by an expansion of the \c NEWS_SETTINGS_LINE macro
+*/
+
+/**
+* Macro to construct one news-setting line in the news-settings window.
+* One line consists of four widgets, namely
+* - A [<] button
+* - A [...] label
+* - A [>] button
+* - A text label describing the news category
+* Horizontal positions of the widgets are hard-coded, vertical start position is (\a basey + \a linenum * \c NEWS_SETTING_BASELINE_SKIP).
+* Height of one line is 12, with the text label shifted 1 pixel down.
+*
+* First line should be widget number WIDGET_NEWSOPT_START_OPTION
+*
+* @param basey: Base Y coordinate
+* @param linenum: Count, news-setting is the \a linenum-th line
+* @param text: StringID for the text label to display
+*/
+#define NEWS_SETTINGS_LINE(basey, linenum, text) \
+ { WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_YELLOW, \
+ 4, 12, basey + linenum * NEWS_SETTING_BASELINE_SKIP, basey + 11 + linenum * NEWS_SETTING_BASELINE_SKIP, \
+ SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST}, \
+ { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, \
+ 13, 89, basey + linenum * NEWS_SETTING_BASELINE_SKIP, basey + 11 + linenum * NEWS_SETTING_BASELINE_SKIP, \
+ STR_EMPTY, STR_NULL}, \
+ { WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_YELLOW, \
+ 90, 98, basey + linenum * NEWS_SETTING_BASELINE_SKIP, basey + 11 + linenum * NEWS_SETTING_BASELINE_SKIP, \
+ SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST}, \
+ { WWT_TEXT, RESIZE_NONE, COLOUR_YELLOW, \
+ 103, 409, basey + 1 + linenum * NEWS_SETTING_BASELINE_SKIP, basey + 13 + linenum * NEWS_SETTING_BASELINE_SKIP, \
+ text, STR_NULL}
+
+static const int NEWS_SETTING_BASELINE_SKIP = 12; ///< Distance between two news-setting lines, should be at least 12
+
+
static const Widget _message_options_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 13, 11, 409, 0, 13, STR_0204_MESSAGE_OPTIONS, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 13, 0, 409, 14, 196, 0x0, STR_NULL},
+{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13,
+ STR_00C5, STR_018B_CLOSE_WINDOW},
+{ WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 409, 0, 13,
+ STR_0204_MESSAGE_OPTIONS, STR_018C_WINDOW_TITLE_DRAG_THIS},
+{ WWT_PANEL, RESIZE_NONE, COLOUR_BROWN, 0, 409, 14, 64 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ 0x0, STR_NULL},
/* Text at the top of the main panel, in black */
-{ WWT_LABEL, RESIZE_NONE, 13, 0, 409, 13, 26, STR_0205_MESSAGE_TYPES, STR_NULL},
-
-/* General drop down and sound button */
-{ WWT_PANEL, RESIZE_NONE, 3, 4, 86, 166, 177, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 3, 87, 98, 166, 177, STR_0225, STR_NULL},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 167, 179, STR_MESSAGES_ALL, STR_NULL},
-
-{ WWT_TEXTBTN_2, RESIZE_NONE, 3, 4, 98, 178, 189, STR_02DB_OFF, STR_NULL},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 179, 191, STR_MESSAGE_SOUND, STR_NULL},
-
-/* Each four group is composed of the buttons [<] [..] [>] and the descriptor of the setting */
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 26, 37, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 26, 37, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 26, 37, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 27, 39, STR_0206_ARRIVAL_OF_FIRST_VEHICLE, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 38, 49, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 38, 49, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 38, 49, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 39, 51, STR_0207_ARRIVAL_OF_FIRST_VEHICLE, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 50, 61, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 50, 61, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 50, 61, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 51, 63, STR_0208_ACCIDENTS_DISASTERS, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 62, 73, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 62, 73, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 62, 73, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 63, 75, STR_0209_COMPANY_INFORMATION, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 74, 85, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 74, 85, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 74, 85, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 75, 87, STR_NEWS_OPEN_CLOSE, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 86, 97, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 86, 97, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 86, 97, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 87, 99, STR_020A_ECONOMY_CHANGES, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 98, 109, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 98, 109, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 98, 109, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 99, 111, STR_020B_ADVICE_INFORMATION_ON_PLAYER, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 110, 121, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 110, 121, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 110, 121, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 111, 123, STR_020C_NEW_VEHICLES, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 122, 133, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 122, 133, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 122, 133, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 123, 135, STR_020D_CHANGES_OF_CARGO_ACCEPTANCE, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 134, 145, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 134, 145, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 134, 145, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 135, 147, STR_020E_SUBSIDIES, STR_NULL},
-
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 4, 12, 146, 157, SPR_ARROW_LEFT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 3, 13, 89, 146, 157, STR_EMPTY, STR_NULL},
-{ WWT_PUSHIMGBTN, RESIZE_NONE, 3, 90, 98, 146, 157, SPR_ARROW_RIGHT, STR_HSCROLL_BAR_SCROLLS_LIST},
-{ WWT_TEXT, RESIZE_NONE, 3, 103, 409, 147, 159, STR_020F_GENERAL_INFORMATION, STR_NULL},
+{ WWT_LABEL, RESIZE_NONE, COLOUR_BROWN,
+ 0, 409, 13, 26,
+ STR_0205_MESSAGE_TYPES, STR_NULL},
+
+/* General drop down and sound button, widgets WIDGET_NEWSOPT_BTN_SUMMARY and WIDGET_NEWSOPT_DROP_SUMMARY */
+{ WWT_PANEL, RESIZE_NONE, COLOUR_YELLOW,
+ 4, 86, 34 + NT_END * NEWS_SETTING_BASELINE_SKIP, 45 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ 0x0, STR_NULL},
+
+{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW,
+ 87, 98, 34 + NT_END * NEWS_SETTING_BASELINE_SKIP, 45 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ STR_0225, STR_NULL},
+
+{ WWT_TEXT, RESIZE_NONE, COLOUR_YELLOW,
+ 103, 409, 35 + NT_END * NEWS_SETTING_BASELINE_SKIP, 47 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ STR_MESSAGES_ALL, STR_NULL},
+
+/* Below is widget WIDGET_NEWSOPT_SOUNDTICKER */
+{ WWT_TEXTBTN_2, RESIZE_NONE, COLOUR_YELLOW,
+ 4, 98, 46 + NT_END * NEWS_SETTING_BASELINE_SKIP, 57 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ STR_02DB_OFF, STR_NULL},
+
+{ WWT_TEXT, RESIZE_NONE, COLOUR_YELLOW,
+ 103, 409, 47 + NT_END * NEWS_SETTING_BASELINE_SKIP, 59 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ STR_MESSAGE_SOUND, STR_NULL},
+
+/* List of news-setting lines (4 widgets for each line).
+ * First widget must be number WIDGET_NEWSOPT_START_OPTION
+ */
+NEWS_SETTINGS_LINE(26, NT_ARRIVAL_PLAYER, STR_0206_ARRIVAL_OF_FIRST_VEHICLE),
+NEWS_SETTINGS_LINE(26, NT_ARRIVAL_OTHER, STR_0207_ARRIVAL_OF_FIRST_VEHICLE),
+NEWS_SETTINGS_LINE(26, NT_ACCIDENT, STR_0208_ACCIDENTS_DISASTERS),
+NEWS_SETTINGS_LINE(26, NT_COMPANY_INFO, STR_0209_COMPANY_INFORMATION),
+NEWS_SETTINGS_LINE(26, NT_OPENCLOSE, STR_NEWS_OPEN_CLOSE),
+NEWS_SETTINGS_LINE(26, NT_ECONOMY, STR_020A_ECONOMY_CHANGES),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_PLAYER, STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_OTHER, STR_INDUSTRY_CHANGES_SERVED_BY_OTHER),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_NOBODY, STR_OTHER_INDUSTRY_PRODUCTION_CHANGES),
+NEWS_SETTINGS_LINE(26, NT_ADVICE, STR_020B_ADVICE_INFORMATION_ON_PLAYER),
+NEWS_SETTINGS_LINE(26, NT_NEW_VEHICLES, STR_020C_NEW_VEHICLES),
+NEWS_SETTINGS_LINE(26, NT_ACCEPTANCE, STR_020D_CHANGES_OF_CARGO_ACCEPTANCE),
+NEWS_SETTINGS_LINE(26, NT_SUBSIDIES, STR_020E_SUBSIDIES),
+NEWS_SETTINGS_LINE(26, NT_GENERAL, STR_020F_GENERAL_INFORMATION),
{ WIDGETS_END},
};
static const WindowDesc _message_options_desc = {
- 270, 22, 410, 197, 410, 197,
+ 270, 22, 410, 65 + NT_END * NEWS_SETTING_BASELINE_SKIP,
+ 410, 65 + NT_END * NEWS_SETTING_BASELINE_SKIP,
WC_GAME_OPTIONS, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_message_options_widgets,