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
00021 enum MessageOptionsSpace {
00022 MOS_WIDG_PER_SETTING = 4,
00023
00024 MOS_LEFT_EDGE = 6,
00025 MOS_COLUMN_SPACING = 4,
00026 MOS_RIGHT_EDGE = 6,
00027 MOS_BUTTON_SPACE = 10,
00028
00029 MOS_ABOVE_GLOBAL_SETTINGS = 6,
00030 MOS_BOTTOM_EDGE = 6,
00031 };
00032
00036 enum NewsType {
00037 NT_ARRIVAL_COMPANY,
00038 NT_ARRIVAL_OTHER,
00039 NT_ACCIDENT,
00040 NT_COMPANY_INFO,
00041 NT_INDUSTRY_OPEN,
00042 NT_INDUSTRY_CLOSE,
00043 NT_ECONOMY,
00044 NT_INDUSTRY_COMPANY,
00045 NT_INDUSTRY_OTHER,
00046 NT_INDUSTRY_NOBODY,
00047 NT_ADVICE,
00048 NT_NEW_VEHICLES,
00049 NT_ACCEPTANCE,
00050 NT_SUBSIDIES,
00051 NT_GENERAL,
00052 NT_END,
00053 };
00054
00064 enum NewsReferenceType {
00065 NR_NONE,
00066 NR_TILE,
00067 NR_VEHICLE,
00068 NR_STATION,
00069 NR_INDUSTRY,
00070 NR_TOWN,
00071 NR_ENGINE,
00072 };
00073
00078 enum NewsFlag {
00079 NFB_INCOLOUR = 0,
00080 NFB_NO_TRANSPARENT = 1,
00081 NFB_SHADE = 2,
00082 NFB_WINDOW_LAYOUT = 3,
00083 NFB_WINDOW_LAYOUT_COUNT = 3,
00084 NFB_VEHICLE_PARAM0 = 6,
00085
00086 NF_INCOLOUR = 1 << NFB_INCOLOUR,
00087 NF_NO_TRANSPARENT = 1 << NFB_NO_TRANSPARENT,
00088 NF_SHADE = 1 << NFB_SHADE,
00089 NF_VEHICLE_PARAM0 = 1 << NFB_VEHICLE_PARAM0,
00090
00091 NF_THIN = 0 << NFB_WINDOW_LAYOUT,
00092 NF_SMALL = 1 << NFB_WINDOW_LAYOUT,
00093 NF_NORMAL = 2 << NFB_WINDOW_LAYOUT,
00094 NF_VEHICLE = 3 << NFB_WINDOW_LAYOUT,
00095 NF_COMPANY = 4 << NFB_WINDOW_LAYOUT,
00096 };
00097 DECLARE_ENUM_AS_BIT_SET(NewsFlag)
00098
00099
00100
00103 enum NewsDisplay {
00104 ND_OFF,
00105 ND_SUMMARY,
00106 ND_FULL,
00107 };
00108
00112 struct NewsTypeData {
00113 const char * const name;
00114 const byte age;
00115 const SoundFx sound;
00116
00123 NewsTypeData(const char *name, byte age, SoundFx sound) :
00124 name(name),
00125 age(age),
00126 sound(sound)
00127 {
00128 }
00129
00130 NewsDisplay GetDisplay() const;
00131 };
00132
00134 struct NewsItem {
00135 NewsItem *prev;
00136 NewsItem *next;
00137 StringID string_id;
00138 Date date;
00139 NewsType type;
00140 NewsFlag flags;
00141
00142 NewsReferenceType reftype1;
00143 NewsReferenceType reftype2;
00144 uint32 ref1;
00145 uint32 ref2;
00146
00147 void *free_data;
00148
00149 ~NewsItem()
00150 {
00151 free(this->free_data);
00152 }
00153
00154 uint64 params[10];
00155 };
00156
00163 struct CompanyNewsInformation {
00164 char company_name[64];
00165 char president_name[64];
00166 char other_company_name[64];
00167
00168 uint32 face;
00169 byte colour;
00170
00171 void FillData(const struct Company *c, const struct Company *other = NULL);
00172 };
00173
00174 #endif