51 * (Users can force messages through history or "last message") */ |
51 * (Users can force messages through history or "last message") */ |
52 static NewsID _forced_news = INVALID_NEWS; |
52 static NewsID _forced_news = INVALID_NEWS; |
53 |
53 |
54 static byte _total_news = 0; // total news count |
54 static byte _total_news = 0; // total news count |
55 |
55 |
56 void DrawNewsNewTrainAvail(BaseWindow *w); |
56 void DrawNewsNewVehicleAvail(BaseWindow *w); |
57 void DrawNewsNewRoadVehAvail(BaseWindow *w); |
|
58 void DrawNewsNewShipAvail(BaseWindow *w); |
|
59 void DrawNewsNewAircraftAvail(BaseWindow *w); |
|
60 void DrawNewsBankrupcy(BaseWindow *w); |
57 void DrawNewsBankrupcy(BaseWindow *w); |
61 static void MoveToNextItem(void); |
58 static void MoveToNextItem(void); |
62 |
59 |
63 StringID GetNewsStringNewTrainAvail(const NewsItem *ni); |
60 StringID GetNewsStringNewVehicleAvail(const NewsItem *ni); |
64 StringID GetNewsStringNewRoadVehAvail(const NewsItem *ni); |
|
65 StringID GetNewsStringNewShipAvail(const NewsItem *ni); |
|
66 StringID GetNewsStringNewAircraftAvail(const NewsItem *ni); |
|
67 StringID GetNewsStringBankrupcy(const NewsItem *ni); |
61 StringID GetNewsStringBankrupcy(const NewsItem *ni); |
68 |
62 |
69 static DrawNewsCallbackProc * const _draw_news_callback[] = { |
63 static DrawNewsCallbackProc * const _draw_news_callback[] = { |
70 DrawNewsNewTrainAvail, /* DNC_TRAINAVAIL */ |
64 DrawNewsNewVehicleAvail, /* DNC_VEHICLEAVAIL */ |
71 DrawNewsNewRoadVehAvail, /* DNC_ROADAVAIL */ |
|
72 DrawNewsNewShipAvail, /* DNC_SHIPAVAIL */ |
|
73 DrawNewsNewAircraftAvail, /* DNC_AIRCRAFTAVAIL */ |
|
74 DrawNewsBankrupcy, /* DNC_BANKRUPCY */ |
65 DrawNewsBankrupcy, /* DNC_BANKRUPCY */ |
75 }; |
66 }; |
76 |
67 |
77 extern GetNewsStringCallbackProc * const _get_news_string_callback[]; |
68 extern GetNewsStringCallbackProc * const _get_news_string_callback[]; |
78 GetNewsStringCallbackProc * const _get_news_string_callback[] = { |
69 GetNewsStringCallbackProc * const _get_news_string_callback[] = { |
79 GetNewsStringNewTrainAvail, /* DNC_TRAINAVAIL */ |
70 GetNewsStringNewVehicleAvail, /* DNC_VEHICLEAVAIL */ |
80 GetNewsStringNewRoadVehAvail, /* DNC_ROADAVAIL */ |
|
81 GetNewsStringNewShipAvail, /* DNC_SHIPAVAIL */ |
|
82 GetNewsStringNewAircraftAvail, /* DNC_AIRCRAFTAVAIL */ |
|
83 GetNewsStringBankrupcy, /* DNC_BANKRUPCY */ |
71 GetNewsStringBankrupcy, /* DNC_BANKRUPCY */ |
84 }; |
72 }; |
85 |
73 |
86 void InitNewsItemStructs(void) |
74 void InitNewsItemStructs(void) |
87 { |
75 { |
133 DrawStringRightAligned(428, 1, STR_01FF, 0); |
121 DrawStringRightAligned(428, 1, STR_01FF, 0); |
134 |
122 |
135 if (!(ni->flags & NF_VIEWPORT)) { |
123 if (!(ni->flags & NF_VIEWPORT)) { |
136 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
124 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
137 DrawStringMultiCenter(215, ni->display_mode == NM_NORMAL ? 76 : 56, |
125 DrawStringMultiCenter(215, ni->display_mode == NM_NORMAL ? 76 : 56, |
138 ni->string_id, 426); |
126 ni->string_id, w->Width() - 4); |
139 } else { |
127 } else { |
140 byte bk = _display_opt; |
128 byte bk = _display_opt; |
141 _display_opt &= ~DO_TRANS_BUILDINGS; |
129 _display_opt &= ~DO_TRANS_BUILDINGS; |
142 w->DrawViewport(); |
130 w->DrawViewport(); |
143 _display_opt = bk; |
131 _display_opt = bk; |
148 vp->left - w->Left() + vp->width - 1, vp->top - w->Top() + vp->height - 1, |
136 vp->left - w->Left() + vp->width - 1, vp->top - w->Top() + vp->height - 1, |
149 (ni->flags & NF_INCOLOR ? PALETTE_TO_TRANSPARENT : PALETTE_TO_STRUCT_GREY) | (1 << USE_COLORTABLE) |
137 (ni->flags & NF_INCOLOR ? PALETTE_TO_TRANSPARENT : PALETTE_TO_STRUCT_GREY) | (1 << USE_COLORTABLE) |
150 ); |
138 ); |
151 |
139 |
152 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
140 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
153 DrawStringMultiCenter(w->Width() / 2, 20, ni->string_id, 428); |
141 DrawStringMultiCenter(w->Width() / 2, 20, ni->string_id, w->Width() - 4); |
154 } |
142 } |
155 break; |
143 break; |
156 } |
144 } |
157 |
145 |
158 case NM_CALLBACK: { |
146 case NM_CALLBACK: { |
166 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
154 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
167 DrawStringMultiCenter(140, 38, ni->string_id, 276); |
155 DrawStringMultiCenter(140, 38, ni->string_id, 276); |
168 } else { |
156 } else { |
169 w->DrawViewport(); |
157 w->DrawViewport(); |
170 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
158 COPY_IN_DPARAM(0, ni->params, lengthof(ni->params)); |
171 DrawStringMultiCenter(w->Width() / 2, w->Height() - 16, ni->string_id, 276); |
159 DrawStringMultiCenter(w->Width() / 2, w->Height() - 16, ni->string_id, w->Width() - 4); |
172 } |
160 } |
173 break; |
161 break; |
174 } |
162 } |
175 } |
163 } |
176 } break; |
164 } break; |