OpenTTD Source 20250205-master-gfd85ab1e2c
news_func.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10#ifndef NEWS_FUNC_H
11#define NEWS_FUNC_H
12
13#include "news_type.h"
14#include "vehicle_type.h"
15#include "station_type.h"
16#include "industry_type.h"
17
18void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceType reftype1 = NR_NONE, uint32_t ref1 = UINT32_MAX, NewsReferenceType reftype2 = NR_NONE, uint32_t ref2 = UINT32_MAX, std::unique_ptr<NewsAllocatedData> &&data = nullptr, AdviceType advice_type = AdviceType::Invalid);
19
20inline void AddCompanyNewsItem(StringID string, std::unique_ptr<CompanyNewsInformation> cni)
21{
22 AddNewsItem(string, NT_COMPANY_INFO, NF_COMPANY, NR_NONE, UINT32_MAX, NR_NONE, UINT32_MAX, std::move(cni));
23}
24
30inline void AddVehicleNewsItem(StringID string, NewsType type, VehicleID vehicle, StationID station = INVALID_STATION)
31{
32 AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_VEHICLE, vehicle, station == INVALID_STATION ? NR_NONE : NR_STATION, station);
33}
34
40inline void AddVehicleAdviceNewsItem(AdviceType advice_type, StringID string, VehicleID vehicle)
41{
42 AddNewsItem(string, NT_ADVICE, NF_INCOLOUR | NF_SMALL | NF_VEHICLE_PARAM0, NR_VEHICLE, vehicle, NR_NONE, {}, nullptr, advice_type);
43}
44
45inline void AddTileNewsItem(StringID string, NewsType type, TileIndex tile, std::unique_ptr<NewsAllocatedData> &&data = nullptr, StationID station = INVALID_STATION)
46{
47 AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_TILE, tile.base(), station == INVALID_STATION ? NR_NONE : NR_STATION, station, std::move(data));
48}
49
50inline void AddIndustryNewsItem(StringID string, NewsType type, IndustryID industry, std::unique_ptr<NewsAllocatedData> &&data = nullptr)
51{
52 AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_INDUSTRY, industry, NR_NONE, UINT32_MAX, std::move(data));
53}
54
55void NewsLoop();
57
59
61void DeleteVehicleNews(VehicleID vid, AdviceType advice_type = AdviceType::Invalid);
62void DeleteStationNews(StationID sid);
63void DeleteIndustryNews(IndustryID iid);
64
65#endif /* NEWS_FUNC_H */
Types related to the industry.
void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceType reftype1=NR_NONE, uint32_t ref1=UINT32_MAX, NewsReferenceType reftype2=NR_NONE, uint32_t ref2=UINT32_MAX, std::unique_ptr< NewsAllocatedData > &&data=nullptr, AdviceType advice_type=AdviceType::Invalid)
Add a new newsitem to be shown.
Definition news_gui.cpp:899
void DeleteIndustryNews(IndustryID iid)
Remove news regarding given industry.
void DeleteStationNews(StationID sid)
Remove news regarding given station so there are no 'unknown station now accepts Mail' or 'First trai...
void DeleteInvalidEngineNews()
Remove engine announcements for invalid engines.
void InitNewsItemStructs()
Initialize the news-items data structures.
Definition news_gui.cpp:719
void AddVehicleNewsItem(StringID string, NewsType type, VehicleID vehicle, StationID station=INVALID_STATION)
Adds a newsitem referencing a vehicle.
Definition news_func.h:30
void AddVehicleAdviceNewsItem(AdviceType advice_type, StringID string, VehicleID vehicle)
Adds a vehicle-advice news item.
Definition news_func.h:40
const NewsItem * GetStatusbarNews()
Get pointer to the current status bar news item.
Definition news_gui.cpp:70
void DeleteVehicleNews(VehicleID vid, AdviceType advice_type=AdviceType::Invalid)
Delete news with a given advice type about a vehicle.
Types related to news.
NewsType
Type of news.
Definition news_type.h:23
@ NT_ADVICE
Bits of news about vehicles of the company.
Definition news_type.h:35
@ NT_COMPANY_INFO
Company info (new companies, bankruptcy messages)
Definition news_type.h:28
NewsReferenceType
References to objects in news.
Definition news_type.h:67
@ NR_TILE
Reference tile. Scroll to tile when clicking on the news.
Definition news_type.h:69
@ NR_STATION
Reference station. Scroll to station when clicking on the news. Delete news when station is deleted.
Definition news_type.h:71
@ NR_INDUSTRY
Reference industry. Scroll to industry when clicking on the news. Delete news when industry is delete...
Definition news_type.h:72
@ NR_NONE
Empty reference.
Definition news_type.h:68
@ NR_VEHICLE
Reference vehicle. Scroll to vehicle when clicking on the news. Delete news when vehicle is deleted.
Definition news_type.h:70
AdviceType
Sub type of the NT_ADVICE to be able to remove specific news items.
Definition news_type.h:44
NewsFlag
Various OR-able news-item flags.
Definition news_type.h:81
@ NF_NO_TRANSPARENT
Bit value for disabling transparency.
Definition news_type.h:90
@ NF_SHADE
Bit value for enabling shading.
Definition news_type.h:91
@ NF_VEHICLE_PARAM0
Bit value for specifying that string param 0 contains a vehicle ID. (special autoreplace behaviour)
Definition news_type.h:92
@ NF_THIN
Thin news item. (Newspaper with headline and viewport)
Definition news_type.h:94
@ NF_COMPANY
Company news item. (Newspaper with face)
Definition news_type.h:98
@ NF_INCOLOUR
Bit value for coloured news.
Definition news_type.h:89
@ NF_SMALL
Small news item. (Information window with text and viewport)
Definition news_type.h:95
Types related to stations.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Information about a single item of news.
Definition news_type.h:143
Types related to vehicles.
uint32_t VehicleID
The type all our vehicle IDs have.