00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef NEWS_TYPE_H
00013 #define NEWS_TYPE_H
00014
00015 #include "core/enum_type.hpp"
00016 #include "date_type.h"
00017 #include "strings_type.h"
00018 #include "sound_type.h"
00019
00023 enum NewsType {
00024 NT_ARRIVAL_COMPANY,
00025 NT_ARRIVAL_OTHER,
00026 NT_ACCIDENT,
00027 NT_COMPANY_INFO,
00028 NT_INDUSTRY_OPEN,
00029 NT_INDUSTRY_CLOSE,
00030 NT_ECONOMY,
00031 NT_INDUSTRY_COMPANY,
00032 NT_INDUSTRY_OTHER,
00033 NT_INDUSTRY_NOBODY,
00034 NT_ADVICE,
00035 NT_NEW_VEHICLES,
00036 NT_ACCEPTANCE,
00037 NT_SUBSIDIES,
00038 NT_GENERAL,
00039 NT_END,
00040 };
00041
00045 enum NewsSubtype {
00046 NS_ARRIVAL_COMPANY,
00047 NS_ARRIVAL_OTHER,
00048 NS_ACCIDENT,
00049 NS_COMPANY_TROUBLE,
00050 NS_COMPANY_MERGER,
00051 NS_COMPANY_BANKRUPT,
00052 NS_COMPANY_NEW,
00053 NS_INDUSTRY_OPEN,
00054 NS_INDUSTRY_CLOSE,
00055 NS_ECONOMY,
00056 NS_INDUSTRY_COMPANY,
00057 NS_INDUSTRY_OTHER,
00058 NS_INDUSTRY_NOBODY,
00059 NS_ADVICE,
00060 NS_NEW_VEHICLES,
00061 NS_ACCEPTANCE,
00062 NS_SUBSIDIES,
00063 NS_GENERAL,
00064 NS_END,
00065 };
00066
00076 enum NewsReferenceType {
00077 NR_NONE,
00078 NR_TILE,
00079 NR_VEHICLE,
00080 NR_STATION,
00081 NR_INDUSTRY,
00082 NR_TOWN,
00083 NR_ENGINE
00084 };
00085
00090 enum NewsFlag {
00091 NFB_INCOLOUR = 0,
00092 NFB_NO_TRANSPARENT = 1,
00093 NFB_SHADE = 2,
00094
00095 NF_NONE = 0,
00096 NF_INCOLOUR = 1 << 0,
00097 NF_NO_TRANSPARENT = 1 << 1,
00098 NF_SHADE = 1 << 2,
00099 };
00100 DECLARE_ENUM_AS_BIT_SET(NewsFlag);
00101
00102
00106 enum NewsDisplay {
00107 ND_OFF,
00108 ND_SUMMARY,
00109 ND_FULL,
00110 };
00111
00115 struct NewsTypeData {
00116 const char * const name;
00117 const byte age;
00118 const SoundFx sound;
00119 NewsDisplay display;
00120 const StringID description;
00121
00122 NewsTypeData(const char *name, byte age, SoundFx sound, StringID description) :
00123 name(name),
00124 age(age),
00125 sound(sound),
00126 display(ND_FULL),
00127 description(description)
00128 {
00129 }
00130 };
00131
00132 struct NewsItem {
00133 NewsItem *prev;
00134 NewsItem *next;
00135 StringID string_id;
00136 Date date;
00137 NewsSubtype subtype;
00138 NewsFlag flags;
00139
00140 NewsReferenceType reftype1;
00141 NewsReferenceType reftype2;
00142 uint32 ref1;
00143 uint32 ref2;
00144
00145 void *free_data;
00146
00147 uint64 params[10];
00148 };
00149
00156 struct CompanyNewsInformation {
00157 char company_name[64];
00158 char president_name[64];
00159 char other_company_name[64];
00160
00161 uint32 face;
00162 byte colour;
00163
00164 void FillData(const struct Company *c, const struct Company *other = NULL);
00165 };
00166
00167 #endif