26 #include "strings_func.h" |
25 #include "strings_func.h" |
27 #include "functions.h" |
26 #include "functions.h" |
28 #include "window_func.h" |
27 #include "window_func.h" |
29 #include "date_func.h" |
28 #include "date_func.h" |
30 #include "string_func.h" |
29 #include "string_func.h" |
|
30 #include "settings_type.h" |
|
31 #include "widgets/dropdown_func.h" |
|
32 |
|
33 #include "table/sprites.h" |
|
34 #include "table/strings.h" |
|
35 |
|
36 /* player face selection window */ |
|
37 struct facesel_d { |
|
38 PlayerFace face; // player face bits |
|
39 bool advanced; // advance player face selection window |
|
40 }; |
|
41 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(facesel_d)); |
31 |
42 |
32 static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied); |
43 static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied); |
33 static void DoSelectPlayerFace(PlayerID player, bool show_big); |
44 static void DoSelectPlayerFace(PlayerID player, bool show_big); |
34 |
45 |
35 static void DrawPlayerEconomyStats(const Player *p, byte mode) |
46 static void DrawPlayerEconomyStats(const Player *p, byte mode) |
106 |
117 |
107 SetDParam(0, p->player_money - p->current_loan); |
118 SetDParam(0, p->player_money - p->current_loan); |
108 DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING); |
119 DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING); |
109 } |
120 } |
110 |
121 |
|
122 enum PlayerFinancesWindowWidgets { |
|
123 PFW_WIDGET_TOGGLE_SIZE = 2, |
|
124 PFW_WIDGET_INCREASE_LOAN = 6, |
|
125 PFW_WIDGET_REPAY_LOAN = 7, |
|
126 }; |
|
127 |
111 static const Widget _player_finances_widgets[] = { |
128 static const Widget _player_finances_widgets[] = { |
112 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
129 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
113 { WWT_CAPTION, RESIZE_NONE, 14, 11, 379, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
130 { WWT_CAPTION, RESIZE_NONE, 14, 11, 379, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
114 { WWT_IMGBTN, RESIZE_NONE, 14, 380, 394, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
131 { WWT_IMGBTN, RESIZE_NONE, 14, 380, 394, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
115 { WWT_STICKYBOX, RESIZE_NONE, 14, 395, 406, 0, 13, 0x0, STR_STICKY_BUTTON}, |
132 { WWT_STICKYBOX, RESIZE_NONE, 14, 395, 406, 0, 13, 0x0, STR_STICKY_BUTTON}, |
146 /* Make window dirty before and after resizing */ |
163 /* Make window dirty before and after resizing */ |
147 SetWindowDirty(w); |
164 SetWindowDirty(w); |
148 w->height = new_height; |
165 w->height = new_height; |
149 SetWindowDirty(w); |
166 SetWindowDirty(w); |
150 |
167 |
151 w->SetWidgetHiddenState(6, player != _local_player); |
168 w->SetWidgetHiddenState(PFW_WIDGET_INCREASE_LOAN, player != _local_player); |
152 w->SetWidgetHiddenState(7, player != _local_player); |
169 w->SetWidgetHiddenState(PFW_WIDGET_REPAY_LOAN, player != _local_player); |
153 } |
170 } |
154 |
171 |
155 /* Borrow button only shows when there is any more money to loan */ |
172 /* Borrow button only shows when there is any more money to loan */ |
156 w->SetWidgetDisabledState(6, p->current_loan == _economy.max_loan); |
173 w->SetWidgetDisabledState(PFW_WIDGET_INCREASE_LOAN, p->current_loan == _economy.max_loan); |
157 |
174 |
158 /* Repay button only shows when there is any more money to repay */ |
175 /* Repay button only shows when there is any more money to repay */ |
159 w->SetWidgetDisabledState(7, player != _local_player || p->current_loan == 0); |
176 w->SetWidgetDisabledState(PFW_WIDGET_REPAY_LOAN, player != _local_player || p->current_loan == 0); |
160 |
177 |
161 SetDParam(0, p->index); |
178 SetDParam(0, p->index); |
162 SetDParam(1, p->index); |
179 SetDParam(1, p->index); |
163 SetDParam(2, LOAN_INTERVAL); |
180 SetDParam(2, LOAN_INTERVAL); |
164 DrawWindowWidgets(w); |
181 DrawWindowWidgets(w); |
166 DrawPlayerEconomyStats(p, (byte)WP(w, def_d).data_1); |
183 DrawPlayerEconomyStats(p, (byte)WP(w, def_d).data_1); |
167 } break; |
184 } break; |
168 |
185 |
169 case WE_CLICK: |
186 case WE_CLICK: |
170 switch (e->we.click.widget) { |
187 switch (e->we.click.widget) { |
171 case 2: {/* toggle size */ |
188 case PFW_WIDGET_TOGGLE_SIZE: {/* toggle size */ |
172 byte mode = (byte)WP(w, def_d).data_1; |
189 byte mode = (byte)WP(w, def_d).data_1; |
173 bool stickied = !!(w->flags4 & WF_STICKY); |
190 bool stickied = !!(w->flags4 & WF_STICKY); |
174 PlayerID player = (PlayerID)w->window_number; |
191 PlayerID player = (PlayerID)w->window_number; |
175 DeleteWindow(w); |
192 DeleteWindow(w); |
176 DoShowPlayerFinances(player, !HasBit(mode, 0), stickied); |
193 DoShowPlayerFinances(player, !HasBit(mode, 0), stickied); |
177 } break; |
194 } break; |
178 |
195 |
179 case 6: /* increase loan */ |
196 case PFW_WIDGET_INCREASE_LOAN: /* increase loan */ |
180 DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_INCREASE_LOAN | CMD_MSG(STR_702C_CAN_T_BORROW_ANY_MORE_MONEY)); |
197 DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_INCREASE_LOAN | CMD_MSG(STR_702C_CAN_T_BORROW_ANY_MORE_MONEY)); |
181 break; |
198 break; |
182 |
199 |
183 case 7: /* repay loan */ |
200 case PFW_WIDGET_REPAY_LOAN: /* repay loan */ |
184 DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_DECREASE_LOAN | CMD_MSG(STR_702F_CAN_T_REPAY_LOAN)); |
201 DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_DECREASE_LOAN | CMD_MSG(STR_702F_CAN_T_REPAY_LOAN)); |
185 break; |
202 break; |
186 } |
203 } |
187 break; |
204 break; |
188 } |
205 } |
243 }; |
260 }; |
244 |
261 |
245 /* Association of liveries to livery classes */ |
262 /* Association of liveries to livery classes */ |
246 static const LiveryClass livery_class[LS_END] = { |
263 static const LiveryClass livery_class[LS_END] = { |
247 LC_OTHER, |
264 LC_OTHER, |
248 LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, |
265 LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, |
249 LC_ROAD, LC_ROAD, |
266 LC_ROAD, LC_ROAD, |
250 LC_SHIP, LC_SHIP, |
267 LC_SHIP, LC_SHIP, |
251 LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT, |
268 LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT, |
252 LC_ROAD, LC_ROAD, |
269 LC_ROAD, LC_ROAD, |
253 }; |
270 }; |
254 |
271 |
255 /* Number of liveries in each class, used to determine the height of the livery window */ |
272 /* Number of liveries in each class, used to determine the height of the livery window */ |
256 static const byte livery_height[] = { |
273 static const byte livery_height[] = { |
257 1, |
274 1, |
258 11, |
275 13, |
259 4, |
276 4, |
260 2, |
277 2, |
261 3, |
278 3, |
262 }; |
279 }; |
263 |
280 |
265 uint32 sel; |
282 uint32 sel; |
266 LiveryClass livery_class; |
283 LiveryClass livery_class; |
267 }; |
284 }; |
268 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(livery_d)); |
285 assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(livery_d)); |
269 |
286 |
|
287 |
|
288 enum PlayerLiveryWindowWidgets { |
|
289 PLW_WIDGET_CLASS_GENERAL = 2, |
|
290 PLW_WIDGET_CLASS_RAIL, |
|
291 PLW_WIDGET_CLASS_ROAD, |
|
292 PLW_WIDGET_CLASS_SHIP, |
|
293 PLW_WIDGET_CLASS_AIRCRAFT, |
|
294 |
|
295 PLW_WIDGET_PRI_COL_DROPDOWN = 9, |
|
296 PLW_WIDGET_SEC_COL_DROPDOWN, |
|
297 PLW_WIDGET_MATRIX, |
|
298 }; |
|
299 |
270 static void ShowColourDropDownMenu(Window *w, uint32 widget) |
300 static void ShowColourDropDownMenu(Window *w, uint32 widget) |
271 { |
301 { |
272 uint32 used_colours = 0; |
302 uint32 used_colours = 0; |
273 const Livery *livery; |
303 const Livery *livery; |
274 LiveryScheme scheme; |
304 LiveryScheme scheme; |
275 |
305 |
276 /* Disallow other player colours for the primary colour */ |
306 /* Disallow other player colours for the primary colour */ |
277 if (HasBit(WP(w, livery_d).sel, LS_DEFAULT) && widget == 10) { |
307 if (HasBit(WP(w, livery_d).sel, LS_DEFAULT) && widget == PLW_WIDGET_PRI_COL_DROPDOWN) { |
278 const Player *p; |
308 const Player *p; |
279 FOR_ALL_PLAYERS(p) { |
309 FOR_ALL_PLAYERS(p) { |
280 if (p->is_active && p->index != _local_player) SetBit(used_colours, p->player_color); |
310 if (p->is_active && p->index != _local_player) SetBit(used_colours, p->player_color); |
281 } |
311 } |
282 } |
312 } |
286 if (HasBit(WP(w, livery_d).sel, scheme)) break; |
316 if (HasBit(WP(w, livery_d).sel, scheme)) break; |
287 } |
317 } |
288 if (scheme == LS_END) scheme = LS_DEFAULT; |
318 if (scheme == LS_END) scheme = LS_DEFAULT; |
289 livery = &GetPlayer((PlayerID)w->window_number)->livery[scheme]; |
319 livery = &GetPlayer((PlayerID)w->window_number)->livery[scheme]; |
290 |
320 |
291 ShowDropDownMenu(w, _colour_dropdown, widget == 10 ? livery->colour1 : livery->colour2, widget, used_colours, 0); |
321 ShowDropDownMenu(w, _colour_dropdown, widget == PLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget, used_colours, 0); |
292 } |
322 } |
293 |
323 |
294 static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e) |
324 static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e) |
295 { |
325 { |
296 switch (e->event) { |
326 switch (e->event) { |
297 case WE_CREATE: |
327 case WE_CREATE: |
298 w->LowerWidget(WP(w, livery_d).livery_class + 2); |
328 w->LowerWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL); |
299 if (!_loaded_newgrf_features.has_2CC) { |
329 if (!_loaded_newgrf_features.has_2CC) { |
300 w->HideWidget(11); |
330 w->HideWidget(PLW_WIDGET_SEC_COL_DROPDOWN); |
301 w->HideWidget(12); |
|
302 } |
331 } |
303 break; |
332 break; |
304 |
333 |
305 case WE_PAINT: { |
334 case WE_PAINT: { |
306 const Player *p = GetPlayer((PlayerID)w->window_number); |
335 const Player *p = GetPlayer((PlayerID)w->window_number); |
307 LiveryScheme scheme = LS_DEFAULT; |
336 LiveryScheme scheme = LS_DEFAULT; |
308 int y = 51; |
337 int y = 51; |
309 |
338 |
310 /* Disable dropdown controls if no scheme is selected */ |
339 /* Disable dropdown controls if no scheme is selected */ |
311 w->SetWidgetDisabledState( 9, (WP(w, livery_d).sel == 0)); |
340 w->SetWidgetDisabledState(PLW_WIDGET_PRI_COL_DROPDOWN, (WP(w, livery_d).sel == 0)); |
312 w->SetWidgetDisabledState(10, (WP(w, livery_d).sel == 0)); |
341 w->SetWidgetDisabledState(PLW_WIDGET_SEC_COL_DROPDOWN, (WP(w, livery_d).sel == 0)); |
313 w->SetWidgetDisabledState(11, (WP(w, livery_d).sel == 0)); |
|
314 w->SetWidgetDisabledState(12, (WP(w, livery_d).sel == 0)); |
|
315 |
342 |
316 if (!(WP(w, livery_d).sel == 0)) { |
343 if (!(WP(w, livery_d).sel == 0)) { |
317 for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { |
344 for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { |
318 if (HasBit(WP(w, livery_d).sel, scheme)) break; |
345 if (HasBit(WP(w, livery_d).sel, scheme)) break; |
319 } |
346 } |
350 } |
377 } |
351 |
378 |
352 case WE_CLICK: { |
379 case WE_CLICK: { |
353 switch (e->we.click.widget) { |
380 switch (e->we.click.widget) { |
354 /* Livery Class buttons */ |
381 /* Livery Class buttons */ |
355 case 2: |
382 case PLW_WIDGET_CLASS_GENERAL: |
356 case 3: |
383 case PLW_WIDGET_CLASS_RAIL: |
357 case 4: |
384 case PLW_WIDGET_CLASS_ROAD: |
358 case 5: |
385 case PLW_WIDGET_CLASS_SHIP: |
359 case 6: { |
386 case PLW_WIDGET_CLASS_AIRCRAFT: { |
360 LiveryScheme scheme; |
387 LiveryScheme scheme; |
361 |
388 |
362 w->RaiseWidget(WP(w, livery_d).livery_class + 2); |
389 w->RaiseWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL); |
363 WP(w, livery_d).livery_class = (LiveryClass)(e->we.click.widget - 2); |
390 WP(w, livery_d).livery_class = (LiveryClass)(e->we.click.widget - PLW_WIDGET_CLASS_GENERAL); |
364 WP(w, livery_d).sel = 0; |
391 WP(w, livery_d).sel = 0; |
365 w->LowerWidget(WP(w, livery_d).livery_class + 2); |
392 w->LowerWidget(WP(w, livery_d).livery_class + PLW_WIDGET_CLASS_GENERAL); |
366 |
393 |
367 /* Select the first item in the list */ |
394 /* Select the first item in the list */ |
368 for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) { |
395 for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) { |
369 if (livery_class[scheme] == WP(w, livery_d).livery_class) { |
396 if (livery_class[scheme] == WP(w, livery_d).livery_class) { |
370 WP(w, livery_d).sel = 1 << scheme; |
397 WP(w, livery_d).sel = 1 << scheme; |
371 break; |
398 break; |
372 } |
399 } |
373 } |
400 } |
374 w->height = 49 + livery_height[WP(w, livery_d).livery_class] * 14; |
401 w->height = 49 + livery_height[WP(w, livery_d).livery_class] * 14; |
375 w->widget[13].bottom = w->height - 1; |
402 w->widget[PLW_WIDGET_MATRIX].bottom = w->height - 1; |
376 w->widget[13].data = livery_height[WP(w, livery_d).livery_class] << 8 | 1; |
403 w->widget[PLW_WIDGET_MATRIX].data = livery_height[WP(w, livery_d).livery_class] << 8 | 1; |
377 MarkWholeScreenDirty(); |
404 MarkWholeScreenDirty(); |
378 break; |
405 break; |
379 } |
406 } |
380 |
407 |
381 case 9: |
408 case PLW_WIDGET_PRI_COL_DROPDOWN: /* First colour dropdown */ |
382 case 10: /* First colour dropdown */ |
409 ShowColourDropDownMenu(w, PLW_WIDGET_PRI_COL_DROPDOWN); |
383 ShowColourDropDownMenu(w, 10); |
410 break; |
384 break; |
411 |
385 |
412 case PLW_WIDGET_SEC_COL_DROPDOWN: /* Second colour dropdown */ |
386 case 11: |
413 ShowColourDropDownMenu(w, PLW_WIDGET_SEC_COL_DROPDOWN); |
387 case 12: /* Second colour dropdown */ |
414 break; |
388 ShowColourDropDownMenu(w, 12); |
415 |
389 break; |
416 case PLW_WIDGET_MATRIX: { |
390 |
|
391 case 13: { |
|
392 LiveryScheme scheme; |
417 LiveryScheme scheme; |
393 LiveryScheme j = (LiveryScheme)((e->we.click.pt.y - 48) / 14); |
418 LiveryScheme j = (LiveryScheme)((e->we.click.pt.y - 48) / 14); |
394 |
419 |
395 for (scheme = LS_BEGIN; scheme <= j; scheme++) { |
420 for (scheme = LS_BEGIN; scheme <= j; scheme++) { |
396 if (livery_class[scheme] != WP(w, livery_d).livery_class) j++; |
421 if (livery_class[scheme] != WP(w, livery_d).livery_class) j++; |
436 { WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, SPR_IMG_TRUCKLIST, STR_LIVERY_ROADVEH_TIP }, |
461 { WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, SPR_IMG_TRUCKLIST, STR_LIVERY_ROADVEH_TIP }, |
437 { WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_IMG_SHIPLIST, STR_LIVERY_SHIP_TIP }, |
462 { WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_IMG_SHIPLIST, STR_LIVERY_SHIP_TIP }, |
438 { WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, SPR_IMG_AIRPLANESLIST, STR_LIVERY_AIRCRAFT_TIP }, |
463 { WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, SPR_IMG_AIRPLANESLIST, STR_LIVERY_AIRCRAFT_TIP }, |
439 { WWT_PANEL, RESIZE_NONE, 14, 110, 399, 14, 35, 0x0, STR_NULL }, |
464 { WWT_PANEL, RESIZE_NONE, 14, 110, 399, 14, 35, 0x0, STR_NULL }, |
440 { WWT_PANEL, RESIZE_NONE, 14, 0, 149, 36, 47, 0x0, STR_NULL }, |
465 { WWT_PANEL, RESIZE_NONE, 14, 0, 149, 36, 47, 0x0, STR_NULL }, |
441 { WWT_TEXTBTN, RESIZE_NONE, 14, 150, 262, 36, 47, STR_02BD, STR_LIVERY_PRIMARY_TIP }, |
466 { WWT_DROPDOWN, RESIZE_NONE, 14, 150, 274, 36, 47, STR_02BD, STR_LIVERY_PRIMARY_TIP }, |
442 { WWT_TEXTBTN, RESIZE_NONE, 14, 263, 274, 36, 47, STR_0225, STR_LIVERY_PRIMARY_TIP }, |
467 { WWT_DROPDOWN, RESIZE_NONE, 14, 275, 399, 36, 47, STR_02E1, STR_LIVERY_SECONDARY_TIP }, |
443 { WWT_TEXTBTN, RESIZE_NONE, 14, 275, 387, 36, 47, STR_02E1, STR_LIVERY_SECONDARY_TIP }, |
|
444 { WWT_TEXTBTN, RESIZE_NONE, 14, 388, 399, 36, 47, STR_0225, STR_LIVERY_SECONDARY_TIP }, |
|
445 { WWT_MATRIX, RESIZE_NONE, 14, 0, 399, 48, 48 + 1 * 14, (1 << 8) | 1, STR_LIVERY_PANEL_TIP }, |
468 { WWT_MATRIX, RESIZE_NONE, 14, 0, 399, 48, 48 + 1 * 14, (1 << 8) | 1, STR_LIVERY_PANEL_TIP }, |
446 { WIDGETS_END }, |
469 { WIDGETS_END }, |
447 }; |
470 }; |
448 |
471 |
449 static const WindowDesc _select_player_livery_2cc_desc = { |
472 static const WindowDesc _select_player_livery_2cc_desc = { |
463 { WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, SPR_IMG_TRUCKLIST, STR_LIVERY_ROADVEH_TIP }, |
486 { WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, SPR_IMG_TRUCKLIST, STR_LIVERY_ROADVEH_TIP }, |
464 { WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_IMG_SHIPLIST, STR_LIVERY_SHIP_TIP }, |
487 { WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_IMG_SHIPLIST, STR_LIVERY_SHIP_TIP }, |
465 { WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, SPR_IMG_AIRPLANESLIST, STR_LIVERY_AIRCRAFT_TIP }, |
488 { WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, SPR_IMG_AIRPLANESLIST, STR_LIVERY_AIRCRAFT_TIP }, |
466 { WWT_PANEL, RESIZE_NONE, 14, 110, 274, 14, 35, 0x0, STR_NULL }, |
489 { WWT_PANEL, RESIZE_NONE, 14, 110, 274, 14, 35, 0x0, STR_NULL }, |
467 { WWT_PANEL, RESIZE_NONE, 14, 0, 149, 36, 47, 0x0, STR_NULL }, |
490 { WWT_PANEL, RESIZE_NONE, 14, 0, 149, 36, 47, 0x0, STR_NULL }, |
468 { WWT_TEXTBTN, RESIZE_NONE, 14, 150, 262, 36, 47, STR_02BD, STR_LIVERY_PRIMARY_TIP }, |
491 { WWT_DROPDOWN, RESIZE_NONE, 14, 150, 274, 36, 47, STR_02BD, STR_LIVERY_PRIMARY_TIP }, |
469 { WWT_TEXTBTN, RESIZE_NONE, 14, 263, 274, 36, 47, STR_0225, STR_LIVERY_PRIMARY_TIP }, |
492 { WWT_DROPDOWN, RESIZE_NONE, 14, 275, 275, 36, 47, STR_02E1, STR_LIVERY_SECONDARY_TIP }, |
470 { WWT_TEXTBTN, RESIZE_NONE, 14, 275, 275, 36, 47, STR_02E1, STR_LIVERY_SECONDARY_TIP }, |
|
471 { WWT_TEXTBTN, RESIZE_NONE, 14, 275, 275, 36, 47, STR_0225, STR_LIVERY_SECONDARY_TIP }, |
|
472 { WWT_MATRIX, RESIZE_NONE, 14, 0, 274, 48, 48 + 1 * 14, (1 << 8) | 1, STR_LIVERY_PANEL_TIP }, |
493 { WWT_MATRIX, RESIZE_NONE, 14, 0, 274, 48, 48 + 1 * 14, (1 << 8) | 1, STR_LIVERY_PANEL_TIP }, |
473 { WIDGETS_END }, |
494 { WIDGETS_END }, |
474 }; |
495 }; |
475 |
496 |
476 static const WindowDesc _select_player_livery_desc = { |
497 static const WindowDesc _select_player_livery_desc = { |