|
OpenTTD Source
14.0-beta3
|
#include "stdafx.h"#include "gui.h"#include "viewport_func.h"#include "strings_func.h"#include "window_func.h"#include "vehicle_base.h"#include "vehicle_func.h"#include "vehicle_gui.h"#include "roadveh.h"#include "station_base.h"#include "industry.h"#include "town.h"#include "sound_func.h"#include "string_func.h"#include "widgets/dropdown_func.h"#include "statusbar_gui.h"#include "company_manager_face.h"#include "company_func.h"#include "engine_base.h"#include "engine_gui.h"#include "core/geometry_func.hpp"#include "command_func.h"#include "company_base.h"#include "settings_internal.h"#include "group_gui.h"#include "zoom_func.h"#include "news_cmd.h"#include "timer/timer.h"#include "timer/timer_window.h"#include "timer/timer_game_calendar.h"#include "widgets/news_widget.h"#include "table/strings.h"#include "safeguards.h"Go to the source code of this file.
Data Structures | |
| struct | NewsWindow |
| Window class displaying a news item. More... | |
| struct | MessageHistoryWindow |
Functions | |
| static TileIndex | GetReferenceTile (NewsReferenceType reftype, uint32_t ref) |
| Get the position a news-reference is referencing. More... | |
| WindowDesc * | GetNewsWindowLayout (NewsFlag flags) |
| static void | ShowNewspaper (const NewsItem *ni) |
| Open up an own newspaper window for the news item. | |
| static void | ShowTicker (const NewsItem *ni) |
| Show news item in the ticker. | |
| void | InitNewsItemStructs () |
| Initialize the news-items data structures. | |
| static bool | ReadyForNextTickerItem () |
| Are we ready to show another ticker item? Only if nothing is in the newsticker is displayed. | |
| static bool | ReadyForNextNewsItem () |
| Are we ready to show another news item? Only if no newspaper is displayed. | |
| static void | MoveToNextTickerItem () |
| Move to the next ticker item. | |
| static void | MoveToNextNewsItem () |
| Move to the next news item. | |
| static void | DeleteNewsItem (NewsItem *ni) |
| Delete a news item from the queue. | |
| void | AddNewsItem (StringID string, NewsType type, NewsFlag flags, NewsReferenceType reftype1, uint32_t ref1, NewsReferenceType reftype2, uint32_t ref2, const NewsAllocatedData *data) |
| Add a new newsitem to be shown. More... | |
| CommandCost | CmdCustomNewsItem (DoCommandFlag flags, NewsType type, NewsReferenceType reftype1, CompanyID company, uint32_t reference, const std::string &text) |
| Create a new custom news item. More... | |
| void | DeleteVehicleNews (VehicleID vid, StringID news) |
| Delete a news item type about a vehicle. More... | |
| void | DeleteStationNews (StationID sid) |
| Remove news regarding given station so there are no 'unknown station now accepts Mail' or 'First train arrived at unknown station' news items. More... | |
| void | DeleteIndustryNews (IndustryID iid) |
| Remove news regarding given industry. More... | |
| void | DeleteInvalidEngineNews () |
| Remove engine announcements for invalid engines. | |
| static void | RemoveOldNewsItems () |
| void | ChangeVehicleNews (VehicleID from_index, VehicleID to_index) |
| Report a change in vehicle IDs (due to autoreplace) to affected vehicle news. More... | |
| void | NewsLoop () |
| static void | ShowNewsMessage (const NewsItem *ni) |
| Do a forced show of a specific message. | |
| bool | HideActiveNewsMessage () |
| Close active news message window. More... | |
| void | ShowLastNewsMessage () |
| Show previous news item. | |
| static void | DrawNewsString (uint left, uint right, int y, TextColour colour, const NewsItem *ni) |
| Draw an unformatted news message truncated to a maximum length. More... | |
| void | ShowMessageHistory () |
| Display window with news messages history. | |
Variables | |
| const NewsItem * | _statusbar_news_item = nullptr |
| static uint | MIN_NEWS_AMOUNT = 30 |
| preferred minimum amount of news messages | |
| static uint | MAX_NEWS_AMOUNT = 1 << 10 |
| Do not exceed this number of news messages. | |
| static uint | _total_news = 0 |
| current number of news items | |
| static NewsItem * | _oldest_news = nullptr |
| head of news items queue | |
| NewsItem * | _latest_news = nullptr |
| tail of news items queue | |
| static const NewsItem * | _forced_news = nullptr |
| Forced news item. More... | |
| static const NewsItem * | _current_news = nullptr |
| Current news item (last item shown regularly). | |
| static constexpr NWidgetPart | _nested_normal_news_widgets [] |
| static WindowDesc | _normal_news_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, std::begin(_nested_normal_news_widgets), std::end(_nested_normal_news_widgets)) |
| static constexpr NWidgetPart | _nested_vehicle_news_widgets [] |
| static WindowDesc | _vehicle_news_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, std::begin(_nested_vehicle_news_widgets), std::end(_nested_vehicle_news_widgets)) |
| static constexpr NWidgetPart | _nested_company_news_widgets [] |
| static WindowDesc | _company_news_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, std::begin(_nested_company_news_widgets), std::end(_nested_company_news_widgets)) |
| static constexpr NWidgetPart | _nested_thin_news_widgets [] |
| static WindowDesc | _thin_news_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, std::begin(_nested_thin_news_widgets), std::end(_nested_thin_news_widgets)) |
| static constexpr NWidgetPart | _nested_small_news_widgets [] |
| static WindowDesc | _small_news_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_NEWS_WINDOW, WC_NONE, 0, std::begin(_nested_small_news_widgets), std::end(_nested_small_news_widgets)) |
| static WindowDesc * | _news_window_layout [] |
| Window layouts for news items. More... | |
| static NewsTypeData | _news_type_data [] |
| Per-NewsType data. More... | |
| static constexpr NWidgetPart | _nested_message_history [] |
| static WindowDesc | _message_history_desc (__FILE__, __LINE__, WDP_AUTO, "list_news", 400, 140, WC_MESSAGE_HISTORY, WC_NONE, 0, std::begin(_nested_message_history), std::end(_nested_message_history)) |
GUI functions related to news messages.
Definition in file news_gui.cpp.
| void AddNewsItem | ( | StringID | string, |
| NewsType | type, | ||
| NewsFlag | flags, | ||
| NewsReferenceType | reftype1, | ||
| uint32_t | ref1, | ||
| NewsReferenceType | reftype2, | ||
| uint32_t | ref2, | ||
| const NewsAllocatedData * | data | ||
| ) |
Add a new newsitem to be shown.
| string | String to display |
| type | news category |
| flags | display flags for the news |
| reftype1 | Type of ref1 |
| ref1 | Reference 1 to some object: Used for a possible viewport, scrolling after clicking on the news, and for deleting the news when the object is deleted. |
| reftype2 | Type of ref2 |
| ref2 | Reference 2 to some object: Used for scrolling after clicking on the news, and for deleting the news when the object is deleted. |
| data | Pointer to data that must be released once the news message is cleared. |
Definition at line 827 of file news_gui.cpp.
Referenced by AddVehicleAdviceNewsItem(), Subsidy::AwardTo(), CmdCustomNewsItem(), CreateSubsidy(), NewVehicleAvailable(), ShowRejectOrAcceptNews(), and TownActionRoadRebuild().
Report a change in vehicle IDs (due to autoreplace) to affected vehicle news.
| from_index | the old vehicle ID |
| to_index | the new vehicle ID |
Definition at line 1000 of file news_gui.cpp.
References _oldest_news, NewsItem::flags, NewsItem::next, NF_VEHICLE_PARAM0, NR_VEHICLE, NewsItem::params, NewsItem::ref1, NewsItem::ref2, NewsItem::reftype1, and NewsItem::reftype2.
| CommandCost CmdCustomNewsItem | ( | DoCommandFlag | flags, |
| NewsType | type, | ||
| NewsReferenceType | reftype1, | ||
| CompanyID | company, | ||
| uint32_t | reference, | ||
| const std::string & | text | ||
| ) |
Create a new custom news item.
| flags | type of operation @aram type NewsType of the message. |
| reftype1 | NewsReferenceType of first reference. |
| company | Company this news message is for. |
| reference | First reference of the news message. |
| text | The text of the news message. |
Definition at line 865 of file news_gui.cpp.
References _current_company, _local_company, AddNewsItem(), CMD_ERROR, DC_EXEC, INVALID_OWNER, SpecializedStation< Station, false >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::IsValidID(), IsValidTile(), NF_NORMAL, NR_ENGINE, NR_INDUSTRY, NR_NONE, NR_STATION, NR_TILE, NR_TOWN, NR_VEHICLE, NT_END, OWNER_DEITY, SetDParamStr(), and NewsStringData::string.
| void DeleteIndustryNews | ( | IndustryID | iid | ) |
Remove news regarding given industry.
| iid | industry to remove news about |
Definition at line 955 of file news_gui.cpp.
References _oldest_news, DeleteNewsItem(), NewsItem::next, NR_INDUSTRY, NewsItem::ref1, NewsItem::ref2, NewsItem::reftype1, and NewsItem::reftype2.
| void DeleteStationNews | ( | StationID | sid | ) |
Remove news regarding given station so there are no 'unknown station now accepts Mail' or 'First train arrived at unknown station' news items.
| sid | station to remove news about |
Definition at line 938 of file news_gui.cpp.
References _oldest_news, DeleteNewsItem(), NewsItem::next, NR_STATION, NewsItem::ref1, NewsItem::ref2, NewsItem::reftype1, and NewsItem::reftype2.
Delete a news item type about a vehicle.
When the news item type is INVALID_STRING_ID all news about the vehicle gets deleted.
| vid | The vehicle to remove the news for. |
| news | The news type to remove. |
Definition at line 919 of file news_gui.cpp.
References _oldest_news, DeleteNewsItem(), INVALID_STRING_ID, NewsItem::next, NR_VEHICLE, NewsItem::ref1, NewsItem::ref2, NewsItem::reftype1, NewsItem::reftype2, and NewsItem::string_id.
Referenced by AircraftHandleDestTooFar(), DeleteOrderWarnings(), and Vehicle::HandlePathfindingResult().
|
static |
Draw an unformatted news message truncated to a maximum length.
If length exceeds maximum length it will be postfixed by '...'
| left | the left most location for the string |
| right | the right most location for the string |
| y | position of the string |
| colour | the colour the string will be shown in |
| *ni | NewsItem being printed |
Definition at line 1105 of file news_gui.cpp.
|
static |
Get the position a news-reference is referencing.
| reftype | The type of reference. |
| ref | The reference. |
Definition at line 73 of file news_gui.cpp.
References SpecializedStation< Station, false >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::Get(), INVALID_TILE, NR_INDUSTRY, NR_STATION, NR_TILE, NR_TOWN, TileDiffXY(), and BaseStation::xy.
Referenced by NewsWindow::OnResize().
| bool HideActiveNewsMessage | ( | ) |
Close active news message window.
Definition at line 1046 of file news_gui.cpp.
References Window::Close(), FindWindowById(), and WC_NEWS_WINDOW.
|
static |
Forced news item.
Users can force an item by accessing the history or "last message". If the message being shown was forced by the user, a pointer is stored in _forced_news. Otherwise, _forced_news variable is nullptr.
Definition at line 61 of file news_gui.cpp.
Referenced by DeleteNewsItem(), InitNewsItemStructs(), MoveToNextNewsItem(), ReadyForNextNewsItem(), ShowLastNewsMessage(), and ShowNewsMessage().
|
staticconstexpr |
Definition at line 134 of file news_gui.cpp.
|
staticconstexpr |
Definition at line 1212 of file news_gui.cpp.
|
staticconstexpr |
Definition at line 85 of file news_gui.cpp.
|
staticconstexpr |
Definition at line 185 of file news_gui.cpp.
|
staticconstexpr |
Definition at line 162 of file news_gui.cpp.
|
staticconstexpr |
Definition at line 107 of file news_gui.cpp.
|
static |
Per-NewsType data.
Definition at line 231 of file news_gui.cpp.
Referenced by MoveToNextNewsItem(), ShowLastNewsMessage(), and ShowNewspaper().
|
static |
Window layouts for news items.
Definition at line 213 of file news_gui.cpp.