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
00103
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
00129 NewsTypeData(const char *name, byte age, SoundFx sound, StringID description) :
00130 name(name),
00131 age(age),
00132 sound(sound),
00133 display(ND_FULL),
00134 description(description)
00135 {
00136 }
00137 };
00138
00140 struct NewsItem {
00141 NewsItem *prev;
00142 NewsItem *next;
00143 StringID string_id;
00144 Date date;
00145 NewsSubtype subtype;
00146 NewsFlag flags;
00147
00148 NewsReferenceType reftype1;
00149 NewsReferenceType reftype2;
00150 uint32 ref1;
00151 uint32 ref2;
00152
00153 void *free_data;
00154
00155 ~NewsItem()
00156 {
00157 free(this->free_data);
00158 }
00159
00160 uint64 params[10];
00161 };
00162
00169 struct CompanyNewsInformation {
00170 char company_name[64];
00171 char president_name[64];
00172 char other_company_name[64];
00173
00174 uint32 face;
00175 byte colour;
00176
00177 void FillData(const struct Company *c, const struct Company *other = NULL);
00178 };
00179
00180 #endif