src/news_type.h
author truebrain
Mon, 30 Jun 2008 13:36:06 +0000
branchnoai
changeset 11100 b960288098b9
parent 10867 5de2923d6e59
permissions -rw-r--r--
(svn r13658) [NoAI] -Fix r13656: to maintain savegame compatibility with trunk, don't allow setting max_opcodes, but force it to value 4000.
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     1
/* $Id$ */
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     2
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     3
/** @file news_type.h Types related to news. */
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     4
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     5
#ifndef NEWS_TYPE_H
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     6
#define NEWS_TYPE_H
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     7
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     8
#include "date_type.h"
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
     9
#include "strings_type.h"
10294
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    10
#include "sound_type.h"
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    11
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    12
/**
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    13
 * Type of news.
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    14
 */
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    15
enum NewsType {
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    16
	NT_ARRIVAL_PLAYER,  ///< Cargo arrived for player
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    17
	NT_ARRIVAL_OTHER,   ///< Cargo arrived for competitor
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    18
	NT_ACCIDENT,        ///< An accident or disaster has occurred
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    19
	NT_COMPANY_INFO,    ///< Company info (new companies, bankrupcy messages)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    20
	NT_OPENCLOSE,       ///< Opening and closing of industries
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    21
	NT_ECONOMY,         ///< Economic changes (recession, industry up/dowm)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    22
	NT_INDUSTRY_PLAYER, ///< Production changes of industry serviced by local player
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    23
	NT_INDUSTRY_OTHER,  ///< Production changes of industry serviced by competitor(s)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    24
	NT_INDUSTRY_NOBODY, ///< Other industry production changes
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    25
	NT_ADVICE,          ///< Bits of news about vehicles of the player
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    26
	NT_NEW_VEHICLES,    ///< New vehicle has become available
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    27
	NT_ACCEPTANCE,      ///< A type of cargo is (no longer) accepted
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    28
	NT_SUBSIDIES,       ///< News about subsidies (announcements, expirations, acceptance)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    29
	NT_GENERAL,         ///< General news (from towns)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    30
	NT_END,             ///< end-of-array marker
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    31
};
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    32
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    33
/**
10645
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    34
 * News subtypes.
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    35
 */
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    36
enum NewsSubtype {
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    37
	NS_ARRIVAL_PLAYER,   ///< NT_ARRIVAL_PLAYER
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    38
	NS_ARRIVAL_OTHER,    ///< NT_ARRIVAL_OTHER
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    39
	NS_ACCIDENT_TILE,    ///< NT_ACCIDENT (tile)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    40
	NS_ACCIDENT_VEHICLE, ///< NT_ACCIDENT (vehicle)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    41
	NS_COMPANY_TROUBLE,  ///< NT_COMPANY_INFO (trouble)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    42
	NS_COMPANY_MERGER,   ///< NT_COMPANY_INFO (merger)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    43
	NS_COMPANY_BANKRUPT, ///< NT_COMPANY_INFO (bankrupt)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    44
	NS_COMPANY_NEW,      ///< NT_COMPANY_INFO (new company)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    45
	NS_OPENCLOSE,        ///< NT_OPENCLOSE
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    46
	NS_ECONOMY,          ///< NT_ECONOMY
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    47
	NS_INDUSTRY_PLAYER,  ///< NT_INDUSTRY_PLAYER
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    48
	NS_INDUSTRY_OTHER,   ///< NT_INDUSTRY_OTHER
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    49
	NS_INDUSTRY_NOBODY,  ///< NT_INDUSTRY_NOBODY
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    50
	NS_ADVICE,           ///< NT_ADVICE
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    51
	NS_NEW_VEHICLES,     ///< NT_NEW_VEHICLES
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    52
	NS_ACCEPTANCE,       ///< NT_ACCEPTANCE
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    53
	NS_SUBSIDIES,        ///< NT_SUBSIDIES
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    54
	NS_GENERAL,          ///< NT_GENERAL
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    55
	NS_END,              ///< end-of-array marker
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    56
};
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    57
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
    58
/**
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    59
 * News mode.
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    60
 */
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    61
enum NewsMode {
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    62
	NM_SMALL    = 0, ///< Show only a small popup informing us about vehicle age for example
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    63
	NM_NORMAL   = 1, ///< Show a simple news message (height 170 pixels)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    64
	NM_THIN     = 2, ///< Show a simple news message (height 130 pixels)
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    65
};
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    66
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    67
/**
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    68
 * Various OR-able news-item flags.
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    69
 * note: NF_INCOLOR is set automatically if needed
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    70
 */
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    71
enum NewsFlag {
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    72
	NF_NONE      = 0,        ///< No flag is set.
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    73
	NF_VIEWPORT  = (1 << 1), ///< Does the news message have a viewport? (ingame picture of happening)
10513
33cb70ff2f5d (svn r13056) [NoAI] -Sync: with trunk r12996:13055.
rubidium
parents: 10294
diff changeset
    74
	NF_TILE      = (1 << 2), ///< When clicked on the news message scroll to a given tile? Tile is in data_a
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    75
	NF_VEHICLE   = (1 << 3), ///< When clicked on the message scroll to the vehicle? VehicleID is in data_a
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    76
	NF_INCOLOR   = (1 << 5), ///< Show the newsmessage in colour, otherwise it defaults to black & white
10513
33cb70ff2f5d (svn r13056) [NoAI] -Sync: with trunk r12996:13055.
rubidium
parents: 10294
diff changeset
    77
	NF_TILE2     = (1 << 6), ///< There is a second tile to scroll to; tile is in data_b
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    78
};
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    79
DECLARE_ENUM_AS_BIT_SET(NewsFlag);
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    80
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    81
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
    82
/**
10294
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    83
 * News display options
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    84
 */
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    85
enum NewsDisplay {
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    86
	ND_OFF,        ///< Only show a reminder in the status bar
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    87
	ND_SUMMARY,    ///< Show ticker
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    88
	ND_FULL,       ///< Show newspaper
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    89
};
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    90
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    91
/**
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    92
 * Per-NewsType data
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    93
 */
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    94
struct NewsTypeData {
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    95
	const char *const name; ///< Name
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    96
	const byte age;         ///< Maximum age of news items (in days)
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    97
	const SoundFx sound;    ///< Sound
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    98
	NewsDisplay display;    ///< Display mode (off, summary, full)
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
    99
};
7798ae816af8 (svn r12826) [NoAI] -Sync: with trunk r12780:12824
glx
parents: 10181
diff changeset
   100
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   101
struct NewsItem {
10776
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10645
diff changeset
   102
	NewsItem *prev;        ///< Previous news item
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10645
diff changeset
   103
	NewsItem *next;        ///< Next news item
10645
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
   104
	StringID string_id;    ///< Message text
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   105
	Date date;             ///< Date of the news
10645
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
   106
	NewsSubtype subtype;   ///< News subtype @see NewsSubtype
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   107
	NewsFlag flags;        ///< NewsFlags bits @see NewsFlag
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   108
10645
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
   109
	uint data_a;           ///< Custom data 1 (usually tile or vehicle)
8cbdb511a674 (svn r13189) [NoAI] -Sync: with trunk r13055:13185.
glx
parents: 10513
diff changeset
   110
	uint data_b;           ///< Custom data 2
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   111
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   112
	uint64 params[10];
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   113
};
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   114
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents:
diff changeset
   115
#endif /* NEWS_TYPE_H */