author | KUDr |
Fri, 20 Apr 2007 19:43:06 +0000 | |
changeset 6513 | 454347ca3dfb |
parent 6491 | 00dc414c909d |
child 6517 | 295b16f8fa7d |
permissions | -rw-r--r-- |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1 |
/* $Id$ */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
2 |
|
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
3 |
/** @file build_vehicle_gui.cpp */ |
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
4 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
5 |
#include "stdafx.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
6 |
#include "openttd.h" |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
7 |
#include "train.h" |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
8 |
#include "roadveh.h" |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
9 |
#include "ship.h" |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
10 |
#include "aircraft.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
11 |
#include "debug.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
12 |
#include "functions.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
13 |
#include "table/sprites.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
14 |
#include "table/strings.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
15 |
#include "window.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
16 |
#include "gui.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
17 |
#include "vehicle.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
18 |
#include "gfx.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
19 |
#include "station.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
20 |
#include "command.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
21 |
#include "engine.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
22 |
#include "player.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
23 |
#include "depot.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
24 |
#include "airport.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
25 |
#include "vehicle_gui.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
26 |
#include "newgrf_engine.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
27 |
#include "date.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
28 |
#include "strings.h" |
6091
c8827d9ae04a
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138
parents:
6087
diff
changeset
|
29 |
#include "cargotype.h" |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
30 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
31 |
|
5273
d9f707aa36a6
(svn r7415) -Codechange: Don't use typedef enum for simple widget enumerators when we will never use
Darkvater
parents:
5215
diff
changeset
|
32 |
enum BuildVehicleWidgets { |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
33 |
BUILD_VEHICLE_WIDGET_CLOSEBOX = 0, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
34 |
BUILD_VEHICLE_WIDGET_CAPTION, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
35 |
BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
36 |
BUILD_VEHICLE_WIDGET_SORT_TEXT, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
37 |
BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
38 |
BUILD_VEHICLE_WIDGET_LIST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
39 |
BUILD_VEHICLE_WIDGET_SCROLLBAR, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
40 |
BUILD_VEHICLE_WIDGET_PANEL, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
41 |
BUILD_VEHICLE_WIDGET_BUILD, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
42 |
BUILD_VEHICLE_WIDGET_RENAME, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
43 |
BUILD_VEHICLE_WIDGET_RESIZE, |
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
44 |
BUILD_VEHICLE_WIDGET_END |
5273
d9f707aa36a6
(svn r7415) -Codechange: Don't use typedef enum for simple widget enumerators when we will never use
Darkvater
parents:
5215
diff
changeset
|
45 |
}; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
46 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
47 |
static const Widget _build_vehicle_widgets[] = { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
48 |
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, |
6386
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
49 |
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 239, 0, 13, 0x0, STR_018C_WINDOW_TITLE_DRAG_THIS }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
50 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, |
6386
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
51 |
{ WWT_PANEL, RESIZE_RIGHT, 14, 81, 227, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, |
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
52 |
{ WWT_TEXTBTN, RESIZE_LR, 14, 228, 239, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP}, |
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
53 |
{ WWT_MATRIX, RESIZE_RB, 14, 0, 227, 26, 121, 0x0, STR_NULL }, |
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
54 |
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 228, 239, 26, 121, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST }, |
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
55 |
{ WWT_PANEL, RESIZE_RTB, 14, 0, 239, 122, 243, 0x0, STR_NULL }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
56 |
|
6384
15179597944c
(svn r9474) -Fix (r8378): Expand the details widget in the vehicle build windows again to make room for all the text.
maedhros
parents:
6259
diff
changeset
|
57 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 114, 244, 255, 0x0, STR_NULL }, |
6386
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
58 |
{ WWT_PUSHTXTBTN, RESIZE_RTB, 14, 115, 227, 244, 255, 0x0, STR_NULL }, |
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
59 |
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 228, 239, 244, 255, 0x0, STR_RESIZE_BUTTON }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
60 |
{ WIDGETS_END}, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
61 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
62 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
63 |
/* Setup widget strings to fit the different types of vehicles */ |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
64 |
static void SetupWindowStrings(Window *w, byte type) |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
65 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
66 |
switch (type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
67 |
case VEH_TRAIN: |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
68 |
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_JUST_STRING; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
69 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_8843_TRAIN_VEHICLE_SELECTION; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
70 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].data = STR_881F_BUILD_VEHICLE; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
71 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips = STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
72 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_8820_RENAME; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
73 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_8845_RENAME_TRAIN_VEHICLE_TYPE; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
74 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
75 |
case VEH_ROAD: |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
76 |
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_9006_NEW_ROAD_VEHICLES; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
77 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_9026_ROAD_VEHICLE_SELECTION; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
78 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].data = STR_9007_BUILD_VEHICLE; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
79 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips = STR_9027_BUILD_THE_HIGHLIGHTED_ROAD; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
80 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_9034_RENAME; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
81 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9035_RENAME_ROAD_VEHICLE_TYPE; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
82 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
83 |
case VEH_SHIP: |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
84 |
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_9808_NEW_SHIPS; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
85 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_9825_SHIP_SELECTION_LIST_CLICK; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
86 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].data = STR_9809_BUILD_SHIP; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
87 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips = STR_9826_BUILD_THE_HIGHLIGHTED_SHIP; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
88 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_9836_RENAME; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
89 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9837_RENAME_SHIP_TYPE; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
90 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
91 |
case VEH_AIRCRAFT: |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
92 |
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_A005_NEW_AIRCRAFT; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
93 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_A025_AIRCRAFT_SELECTION_LIST; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
94 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].data = STR_A006_BUILD_AIRCRAFT; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
95 |
w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips = STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
96 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_A037_RENAME; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
97 |
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_A038_RENAME_AIRCRAFT_TYPE; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
98 |
break; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
99 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
100 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
101 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
102 |
static bool _internal_sort_order; // descending/ascending |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
103 |
|
5784
a3b23f0fc794
(svn r8336) -Codechange: added function to translate vehicle types to 0,1,2... for use for index to arrays
bjarni
parents:
5783
diff
changeset
|
104 |
static byte _last_sort_criteria[] = {0, 0, 0, 0}; |
a3b23f0fc794
(svn r8336) -Codechange: added function to translate vehicle types to 0,1,2... for use for index to arrays
bjarni
parents:
5783
diff
changeset
|
105 |
static bool _last_sort_order[] = {false, false, false, false}; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
106 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
107 |
static int CDECL EngineNumberSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
108 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
109 |
const EngineID va = *(const EngineID*)a; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
110 |
const EngineID vb = *(const EngineID*)b; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
111 |
int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
112 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
113 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
114 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
115 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
116 |
static int CDECL EngineIntroDateSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
117 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
118 |
const int va = GetEngine(*(const EngineID*)a)->intro_date; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
119 |
const int vb = GetEngine(*(const EngineID*)b)->intro_date; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
120 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
121 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
122 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
123 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
124 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
125 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
126 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
127 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
128 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
129 |
static int CDECL EngineNameSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
130 |
{ |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
131 |
static EngineID last_engine[2] = { INVALID_ENGINE, INVALID_ENGINE }; |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
132 |
static char last_name[2][64] = { "\0", "\0" }; |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
133 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
134 |
const EngineID va = *(const EngineID*)a; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
135 |
const EngineID vb = *(const EngineID*)b; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
136 |
int r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
137 |
|
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
138 |
if (va != last_engine[0]) { |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
139 |
last_engine[0] = va; |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4896
diff
changeset
|
140 |
GetString(last_name[0], GetCustomEngineName(va), lastof(last_name[0])); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
141 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
142 |
|
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
143 |
if (vb != last_engine[1]) { |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
144 |
last_engine[1] = vb; |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4896
diff
changeset
|
145 |
GetString(last_name[1], GetCustomEngineName(vb), lastof(last_name[1])); |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
146 |
} |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
147 |
|
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
148 |
r = strcmp(last_name[0], last_name[1]); // sort by name |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
149 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
150 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
151 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
152 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
153 |
} |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
154 |
return _internal_sort_order ? -r : r; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
155 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
156 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
157 |
static int CDECL EngineReliabilitySorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
158 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
159 |
const int va = GetEngine(*(const EngineID*)a)->reliability; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
160 |
const int vb = GetEngine(*(const EngineID*)b)->reliability; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
161 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
162 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
163 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
164 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
165 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
166 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
167 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
168 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
169 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
170 |
/* Train sorting functions */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
171 |
static int CDECL TrainEngineCostSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
172 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
173 |
int va = RailVehInfo(*(const EngineID*)a)->base_cost; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
174 |
int vb = RailVehInfo(*(const EngineID*)b)->base_cost; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
175 |
int r = va - vb; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
176 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
177 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
178 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
179 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
180 |
static int CDECL TrainEngineSpeedSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
181 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
182 |
int va = RailVehInfo(*(const EngineID*)a)->max_speed; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
183 |
int vb = RailVehInfo(*(const EngineID*)b)->max_speed; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
184 |
int r = va - vb; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
185 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
186 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
187 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
188 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
189 |
static int CDECL TrainEnginePowerSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
190 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
191 |
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
192 |
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
193 |
|
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
194 |
int va = rvi_a->power << (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0); |
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
195 |
int vb = rvi_b->power << (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
196 |
int r = va - vb; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
197 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
198 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
199 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
200 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
201 |
static int CDECL TrainEngineRunningCostSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
202 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
203 |
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
204 |
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
205 |
|
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
206 |
int va = rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class] * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1); |
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
207 |
int vb = rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class] * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
208 |
int r = va - vb; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
209 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
210 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
211 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
212 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
213 |
static int CDECL TrainEnginePowerVsRunningCostSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
214 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
215 |
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
216 |
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
217 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
218 |
/* Here we are using a few tricks to get the right sort. |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
219 |
* We want power/running cost, but since we usually got higher running cost than power and we store the result in an int, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
220 |
* we will actually calculate cunning cost/power (to make it more than 1). |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
221 |
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b. |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
222 |
* Another thing is that both power and running costs should be doubled for multiheaded engines. |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
223 |
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
224 |
int va = (rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class]) / max((uint16)1, rvi_a->power); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
225 |
int vb = (rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class]) / max((uint16)1, rvi_b->power); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
226 |
int r = vb - va; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
227 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
228 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
229 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
230 |
|
6023
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
231 |
static int CDECL TrainEngineNumberSorter(const void *a, const void *b) |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
232 |
{ |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
233 |
const EngineID va = *(const EngineID*)a; |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
234 |
const EngineID vb = *(const EngineID*)b; |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
235 |
int r = ListPositionOfEngine(va) - ListPositionOfEngine(vb); |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
236 |
|
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
237 |
return _internal_sort_order ? -r : r; |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
238 |
} |
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
239 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
240 |
static int CDECL TrainEnginesThenWagonsSorter(const void *a, const void *b) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
241 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
242 |
EngineID va = *(const EngineID*)a; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
243 |
EngineID vb = *(const EngineID*)b; |
5871
a98c86408de4
(svn r8460) -Fix (r8455): the build train window put locomotives and wagons in appeantly random order
bjarni
parents:
5868
diff
changeset
|
244 |
int val_a = (RailVehInfo(va)->railveh_type == RAILVEH_WAGON ? 1 : 0); |
a98c86408de4
(svn r8460) -Fix (r8455): the build train window put locomotives and wagons in appeantly random order
bjarni
parents:
5868
diff
changeset
|
245 |
int val_b = (RailVehInfo(vb)->railveh_type == RAILVEH_WAGON ? 1 : 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
246 |
int r = val_a - val_b; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
247 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
248 |
/* Use EngineID to sort instead since we want consistent sorting */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
249 |
if (r == 0) return EngineNumberSorter(a, b); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
250 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
251 |
return _internal_sort_order ? -r : r; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
252 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
253 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
254 |
/* Aircraft sorting functions */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
255 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
256 |
static int CDECL AircraftEngineCostSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
257 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
258 |
const int va = AircraftVehInfo(*(const EngineID*)a)->base_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
259 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->base_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
260 |
int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
261 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
262 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
263 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
264 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
265 |
static int CDECL AircraftEngineSpeedSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
266 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
267 |
const int va = AircraftVehInfo(*(const EngineID*)a)->max_speed; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
268 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->max_speed; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
269 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
270 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
271 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
272 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
273 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
274 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
275 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
276 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
277 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
278 |
static int CDECL AircraftEngineRunningCostSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
279 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
280 |
const int va = AircraftVehInfo(*(const EngineID*)a)->running_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
281 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->running_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
282 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
283 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
284 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
285 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
286 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
287 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
288 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
289 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
290 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
291 |
static int CDECL AircraftEngineCargoSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
292 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
293 |
const int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
294 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
295 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
296 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
297 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
298 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
299 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
300 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
301 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
302 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
303 |
|
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
304 |
static EngList_SortTypeFunction * const _sorter[][9] = {{ |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
305 |
/* Trains */ |
6023
0ef69a935adc
(svn r8746) -Regression r8331: build train window could sort incorrectly by EngineID with certain newGRF sets
bjarni
parents:
5955
diff
changeset
|
306 |
&TrainEngineNumberSorter, |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
307 |
&TrainEngineCostSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
308 |
&TrainEngineSpeedSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
309 |
&TrainEnginePowerSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
310 |
&EngineIntroDateSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
311 |
&EngineNameSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
312 |
&TrainEngineRunningCostSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
313 |
&TrainEnginePowerVsRunningCostSorter, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
314 |
&EngineReliabilitySorter, |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
315 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
316 |
/* Road vehicles */ |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
317 |
&EngineNumberSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
318 |
&EngineIntroDateSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
319 |
&EngineNameSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
320 |
&EngineReliabilitySorter, |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
321 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
322 |
/* Ships */ |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
323 |
&EngineNumberSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
324 |
&EngineIntroDateSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
325 |
&EngineNameSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
326 |
&EngineReliabilitySorter, |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
327 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
328 |
/* Aircraft */ |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
329 |
&EngineNumberSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
330 |
&AircraftEngineCostSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
331 |
&AircraftEngineSpeedSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
332 |
&EngineIntroDateSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
333 |
&EngineNameSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
334 |
&AircraftEngineRunningCostSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
335 |
&EngineReliabilitySorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
336 |
&AircraftEngineCargoSorter, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
337 |
}}; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
338 |
|
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
339 |
static const StringID _sort_listing[][10] = {{ |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
340 |
/* Trains */ |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
341 |
STR_ENGINE_SORT_ENGINE_ID, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
342 |
STR_ENGINE_SORT_COST, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
343 |
STR_SORT_BY_MAX_SPEED, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
344 |
STR_ENGINE_SORT_POWER, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
345 |
STR_ENGINE_SORT_INTRO_DATE, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
346 |
STR_SORT_BY_DROPDOWN_NAME, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
347 |
STR_ENGINE_SORT_RUNNING_COST, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
348 |
STR_ENGINE_SORT_POWER_VS_RUNNING_COST, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
349 |
STR_SORT_BY_RELIABILITY, |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
350 |
INVALID_STRING_ID |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
351 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
352 |
/* Road vehicles */ |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
353 |
STR_ENGINE_SORT_ENGINE_ID, |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
354 |
STR_ENGINE_SORT_INTRO_DATE, |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
355 |
STR_SORT_BY_DROPDOWN_NAME, |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
356 |
STR_SORT_BY_RELIABILITY, |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
357 |
INVALID_STRING_ID |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
358 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
359 |
/* Ships */ |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
360 |
STR_ENGINE_SORT_ENGINE_ID, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
361 |
STR_ENGINE_SORT_INTRO_DATE, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
362 |
STR_SORT_BY_DROPDOWN_NAME, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
363 |
STR_SORT_BY_RELIABILITY, |
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
364 |
INVALID_STRING_ID |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
365 |
}, { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
366 |
/* Aircraft */ |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
367 |
STR_ENGINE_SORT_ENGINE_ID, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
368 |
STR_ENGINE_SORT_COST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
369 |
STR_SORT_BY_MAX_SPEED, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
370 |
STR_ENGINE_SORT_INTRO_DATE, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
371 |
STR_SORT_BY_DROPDOWN_NAME, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
372 |
STR_ENGINE_SORT_RUNNING_COST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
373 |
STR_SORT_BY_RELIABILITY, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
374 |
STR_ENGINE_SORT_CARGO_CAPACITY, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
375 |
INVALID_STRING_ID |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
376 |
}}; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
377 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
378 |
/* Draw rail wagon specific details */ |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
379 |
static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
380 |
{ |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
381 |
/* Purchase cost */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
382 |
SetDParam(0, (rvi->base_cost * _price.build_railwagon) >> 8); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
383 |
DrawString(x, y, STR_PURCHASE_INFO_COST, 0); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
384 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
385 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
386 |
/* Wagon weight - (including cargo) */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
387 |
SetDParam(0, rvi->weight); |
6091
c8827d9ae04a
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138
parents:
6087
diff
changeset
|
388 |
SetDParam(1, (GetCargo(rvi->cargo_type)->weight * rvi->capacity >> 4) + rvi->weight); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
389 |
DrawString(x, y, STR_PURCHASE_INFO_WEIGHT_CWEIGHT, 0); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
390 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
391 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
392 |
/* Wagon speed limit, displayed if above zero */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
393 |
if (rvi->max_speed > 0 && _patches.wagon_speed_limits) { |
5874
2db89a640b7a
(svn r8464) -Revert (r4322): Change back to converting to mph in the GUI code, as 1 mph == 1.6 km/h is too far out for some people.
peter1138
parents:
5871
diff
changeset
|
394 |
SetDParam(0, rvi->max_speed * 10 / 16); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
395 |
DrawString(x, y, STR_PURCHASE_INFO_SPEED, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
396 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
397 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
398 |
return y; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
399 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
400 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
401 |
/* Draw locomotive specific details */ |
5823 | 402 |
static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi) |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
403 |
{ |
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
404 |
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
405 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
406 |
/* Purchase Cost - Engine weight */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
407 |
SetDParam(0, rvi->base_cost * (_price.build_railvehicle >> 3) >> 5); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
408 |
SetDParam(1, rvi->weight << multihead); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
409 |
DrawString(x, y, STR_PURCHASE_INFO_COST_WEIGHT, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
410 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
411 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
412 |
/* Max speed - Engine power */ |
5874
2db89a640b7a
(svn r8464) -Revert (r4322): Change back to converting to mph in the GUI code, as 1 mph == 1.6 km/h is too far out for some people.
peter1138
parents:
5871
diff
changeset
|
413 |
SetDParam(0, rvi->max_speed * 10 / 16); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
414 |
SetDParam(1, rvi->power << multihead); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
415 |
DrawString(x, y, STR_PURCHASE_INFO_SPEED_POWER, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
416 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
417 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
418 |
/* Max tractive effort - not applicable if old acceleration or maglev */ |
5823 | 419 |
if (_patches.realistic_acceleration && rvi->railtype != RAILTYPE_MAGLEV) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
420 |
SetDParam(0, ((rvi->weight << multihead) * 10 * rvi->tractive_effort) / 256); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
421 |
DrawString(x, y, STR_PURCHASE_INFO_MAX_TE, 0); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
422 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
423 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
424 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
425 |
/* Running cost */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
426 |
SetDParam(0, (rvi->running_cost_base * _price.running_rail[rvi->running_cost_class] >> 8) << multihead); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
427 |
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
428 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
429 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
430 |
/* Powered wagons power - Powered wagons extra weight */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
431 |
if (rvi->pow_wag_power != 0) { |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
432 |
SetDParam(0, rvi->pow_wag_power); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
433 |
SetDParam(1, rvi->pow_wag_weight); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
434 |
DrawString(x, y, STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
435 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
436 |
}; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
437 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
438 |
return y; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
439 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
440 |
|
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
441 |
/* Draw road vehicle specific details */ |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
442 |
static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const RoadVehicleInfo *rvi) |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
443 |
{ |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
444 |
bool refittable = (_engine_info[engine_number].refit_mask != 0); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
445 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
446 |
/* Purchase cost - Max speed */ |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
447 |
SetDParam(0, rvi->base_cost * (_price.roadveh_base >> 3) >> 5); |
5874
2db89a640b7a
(svn r8464) -Revert (r4322): Change back to converting to mph in the GUI code, as 1 mph == 1.6 km/h is too far out for some people.
peter1138
parents:
5871
diff
changeset
|
448 |
SetDParam(1, rvi->max_speed * 10 / 32); |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
449 |
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
450 |
y += 10; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
451 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
452 |
/* Running cost */ |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
453 |
SetDParam(0, rvi->running_cost * _price.roadveh_running >> 8); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
454 |
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
455 |
y += 10; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
456 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
457 |
/* Cargo type + capacity */ |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
458 |
SetDParam(0, rvi->cargo_type); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
459 |
SetDParam(1, rvi->capacity); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
460 |
SetDParam(2, refittable ? STR_9842_REFITTABLE : STR_EMPTY); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
461 |
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
462 |
y += 10; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
463 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
464 |
return y; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
465 |
} |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
466 |
|
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
467 |
/* Draw ship specific details */ |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
468 |
static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const ShipVehicleInfo *svi) |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
469 |
{ |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
470 |
/* Purchase cost - Max speed */ |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
471 |
SetDParam(0, svi->base_cost * (_price.ship_base >> 3) >> 5); |
5874
2db89a640b7a
(svn r8464) -Revert (r4322): Change back to converting to mph in the GUI code, as 1 mph == 1.6 km/h is too far out for some people.
peter1138
parents:
5871
diff
changeset
|
472 |
SetDParam(1, svi->max_speed * 10 / 32); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
473 |
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0); |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
474 |
y += 10; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
475 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
476 |
/* Cargo type + capacity */ |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
477 |
SetDParam(0, svi->cargo_type); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
478 |
SetDParam(1, svi->capacity); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
479 |
SetDParam(2, svi->refittable ? STR_9842_REFITTABLE : STR_EMPTY); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
480 |
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
481 |
y += 10; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
482 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
483 |
/* Running cost */ |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
484 |
SetDParam(0, svi->running_cost * _price.ship_running >> 8); |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
485 |
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0); |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
486 |
y += 10; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
487 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
488 |
return y; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
489 |
} |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
490 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
491 |
/* Draw aircraft specific details */ |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
492 |
static int DrawAircraftPurchaseInfo(int x, int y, EngineID engine_number, const AircraftVehicleInfo *avi) |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
493 |
{ |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
494 |
CargoID cargo; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
495 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
496 |
/* Purchase cost - Max speed */ |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
497 |
SetDParam(0, avi->base_cost * (_price.aircraft_base >> 3) >> 5); |
6193
6f20de9e4f1b
(svn r8973) -Feature/Codechange: Changed the internal unit for aircraft velocities to from 8mph to 1km/h (peter1138), also give aircraft realsitic velocities (so that 1km/h is 1km/h independent of vehicle type) (peter1138). Introduce a flag to reduce aircraft speed in holding patterns to some realistic velocity. Use this flag for the city airport for the time being and make use of the different entry points for this airport type.
celestar
parents:
6123
diff
changeset
|
498 |
SetDParam(1, avi->max_speed * 10 / 16); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
499 |
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
500 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
501 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
502 |
/* Cargo capacity */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
503 |
cargo = FindFirstRefittableCargo(engine_number); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
504 |
if (cargo == CT_INVALID || cargo == CT_PASSENGERS) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
505 |
SetDParam(0, avi->passenger_capacity); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
506 |
SetDParam(1, avi->mail_capacity); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
507 |
DrawString(x, y, STR_PURCHASE_INFO_AIRCRAFT_CAPACITY, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
508 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
509 |
/* Note, if the default capacity is selected by the refit capacity |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
510 |
* callback, then the capacity shown is likely to be incorrect. */ |
4896
f86350aaaaa5
(svn r6855) - Codechange: When displaying a "quantity of cargo" string, use the {CARGO} command and supply the cargo type and quantity, instead of manually looking up the cargo type's string.
peter1138
parents:
4807
diff
changeset
|
511 |
SetDParam(0, cargo); |
6087 | 512 |
SetDParam(1, AircraftDefaultCargoCapacity(cargo, avi)); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
513 |
SetDParam(2, STR_9842_REFITTABLE); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
514 |
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
515 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
516 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
517 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
518 |
/* Running cost */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
519 |
SetDParam(0, avi->running_cost * _price.aircraft_running >> 8); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
520 |
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
521 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
522 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
523 |
return y; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
524 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
525 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
526 |
/** |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
527 |
* Draw the purchase info details of a vehicle at a given location. |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
528 |
* @param x,y location where to draw the info |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
529 |
* @param w how wide are the text allowed to be (size of widget/window to Draw in) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
530 |
* @param engine_number the engine of which to draw the info of |
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
531 |
* @return y after drawing all the text |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
532 |
*/ |
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
533 |
int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number) |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
534 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
535 |
const Engine *e = GetEngine(engine_number); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
536 |
YearMonthDay ymd; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
537 |
ConvertDateToYMD(e->intro_date, &ymd); |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
538 |
bool refitable = false; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
539 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
540 |
switch (e->type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
541 |
case VEH_TRAIN: { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
542 |
const RailVehicleInfo *rvi = RailVehInfo(engine_number); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
543 |
|
5819
77fa0b7a6065
(svn r8381) -Fix (r8377): [build vehicle window] cleaned up the train refitable detection. It had two variables doing the same thing, but not always set to the same (oops)
bjarni
parents:
5817
diff
changeset
|
544 |
refitable = (EngInfo(engine_number)->refit_mask != 0) && (rvi->capacity > 0); |
77fa0b7a6065
(svn r8381) -Fix (r8377): [build vehicle window] cleaned up the train refitable detection. It had two variables doing the same thing, but not always set to the same (oops)
bjarni
parents:
5817
diff
changeset
|
545 |
|
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
546 |
if (rvi->railveh_type == RAILVEH_WAGON) { |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
547 |
y = DrawRailWagonPurchaseInfo(x, y, engine_number, rvi); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
548 |
} else { |
5823 | 549 |
y = DrawRailEnginePurchaseInfo(x, y, engine_number, rvi); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
550 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
551 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
552 |
/* Cargo type + capacity, or N/A */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
553 |
if (rvi->capacity == 0) { |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
554 |
SetDParam(0, CT_INVALID); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
555 |
SetDParam(2, STR_EMPTY); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
556 |
} else { |
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
557 |
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0); |
5815
1af8b7c2f257
(svn r8377) -Fix (r8331): [build vehicle window] train cargo capacity now only add "(refitable)" if the engine in question is refitable
bjarni
parents:
5802
diff
changeset
|
558 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
559 |
SetDParam(0, rvi->cargo_type); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
560 |
SetDParam(1, (rvi->capacity * (CountArticulatedParts(engine_number) + 1)) << multihead); |
5819
77fa0b7a6065
(svn r8381) -Fix (r8377): [build vehicle window] cleaned up the train refitable detection. It had two variables doing the same thing, but not always set to the same (oops)
bjarni
parents:
5817
diff
changeset
|
561 |
SetDParam(2, refitable ? STR_9842_REFITTABLE : STR_EMPTY); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
562 |
} |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
563 |
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
564 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
565 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
566 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
567 |
case VEH_ROAD: |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
568 |
y = DrawRoadVehPurchaseInfo(x, y, engine_number, RoadVehInfo(engine_number)); |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
569 |
refitable = true; |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
570 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
571 |
case VEH_SHIP: { |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
572 |
const ShipVehicleInfo *svi = ShipVehInfo(engine_number); |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
573 |
y = DrawShipPurchaseInfo(x, y, engine_number, svi); |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
574 |
refitable = svi->refittable; |
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
575 |
} break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
576 |
case VEH_AIRCRAFT: |
5817
0bd3e66ece83
(svn r8379) -Cleanup: [build vehicle window] removed overloading with DrawVehiclePurchaseInfo() and renamed them into type specific names
bjarni
parents:
5816
diff
changeset
|
577 |
y = DrawAircraftPurchaseInfo(x, y, engine_number, AircraftVehInfo(engine_number)); |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
578 |
refitable = true; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
579 |
break; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
580 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
581 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
582 |
/* Draw details, that applies to all types except rail wagons */ |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
583 |
if (e->type != VEH_TRAIN || RailVehInfo(engine_number)->railveh_type != RAILVEH_WAGON) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
584 |
/* Design date - Life length */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
585 |
SetDParam(0, ymd.year); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
586 |
SetDParam(1, e->lifelength); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
587 |
DrawString(x, y, STR_PURCHASE_INFO_DESIGNED_LIFE, 0); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
588 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
589 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
590 |
/* Reliability */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
591 |
SetDParam(0, e->reliability * 100 >> 16); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
592 |
DrawString(x, y, STR_PURCHASE_INFO_RELIABILITY, 0); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
593 |
y += 10; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
594 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
595 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
596 |
/* Additional text from NewGRF */ |
4930
708801d486c6
(svn r6910) - Codechange: Supply width of area when drawing purchase info instead of using hardcoded values. (mart3p)
peter1138
parents:
4912
diff
changeset
|
597 |
y += ShowAdditionalText(x, y, w, engine_number); |
5790
d4a732968bda
(svn r8343) -Cleanup: [build vehicle windows] added a few comments and removed two switch-cases, that we can do without
bjarni
parents:
5787
diff
changeset
|
598 |
if (refitable) y += ShowRefitOptionsList(x, y, w, engine_number); |
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
599 |
|
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
600 |
return y; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
601 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
602 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
603 |
/* Figure out what train EngineIDs to put in the list */ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
604 |
static void GenerateBuildTrainList(Window *w) |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
605 |
{ |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
606 |
EngineID eid, sel_id; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
607 |
int num_engines = 0; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
608 |
int num_wagons = 0; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
609 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
610 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
611 |
bv->filter.railtype = (w->window_number == 0) ? RAILTYPE_END : GetRailType(w->window_number); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
612 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
613 |
EngList_RemoveAll(&bv->eng_list); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
614 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
615 |
/* Make list of all available train engines and wagons. |
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
616 |
* Also check to see if the previously selected engine is still available, |
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
617 |
* and if not, reset selection to INVALID_ENGINE. This could be the case |
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
618 |
* when engines become obsolete and are removed */ |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
619 |
for (sel_id = INVALID_ENGINE, eid = 0; eid < NUM_TRAIN_ENGINES; eid++) { |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
620 |
const RailVehicleInfo *rvi = RailVehInfo(eid); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
621 |
|
5823 | 622 |
if (bv->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, bv->filter.railtype)) continue; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
623 |
if (!IsEngineBuildable(eid, VEH_TRAIN, _local_player)) continue; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
624 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
625 |
EngList_Add(&bv->eng_list, eid); |
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
626 |
if (rvi->railveh_type != RAILVEH_WAGON) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
627 |
num_engines++; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
628 |
} else { |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
629 |
num_wagons++; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
630 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
631 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
632 |
if (eid == bv->sel_engine) sel_id = eid; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
633 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
634 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
635 |
bv->sel_engine = sel_id; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
636 |
|
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
637 |
/* make engines first, and then wagons, sorted by ListPositionOfEngine() */ |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
638 |
_internal_sort_order = false; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
639 |
EngList_Sort(&bv->eng_list, TrainEnginesThenWagonsSorter); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
640 |
|
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
641 |
/* and then sort engines */ |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
642 |
_internal_sort_order = bv->descending_sort_order; |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
643 |
EngList_SortPartial(&bv->eng_list, _sorter[0][bv->sort_criteria], 0, num_engines); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
644 |
|
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
645 |
/* and finally sort wagons */ |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
646 |
EngList_SortPartial(&bv->eng_list, _sorter[0][bv->sort_criteria], num_engines, num_wagons); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
647 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
648 |
|
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
649 |
/* Figure out what road vehicle EngineIDs to put in the list */ |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
650 |
static void GenerateBuildRoadVehList(Window *w) |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
651 |
{ |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
652 |
EngineID eid, sel_id; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
653 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
654 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
655 |
EngList_RemoveAll(&bv->eng_list); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
656 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
657 |
sel_id = INVALID_ENGINE; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
658 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
659 |
for (eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
660 |
if (!IsEngineBuildable(eid, VEH_ROAD, _local_player)) continue; |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
661 |
EngList_Add(&bv->eng_list, eid); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
662 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
663 |
if (eid == bv->sel_engine) sel_id = eid; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
664 |
} |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
665 |
bv->sel_engine = sel_id; |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
666 |
} |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
667 |
|
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
668 |
/* Figure out what ship EngineIDs to put in the list */ |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
669 |
static void GenerateBuildShipList(Window *w) |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
670 |
{ |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
671 |
EngineID eid, sel_id; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
672 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
673 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
674 |
EngList_RemoveAll(&bv->eng_list); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
675 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
676 |
sel_id = INVALID_ENGINE; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
677 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
678 |
for (eid = SHIP_ENGINES_INDEX; eid < SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES; eid++) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
679 |
if (!IsEngineBuildable(eid, VEH_SHIP, _local_player)) continue; |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
680 |
EngList_Add(&bv->eng_list, eid); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
681 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
682 |
if (eid == bv->sel_engine) sel_id = eid; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
683 |
} |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
684 |
bv->sel_engine = sel_id; |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
685 |
} |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
686 |
|
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
687 |
/* Figure out what aircraft EngineIDs to put in the list */ |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
688 |
static void GenerateBuildAircraftList(Window *w) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
689 |
{ |
5200
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
690 |
EngineID eid, sel_id; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
691 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
692 |
|
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
693 |
EngList_RemoveAll(&bv->eng_list); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
694 |
|
5200
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
695 |
/* Make list of all available planes. |
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
696 |
* Also check to see if the previously selected plane is still available, |
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
697 |
* and if not, reset selection to INVALID_ENGINE. This could be the case |
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
698 |
* when planes become obsolete and are removed */ |
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
699 |
sel_id = INVALID_ENGINE; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
700 |
for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
701 |
if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue; |
6237
69427b23257f
(svn r9040) -Codechange: the build window and CmdBuildAircraft() now shares the code to figure out if an aircraft is buildable in the hangar in question
bjarni
parents:
6193
diff
changeset
|
702 |
if (w->window_number != 0 && !IsAircraftBuildableAtStation(eid, w->window_number)) continue; |
6044
e9e318238ad6
(svn r8771) -Fix r8343: build aircraft windows will no longer show aircraft that can't use the airport in question
bjarni
parents:
6032
diff
changeset
|
703 |
|
6237
69427b23257f
(svn r9040) -Codechange: the build window and CmdBuildAircraft() now shares the code to figure out if an aircraft is buildable in the hangar in question
bjarni
parents:
6193
diff
changeset
|
704 |
EngList_Add(&bv->eng_list, eid); |
69427b23257f
(svn r9040) -Codechange: the build window and CmdBuildAircraft() now shares the code to figure out if an aircraft is buildable in the hangar in question
bjarni
parents:
6193
diff
changeset
|
705 |
if (eid == bv->sel_engine) sel_id = eid; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
706 |
} |
5200
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
707 |
|
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
708 |
bv->sel_engine = sel_id; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
709 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
710 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
711 |
/* Generate the list of vehicles */ |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
712 |
static void GenerateBuildList(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
713 |
{ |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
714 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
715 |
|
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
716 |
switch (bv->vehicle_type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
717 |
case VEH_TRAIN: |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
718 |
GenerateBuildTrainList(w); |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
719 |
return; // trains should not reach the last sorting |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
720 |
case VEH_ROAD: |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
721 |
GenerateBuildRoadVehList(w); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
722 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
723 |
case VEH_SHIP: |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
724 |
GenerateBuildShipList(w); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
725 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
726 |
case VEH_AIRCRAFT: |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
727 |
GenerateBuildAircraftList(w); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
728 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
729 |
} |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
730 |
_internal_sort_order = bv->descending_sort_order; |
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
731 |
EngList_Sort(&bv->eng_list, _sorter[bv->vehicle_type][bv->sort_criteria]); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
732 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
733 |
|
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
734 |
static void DrawVehicleEngine(byte type, int x, int y, EngineID engine, SpriteID pal) |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
735 |
{ |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
736 |
switch (type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
737 |
case VEH_TRAIN: DrawTrainEngine( x, y, engine, pal); break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
738 |
case VEH_ROAD: DrawRoadVehEngine( x, y, engine, pal); break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
739 |
case VEH_SHIP: DrawShipEngine( x, y, engine, pal); break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
740 |
case VEH_AIRCRAFT: DrawAircraftEngine(x, y, engine, pal); break; |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
741 |
default: NOT_REACHED(); |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
742 |
} |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
743 |
} |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
744 |
|
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
745 |
/** Engine drawing loop |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
746 |
* @param type Type of vehicle (VEH_*) |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
747 |
* @param x,y Where should the list start |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
748 |
* @param eng_list What engines to draw |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
749 |
* @param min where to start in the list |
5802
e770857f092f
(svn r8364) -Codechange (r8362): added an assert to catch conditions where a request wants to draw more vehicles than the list contains
bjarni
parents:
5800
diff
changeset
|
750 |
* @param max where in the list to end |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
751 |
* @param selected_id what engine to highlight as selected, if any |
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
752 |
* @param show_count Display the number of vehicles (used by autoreplace) |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
753 |
*/ |
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
754 |
void DrawEngineList(byte type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count) |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
755 |
{ |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
756 |
byte step_size = GetVehicleListHeight(type); |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
757 |
byte x_offset = 0; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
758 |
byte y_offset = 0; |
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
759 |
Player *p = GetPlayer(_local_player); |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
760 |
|
5802
e770857f092f
(svn r8364) -Codechange (r8362): added an assert to catch conditions where a request wants to draw more vehicles than the list contains
bjarni
parents:
5800
diff
changeset
|
761 |
assert(max <= EngList_Count(&eng_list)); |
e770857f092f
(svn r8364) -Codechange (r8362): added an assert to catch conditions where a request wants to draw more vehicles than the list contains
bjarni
parents:
5800
diff
changeset
|
762 |
|
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
763 |
switch (type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
764 |
case VEH_TRAIN: |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
765 |
x++; // train and road vehicles use the same offset, except trains are one more pixel to the right |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
766 |
/* Fallthough */ |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
767 |
case VEH_ROAD: |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
768 |
x += 26; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
769 |
x_offset = 30; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
770 |
y += 2; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
771 |
y_offset = 4; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
772 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
773 |
case VEH_SHIP: |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
774 |
x += 35; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
775 |
x_offset = 40; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
776 |
y += 7; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
777 |
y_offset = 3; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
778 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
779 |
case VEH_AIRCRAFT: |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
780 |
x += 27; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
781 |
x_offset = 33; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
782 |
y += 7; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
783 |
y_offset = 3; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
784 |
break; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
785 |
default: NOT_REACHED(); |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
786 |
} |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
787 |
|
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
788 |
for (; min < max; min++, y += step_size) { |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
789 |
const EngineID engine = eng_list[min]; |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
790 |
|
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
791 |
DrawString(x + x_offset, y, GetCustomEngineName(engine), engine == selected_id ? 0xC : 0x10); |
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
792 |
DrawVehicleEngine(type, x, y + y_offset, engine, (show_count && p->num_engines[engine] == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_player)); |
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
793 |
if (show_count) { |
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
794 |
SetDParam(0, p->num_engines[engine]); |
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
795 |
DrawStringRightAligned(213, y + (GetVehicleListHeight(type) == 14 ? 3 : 8), STR_TINY_BLACK, 0); |
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
796 |
} |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
797 |
} |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
798 |
} |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
799 |
|
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
800 |
static void ExpandPurchaseInfoWidget(Window *w, int expand_by) |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
801 |
{ |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
802 |
Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL]; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
803 |
|
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
804 |
SetWindowDirty(w); |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
805 |
wi->bottom += expand_by; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
806 |
|
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
807 |
for (uint i = BUILD_VEHICLE_WIDGET_BUILD; i < BUILD_VEHICLE_WIDGET_END; i++) { |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
808 |
wi = &w->widget[i]; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
809 |
wi->top += expand_by; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
810 |
wi->bottom += expand_by; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
811 |
} |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
812 |
|
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
813 |
w->height += expand_by; |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
814 |
SetWindowDirty(w); |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
815 |
} |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
816 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
817 |
static void DrawBuildVehicleWindow(Window *w) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
818 |
{ |
5200
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
819 |
const buildvehicle_d *bv = &WP(w, buildvehicle_d); |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
820 |
uint max = min(w->vscroll.pos + w->vscroll.cap, EngList_Count(&bv->eng_list)); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
821 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
822 |
SetWindowWidgetDisabledState(w, BUILD_VEHICLE_WIDGET_BUILD, w->window_number == 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
823 |
|
5201
a4279a8884ea
(svn r7316) -Codechange: Make train-build-gui and aircraft-build-gui (unified) look more alike.
Darkvater
parents:
5200
diff
changeset
|
824 |
SetVScrollCount(w, EngList_Count(&bv->eng_list)); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
825 |
SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
826 |
DrawWindowWidgets(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
827 |
|
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5893
diff
changeset
|
828 |
DrawEngineList(bv->vehicle_type, 2, 27, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false); |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
829 |
|
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
830 |
if (bv->sel_engine != INVALID_ENGINE) { |
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
831 |
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL]; |
6385
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
832 |
int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine); |
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
833 |
|
78f5307ce501
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
maedhros
parents:
6384
diff
changeset
|
834 |
if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom); |
5800
672266389034
(svn r8362) -Codechange: [vehicle build window] moved the engine drawing loop to a function of it's own
bjarni
parents:
5790
diff
changeset
|
835 |
} |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
836 |
|
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
837 |
DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], 0x10); |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
838 |
DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, 0x10); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
839 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
840 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
841 |
static void BuildVehicleClickEvent(Window *w, WindowEvent *e) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
842 |
{ |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
843 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
844 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
845 |
switch (e->we.click.widget) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
846 |
case BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING: |
5199
9a75b853ad22
(svn r7314) -Cleanup: const, whitespace, coding style and variable usage.
Darkvater
parents:
5198
diff
changeset
|
847 |
bv->descending_sort_order ^= true; |
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
848 |
_last_sort_order[bv->vehicle_type] = bv->descending_sort_order; |
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
849 |
bv->regenerate_list = true; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
850 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
851 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
852 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
853 |
case BUILD_VEHICLE_WIDGET_LIST: { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
854 |
uint i = (e->we.click.pt.y - 26) / GetVehicleListHeight(bv->vehicle_type) + w->vscroll.pos; |
5201
a4279a8884ea
(svn r7316) -Codechange: Make train-build-gui and aircraft-build-gui (unified) look more alike.
Darkvater
parents:
5200
diff
changeset
|
855 |
uint num_items = EngList_Count(&bv->eng_list); |
a4279a8884ea
(svn r7316) -Codechange: Make train-build-gui and aircraft-build-gui (unified) look more alike.
Darkvater
parents:
5200
diff
changeset
|
856 |
bv->sel_engine = (i < num_items) ? bv->eng_list[i] : INVALID_ENGINE; |
a4279a8884ea
(svn r7316) -Codechange: Make train-build-gui and aircraft-build-gui (unified) look more alike.
Darkvater
parents:
5200
diff
changeset
|
857 |
SetWindowDirty(w); |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
858 |
break; |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
859 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
860 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
861 |
case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu |
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
862 |
ShowDropDownMenu(w, _sort_listing[bv->vehicle_type], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0); |
5785
5205f8b7fef5
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
bjarni
parents:
5784
diff
changeset
|
863 |
break; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
864 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
865 |
case BUILD_VEHICLE_WIDGET_BUILD: { |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
866 |
EngineID sel_eng = bv->sel_engine; |
5192 | 867 |
if (sel_eng != INVALID_ENGINE) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
868 |
switch (bv->vehicle_type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
869 |
case VEH_TRAIN: |
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
870 |
DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco, |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
871 |
CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE)); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
872 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
873 |
case VEH_ROAD: |
5786
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
874 |
DoCommandP(w->window_number, sel_eng, 0, CcBuildRoadVeh, CMD_BUILD_ROAD_VEH | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE)); |
9bbd2d7f2a30
(svn r8338) -Codechange: merged road vehicle build window into the other ones
bjarni
parents:
5785
diff
changeset
|
875 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
876 |
case VEH_SHIP: |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
877 |
DoCommandP(w->window_number, sel_eng, 0, CcBuildShip, CMD_BUILD_SHIP | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP)); |
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
878 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
879 |
case VEH_AIRCRAFT: |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
880 |
DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT)); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
881 |
break; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
882 |
} |
5192 | 883 |
} |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
884 |
break; |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
885 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
886 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
887 |
case BUILD_VEHICLE_WIDGET_RENAME: { |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
888 |
EngineID sel_eng = bv->sel_engine; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
889 |
if (sel_eng != INVALID_ENGINE) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
890 |
StringID str = STR_NULL; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
891 |
|
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
892 |
bv->rename_engine = sel_eng; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
893 |
switch (bv->vehicle_type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
894 |
case VEH_TRAIN: str = STR_886A_RENAME_TRAIN_VEHICLE_TYPE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
895 |
case VEH_ROAD: str = STR_9036_RENAME_ROAD_VEHICLE_TYPE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
896 |
case VEH_SHIP: str = STR_9838_RENAME_SHIP_TYPE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
897 |
case VEH_AIRCRAFT: str = STR_A039_RENAME_AIRCRAFT_TYPE; break; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
898 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
899 |
ShowQueryString(GetCustomEngineName(sel_eng), str, 31, 160, w, CS_ALPHANUMERAL); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
900 |
} |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
901 |
break; |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
902 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
903 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
904 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
905 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
906 |
static void NewVehicleWndProc(Window *w, WindowEvent *e) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
907 |
{ |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
908 |
buildvehicle_d *bv = &WP(w, buildvehicle_d); |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
909 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
910 |
switch (e->event) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
911 |
case WE_INVALIDATE_DATA: |
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
912 |
bv->regenerate_list = true; |
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
913 |
SetWindowDirty(w); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
914 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
915 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
916 |
case WE_DESTROY: |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
917 |
EngList_Destroy(&bv->eng_list); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
918 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
919 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
920 |
case WE_PAINT: |
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
921 |
if (bv->regenerate_list) { |
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
922 |
bv->regenerate_list = false; |
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
923 |
GenerateBuildList(w); |
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
924 |
} |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
925 |
DrawBuildVehicleWindow(w); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
926 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
927 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
928 |
case WE_CLICK: |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
929 |
BuildVehicleClickEvent(w, e); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
930 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
931 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
932 |
case WE_ON_EDIT_TEXT: { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
933 |
if (e->we.edittext.str[0] != '\0') { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
934 |
StringID str = STR_NULL; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
935 |
_cmd_text = e->we.edittext.str; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
936 |
switch (bv->vehicle_type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
937 |
case VEH_TRAIN: str = STR_886B_CAN_T_RENAME_TRAIN_VEHICLE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
938 |
case VEH_ROAD: str = STR_9037_CAN_T_RENAME_ROAD_VEHICLE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
939 |
case VEH_SHIP: str = STR_9839_CAN_T_RENAME_SHIP_TYPE; break; |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
940 |
case VEH_AIRCRAFT: str = STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE; break; |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
941 |
} |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
942 |
DoCommandP(0, bv->rename_engine, 0, NULL, CMD_RENAME_ENGINE | CMD_MSG(str)); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
943 |
} |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
944 |
break; |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
945 |
} |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
946 |
|
6123
04eb770ec17e
(svn r8859) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6091
diff
changeset
|
947 |
case WE_DROPDOWN_SELECT: // we have selected a dropdown item in the list |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
948 |
if (bv->sort_criteria != e->we.dropdown.index) { |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
949 |
bv->sort_criteria = e->we.dropdown.index; |
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
950 |
_last_sort_criteria[bv->vehicle_type] = bv->sort_criteria; |
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
951 |
bv->regenerate_list = true; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
952 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
953 |
SetWindowDirty(w); |
5192 | 954 |
break; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
955 |
|
5192 | 956 |
case WE_RESIZE: |
5824
8398b44ad3bc
(svn r8390) -Codechange (r8384): Rewrote ResizeButtons()
bjarni
parents:
5823
diff
changeset
|
957 |
if (e->we.sizing.diff.x != 0) ResizeButtons(w, BUILD_VEHICLE_WIDGET_BUILD, BUILD_VEHICLE_WIDGET_RENAME); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
958 |
if (e->we.sizing.diff.y == 0) break; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
959 |
|
6026
775982557e0e
(svn r8749) -Regression r8331: fixed signed/unsigned issue that could create too many lines in build vehicle windows and crash the game
bjarni
parents:
6024
diff
changeset
|
960 |
w->vscroll.cap += e->we.sizing.diff.y / (int)GetVehicleListHeight(bv->vehicle_type); |
5192 | 961 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1; |
962 |
break; |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
963 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
964 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
965 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
966 |
static const WindowDesc _build_vehicle_desc = { |
6386
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
967 |
WDP_AUTO, WDP_AUTO, 240, 256, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5874
diff
changeset
|
968 |
WC_BUILD_VEHICLE, WC_NONE, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
969 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
970 |
_build_vehicle_widgets, |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
971 |
NewVehicleWndProc |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
972 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
973 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
974 |
void ShowBuildVehicleWindow(TileIndex tile, byte type) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
975 |
{ |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
976 |
buildvehicle_d *bv; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
977 |
Window *w; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
978 |
|
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
979 |
assert(IsPlayerBuildableVehicleType(type)); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
980 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
981 |
DeleteWindowById(WC_BUILD_VEHICLE, tile); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
982 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
983 |
w = AllocateWindowDescFront(&_build_vehicle_desc, tile); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
984 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
985 |
if (w == NULL) return; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
986 |
|
5199
9a75b853ad22
(svn r7314) -Cleanup: const, whitespace, coding style and variable usage.
Darkvater
parents:
5198
diff
changeset
|
987 |
w->caption_color = (tile != 0) ? GetTileOwner(tile) : _local_player; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
988 |
w->resize.step_height = GetVehicleListHeight(type); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
989 |
w->vscroll.cap = w->resize.step_height == 24 ? 4 : 8; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
990 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
991 |
|
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
992 |
bv = &WP(w, buildvehicle_d); |
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
993 |
EngList_Create(&bv->eng_list); |
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
994 |
bv->sel_engine = INVALID_ENGINE; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
995 |
|
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
996 |
bv->vehicle_type = type; |
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
997 |
bv->regenerate_list = false; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
998 |
|
5955
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
999 |
bv->sort_criteria = _last_sort_criteria[type]; |
fe61588d5188
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
5944
diff
changeset
|
1000 |
bv->descending_sort_order = _last_sort_order[type]; |
5784
a3b23f0fc794
(svn r8336) -Codechange: added function to translate vehicle types to 0,1,2... for use for index to arrays
bjarni
parents:
5783
diff
changeset
|
1001 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1002 |
switch (type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
1003 |
case VEH_TRAIN: |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6386
diff
changeset
|
1004 |
WP(w, buildvehicle_d).filter.railtype = (tile == 0) ? RAILTYPE_END : GetRailType(tile); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1005 |
ResizeWindow(w, 0, 16); |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1006 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
1007 |
case VEH_ROAD: |
6386
bc26d1d67aa2
(svn r9476) -Codechange: Make build windows for all vehicle types the same width.
maedhros
parents:
6385
diff
changeset
|
1008 |
ResizeWindow(w, 0, 16); |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
1009 |
case VEH_SHIP: |
5783
e207986ffe71
(svn r8335) -Feature: the build ship window is now also resizable horizontally and contains sorting options
bjarni
parents:
5782
diff
changeset
|
1010 |
break; |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6237
diff
changeset
|
1011 |
case VEH_AIRCRAFT: |
6024 | 1012 |
bv->filter.flags = |
6032 | 1013 |
tile == 0 ? AirportFTAClass::ALL : GetStationByTile(tile)->Airport()->flags; |
5187
12dc9dfa6af6
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5070
diff
changeset
|
1014 |
break; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1015 |
} |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1016 |
SetupWindowStrings(w, type); |
5824
8398b44ad3bc
(svn r8390) -Codechange (r8384): Rewrote ResizeButtons()
bjarni
parents:
5823
diff
changeset
|
1017 |
ResizeButtons(w, BUILD_VEHICLE_WIDGET_BUILD, BUILD_VEHICLE_WIDGET_RENAME); |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1018 |
|
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1019 |
w->resize.width = w->width; |
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1020 |
w->resize.height = w->height; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1021 |
|
5781
404262bfa03d
(svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents:
5780
diff
changeset
|
1022 |
GenerateBuildList(w); // generate the list, since we need it in the next line |
5779
a694ce1457bb
(svn r8331) -Feature: the train and aircraft build windows are now resizable in horizontal direction as well
bjarni
parents:
5668
diff
changeset
|
1023 |
/* Select the first engine in the list as default when opening the window */ |
5200
dfd31d4f2410
(svn r7315) -Fix: Have the first engine in the list be selected once again when the window is opened
Darkvater
parents:
5199
diff
changeset
|
1024 |
if (EngList_Count(&bv->eng_list) > 0) bv->sel_engine = bv->eng_list[0]; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1025 |
} |