annotate src/vehicle_gui.cpp @ 11436:caf4456fbbf3 draft

(svn r15794) -Codechange: remove the DoDrawString part of the old text drawing API
author rubidium <rubidium@openttd.org>
date Sat, 21 Mar 2009 22:46:17 +0000
parents 38844e2f76fd
children f16bff952e5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1 /* $Id$ */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2
9111
d48433370037 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents: 9060
diff changeset
3 /** @file vehicle_gui.cpp The base GUI for all vehicles. */
6423
72ac8bfaa32f (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas <belugas@openttd.org>
parents: 6350
diff changeset
4
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
5 #include "stdafx.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
6 #include "openttd.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
7 #include "debug.h"
10208
39cf8eebfda5 (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium <rubidium@openttd.org>
parents: 10207
diff changeset
8 #include "company_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
9 #include "gui.h"
8107
f65cf2bc3255 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium <rubidium@openttd.org>
parents: 8106
diff changeset
10 #include "window_gui.h"
f65cf2bc3255 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium <rubidium@openttd.org>
parents: 8106
diff changeset
11 #include "textbuf_gui.h"
8116
9cc845deddfe (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium <rubidium@openttd.org>
parents: 8114
diff changeset
12 #include "command_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "vehicle_gui.h"
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
14 #include "vehicle_gui_base.h"
8224
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
15 #include "viewport_func.h"
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
16 #include "gfx_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
17 #include "newgrf_engine.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
18 #include "newgrf_text.h"
10960
a4e5b5d2837c (svn r15299) -Cleanup: remove many redundant includes
smatz <smatz@openttd.org>
parents: 10901
diff changeset
19 #include "station_map.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
20 #include "roadveh.h"
8962
322e2779f67a (svn r12754) -Codechange: split depot.h into depot_map.h, depot_func.h and depot_base.h and remove quite a lot of unneeded (before this) includes of depot.h.
rubidium <rubidium@openttd.org>
parents: 8917
diff changeset
21 #include "depot_base.h"
8111
5475263e4cab (svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
22 #include "group_gui.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8111
diff changeset
23 #include "strings_func.h"
8131
e300ac8001ae (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium <rubidium@openttd.org>
parents: 8130
diff changeset
24 #include "window_func.h"
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
25 #include "vehicle_func.h"
8212
11263ebe590a (svn r11775) -Codechange: move all autoreplace/autorenew functions to a single location.
rubidium <rubidium@openttd.org>
parents: 8179
diff changeset
26 #include "autoreplace_gui.h"
8214
6385dffc0b37 (svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium <rubidium@openttd.org>
parents: 8213
diff changeset
27 #include "string_func.h"
8284
dbb7bfe0e95c (svn r11848) -Codechange: New class-based drop down list functionality. Lists are now dynamically generated, and can include parameters, or be extended however needed.
peter1138 <peter1138@openttd.org>
parents: 8270
diff changeset
28 #include "widgets/dropdown_func.h"
9117
453c3d26f4bc (svn r12977) -Codechange: remove quite some redundant (duplicate) function declarations.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
29 #include "timetable.h"
9396
bbf7586724f4 (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138 <peter1138@openttd.org>
parents: 9381
diff changeset
30 #include "vehiclelist.h"
10960
a4e5b5d2837c (svn r15299) -Cleanup: remove many redundant includes
smatz <smatz@openttd.org>
parents: 10901
diff changeset
31 #include "settings_type.h"
11238
06dac7488367 (svn r15592) -Fix: Refit-info in purchase list did only check the first articulated part.
frosch <frosch@openttd.org>
parents: 11133
diff changeset
32 #include "articulated_vehicles.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
33
8264
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8258
diff changeset
34 #include "table/sprites.h"
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8258
diff changeset
35 #include "table/strings.h"
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8258
diff changeset
36
9182
d3a153aa328d (svn r13045) -Codechange: make list_d (now GUIList) more generic and uniform.
rubidium <rubidium@openttd.org>
parents: 9161
diff changeset
37 Sorting _sorting;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
38
9563
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
39 static GUIVehicleList::SortFunction VehicleNumberSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
40 static GUIVehicleList::SortFunction VehicleNameSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
41 static GUIVehicleList::SortFunction VehicleAgeSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
42 static GUIVehicleList::SortFunction VehicleProfitThisYearSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
43 static GUIVehicleList::SortFunction VehicleProfitLastYearSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
44 static GUIVehicleList::SortFunction VehicleCargoSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
45 static GUIVehicleList::SortFunction VehicleReliabilitySorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
46 static GUIVehicleList::SortFunction VehicleMaxSpeedSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
47 static GUIVehicleList::SortFunction VehicleModelSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
48 static GUIVehicleList::SortFunction VehicleValueSorter;
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
49 static GUIVehicleList::SortFunction VehicleLengthSorter;
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
50 static GUIVehicleList::SortFunction VehicleTimeToLiveSorter;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
51
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
52 GUIVehicleList::SortFunction * const BaseVehicleListWindow::vehicle_sorter_funcs[] = {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
53 &VehicleNumberSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
54 &VehicleNameSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
55 &VehicleAgeSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
56 &VehicleProfitThisYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
57 &VehicleProfitLastYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
58 &VehicleCargoSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
59 &VehicleReliabilitySorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
60 &VehicleMaxSpeedSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
61 &VehicleModelSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
62 &VehicleValueSorter,
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
63 &VehicleLengthSorter,
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
64 &VehicleTimeToLiveSorter,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
65 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
66
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
67 const StringID BaseVehicleListWindow::vehicle_sorter_names[] = {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
68 STR_SORT_BY_NUMBER,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
69 STR_SORT_BY_DROPDOWN_NAME,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
70 STR_SORT_BY_AGE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
71 STR_SORT_BY_PROFIT_THIS_YEAR,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
72 STR_SORT_BY_PROFIT_LAST_YEAR,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
73 STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
74 STR_SORT_BY_RELIABILITY,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
75 STR_SORT_BY_MAX_SPEED,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
76 STR_SORT_BY_MODEL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
77 STR_SORT_BY_VALUE,
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
78 STR_SORT_BY_LENGTH,
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
79 STR_SORT_BY_LIFE_TIME,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
80 INVALID_STRING_ID
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
81 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
82
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
83 void BaseVehicleListWindow::BuildVehicleList(Owner owner, uint16 index, uint16 window_type)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
84 {
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
85 if (!this->vehicles.NeedRebuild()) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
86
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
87 DEBUG(misc, 3, "Building vehicle list for company %d at station %d", owner, index);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
88
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
89 GenerateVehicleSortList(&this->vehicles, this->vehicle_type, owner, index, window_type);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
90
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
91 this->vehicles.RebuildDone();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
92 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
93
8662
c0b1a8566280 (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated
smatz <smatz@openttd.org>
parents: 8661
diff changeset
94 /* cached values for VehicleNameSorter to spare many GetString() calls */
c0b1a8566280 (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated
smatz <smatz@openttd.org>
parents: 8661
diff changeset
95 static const Vehicle *_last_vehicle[2] = { NULL, NULL };
c0b1a8566280 (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated
smatz <smatz@openttd.org>
parents: 8661
diff changeset
96
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
97 void BaseVehicleListWindow::SortVehicleList()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
98 {
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
99 if (this->vehicles.Sort()) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
100
8662
c0b1a8566280 (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated
smatz <smatz@openttd.org>
parents: 8661
diff changeset
101 /* invalidate cached values for name sorter - vehicle names could change */
c0b1a8566280 (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated
smatz <smatz@openttd.org>
parents: 8661
diff changeset
102 _last_vehicle[0] = _last_vehicle[1] = NULL;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
103 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
104
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
105 void DepotSortList(VehicleList *list)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
106 {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
107 if (list->Length() < 2) return;
9563
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
108 QSortT(list->Begin(), list->Length(), &VehicleNumberSorter);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
109 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
110
6423
72ac8bfaa32f (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas <belugas@openttd.org>
parents: 6350
diff changeset
111 /** draw the vehicle profit button in the vehicle list window. */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
112 void DrawVehicleProfitButton(const Vehicle *v, int x, int y)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
113 {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
114 SpriteID pal;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
115
11085
8da1855e9f14 (svn r15428) -Codechange: consistently use colour instead of having both color and colour.
rubidium <rubidium@openttd.org>
parents: 11084
diff changeset
116 /* draw profit-based coloured icons */
10744
0118ca646690 (svn r15077) -Codechange: enumify DAYS_IN_YEAR and DAYS_IN_LEAP_YEAR
smatz <smatz@openttd.org>
parents: 10647
diff changeset
117 if (v->age <= DAYS_IN_YEAR * 2) {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
118 pal = PALETTE_TO_GREY;
8614
36bb76188638 (svn r12197) -Fix [FS#1788](r12134): show correct last year profit when the train had negative income
smatz <smatz@openttd.org>
parents: 8556
diff changeset
119 } else if (v->GetDisplayProfitLastYear() < 0) {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
120 pal = PALETTE_TO_RED;
8614
36bb76188638 (svn r12197) -Fix [FS#1788](r12134): show correct last year profit when the train had negative income
smatz <smatz@openttd.org>
parents: 8556
diff changeset
121 } else if (v->GetDisplayProfitLastYear() < 10000) {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
122 pal = PALETTE_TO_YELLOW;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
123 } else {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
124 pal = PALETTE_TO_GREEN;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
125 }
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
126 DrawSprite(SPR_BLOT, pal, x, y);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
127 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
128
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
129 struct RefitOption {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
130 CargoID cargo;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
131 byte subtype;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
132 uint16 value;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
133 EngineID engine;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
134 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
135
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
136 struct RefitList {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
137 uint num_lines;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
138 RefitOption *items;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
139 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
140
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
141 static RefitList *BuildRefitList(const Vehicle *v)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
142 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
143 uint max_lines = 256;
5609
358c07fb3212 (svn r8066) - Codechange: MallocT(), CallocT(), ReallocT() now return the pointer to allocated memory instead of modifying the pointer given as parameter
KUDr <KUDr@openttd.org>
parents: 5587
diff changeset
144 RefitOption *refit = CallocT<RefitOption>(max_lines);
358c07fb3212 (svn r8066) - Codechange: MallocT(), CallocT(), ReallocT() now return the pointer to allocated memory instead of modifying the pointer given as parameter
KUDr <KUDr@openttd.org>
parents: 5587
diff changeset
145 RefitList *list = CallocT<RefitList>(1);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
146 Vehicle *u = (Vehicle*)v;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
147 uint num_lines = 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
148 uint i;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
149
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
150 do {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
151 uint32 cmask = EngInfo(u->engine_type)->refit_mask;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
152 byte callbackmask = EngInfo(u->engine_type)->callbackmask;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
153
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
154 /* Skip this engine if it has no capacity */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
155 if (u->cargo_cap == 0) continue;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
156
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
157 /* Loop through all cargos in the refit mask */
6350
8132258640be (svn r9388) -Codechange: variable scope and type, and standardify all CargoID loops.
peter1138 <peter1138@openttd.org>
parents: 6259
diff changeset
158 for (CargoID cid = 0; cid < NUM_CARGO && num_lines < max_lines; cid++) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
159 /* Skip cargo type if it's not listed */
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7846
diff changeset
160 if (!HasBit(cmask, cid)) continue;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
161
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
162 /* Check the vehicle's callback mask for cargo suffixes */
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7846
diff changeset
163 if (HasBit(callbackmask, CBM_VEHICLE_CARGO_SUFFIX)) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
164 /* Make a note of the original cargo type. It has to be
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
165 * changed to test the cargo & subtype... */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
166 CargoID temp_cargo = u->cargo_type;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
167 byte temp_subtype = u->cargo_subtype;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
168 byte refit_cyc;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
169
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
170 u->cargo_type = cid;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
171
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
172 for (refit_cyc = 0; refit_cyc < 16 && num_lines < max_lines; refit_cyc++) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
173 bool duplicate = false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
174 uint16 callback;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
175
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
176 u->cargo_subtype = refit_cyc;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
177 callback = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, u->engine_type, u);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
178
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
179 if (callback == 0xFF) callback = CALLBACK_FAILED;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
180 if (refit_cyc != 0 && callback == CALLBACK_FAILED) break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
181
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
182 /* Check if this cargo and subtype combination are listed */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
183 for (i = 0; i < num_lines && !duplicate; i++) {
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
184 if (refit[i].cargo == cid && refit[i].value == callback) duplicate = true;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
185 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
186
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
187 if (duplicate) continue;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
188
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
189 refit[num_lines].cargo = cid;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
190 refit[num_lines].subtype = refit_cyc;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
191 refit[num_lines].value = callback;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
192 refit[num_lines].engine = u->engine_type;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
193 num_lines++;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
194 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
195
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
196 /* Reset the vehicle's cargo type */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
197 u->cargo_type = temp_cargo;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
198 u->cargo_subtype = temp_subtype;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
199 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
200 /* No cargo suffix callback -- use no subtype */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
201 bool duplicate = false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
202
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
203 for (i = 0; i < num_lines && !duplicate; i++) {
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
204 if (refit[i].cargo == cid && refit[i].value == CALLBACK_FAILED) duplicate = true;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
205 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
206
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
207 if (!duplicate) {
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
208 refit[num_lines].cargo = cid;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
209 refit[num_lines].subtype = 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
210 refit[num_lines].value = CALLBACK_FAILED;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
211 refit[num_lines].engine = INVALID_ENGINE;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
212 num_lines++;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
213 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
214 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
215 }
9584
43d2a71dbcd9 (svn r13622) -Fix [FS#2109]: only the front of a RV would be considered when determining to what cargos a vehicle can be refitted instead of all cargos.
rubidium <rubidium@openttd.org>
parents: 9569
diff changeset
216 } while ((v->type == VEH_TRAIN || v->type == VEH_ROAD) && (u = u->Next()) != NULL && num_lines < max_lines);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
217
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
218 list->num_lines = num_lines;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
219 list->items = refit;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
220
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
221 return list;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
222 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
223
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
224 /** Draw the list of available refit options for a consist.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
225 * Draw the list and highlight the selected refit option (if any)
6484
17fdaec13730 (svn r9665) -Documentation: Doxygen corrections,errors, corrections of corrections...
belugas <belugas@openttd.org>
parents: 6423
diff changeset
226 * @param *list first vehicle in consist to get the refit-options of
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
227 * @param sel selected refit cargo-type in the window
6484
17fdaec13730 (svn r9665) -Documentation: Doxygen corrections,errors, corrections of corrections...
belugas <belugas@openttd.org>
parents: 6423
diff changeset
228 * @param pos position of the selected item in caller widow
17fdaec13730 (svn r9665) -Documentation: Doxygen corrections,errors, corrections of corrections...
belugas <belugas@openttd.org>
parents: 6423
diff changeset
229 * @param rows number of rows(capacity) in caller window
17fdaec13730 (svn r9665) -Documentation: Doxygen corrections,errors, corrections of corrections...
belugas <belugas@openttd.org>
parents: 6423
diff changeset
230 * @param delta step height in caller window
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
231 * @return the refit option that is hightlighted, NULL if none
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
232 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
233 static RefitOption *DrawVehicleRefitWindow(const RefitList *list, int sel, uint pos, uint rows, uint delta)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
234 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
235 RefitOption *refit = list->items;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
236 RefitOption *selected = NULL;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
237 uint num_lines = list->num_lines;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
238 uint y = 31;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
239 uint i;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
240
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
241 /* Draw the list, and find the selected cargo (by its position in list) */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
242 for (i = 0; i < num_lines; i++) {
7824
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7798
diff changeset
243 TextColour colour = TC_BLACK;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
244 if (sel == 0) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
245 selected = &refit[i];
7824
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7798
diff changeset
246 colour = TC_WHITE;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
247 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
248
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
249 if (i >= pos && i < pos + rows) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
250 /* Draw the cargo name */
6091
17ebeb5a2c37 (svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents: 6056
diff changeset
251 int last_x = DrawString(2, y, GetCargo(refit[i].cargo)->name, colour);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
252
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
253 /* If the callback succeeded, draw the cargo suffix */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
254 if (refit[i].value != CALLBACK_FAILED) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
255 DrawString(last_x + 1, y, GetGRFStringID(GetEngineGRFID(refit[i].engine), 0xD000 + refit[i].value), colour);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
256 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
257 y += delta;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
258 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
259
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
260 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
261 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
262
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
263 return selected;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
264 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
265
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
266 struct RefitWindow : public Window {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
267 int sel;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
268 RefitOption *cargo;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
269 RefitList *list;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
270 uint length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
271 VehicleOrderID order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
272
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
273 RefitWindow(const WindowDesc *desc, const Vehicle *v, VehicleOrderID order) : Window(desc, v->index)
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
274 {
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
275 this->owner = v->owner;
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
276 this->vscroll.cap = 8;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
277 this->resize.step_height = 14;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
278
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
279 this->order = order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
280 this->sel = -1;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
281 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
282 if (v->type == VEH_TRAIN) this->length = CountVehiclesInChain(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
283 SetVScrollCount(this, this->list->num_lines);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
284
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
285 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
286 case VEH_TRAIN:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
287 this->widget[3].tooltips = STR_RAIL_SELECT_TYPE_OF_CARGO_FOR;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
288 this->widget[6].data = STR_RAIL_REFIT_VEHICLE;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
289 this->widget[6].tooltips = STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
290 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
291
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
292 case VEH_ROAD:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
293 this->widget[3].tooltips = STR_ROAD_SELECT_TYPE_OF_CARGO_FOR;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
294 this->widget[6].data = STR_REFIT_ROAD_VEHICLE;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
295 this->widget[6].tooltips = STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
296 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
297
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
298 case VEH_SHIP:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
299 this->widget[3].tooltips = STR_983D_SELECT_TYPE_OF_CARGO_FOR;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
300 this->widget[6].data = STR_983C_REFIT_SHIP;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
301 this->widget[6].tooltips = STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
302 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
303
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
304 case VEH_AIRCRAFT:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
305 this->widget[3].tooltips = STR_A03E_SELECT_TYPE_OF_CARGO_FOR;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
306 this->widget[6].data = STR_A03D_REFIT_AIRCRAFT;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
307 this->widget[6].tooltips = STR_A03F_REFIT_AIRCRAFT_TO_CARRY;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
308 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
309
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
310 default: NOT_REACHED();
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
311 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
312
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
313 this->FindWindowPlacementAndResize(desc);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
314 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
315
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
316 ~RefitWindow()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
317 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
318 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
319 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
320 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
321
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
322 virtual void OnPaint()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
323 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
324 Vehicle *v = GetVehicle(this->window_number);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
325
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
326 if (v->type == VEH_TRAIN) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
327 uint length = CountVehiclesInChain(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
328
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
329 if (length != this->length) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
330 /* Consist length has changed, so rebuild the refit list */
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
331 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
332 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
333 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
334 this->length = length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
335 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
336 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
337
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
338 SetVScrollCount(this, this->list->num_lines);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
339
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
340 SetDParam(0, v->index);
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9262
diff changeset
341 this->DrawWidgets();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
342
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
343 this->cargo = DrawVehicleRefitWindow(this->list, this->sel, this->vscroll.pos, this->vscroll.cap, this->resize.step_height);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
344
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
345 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
346 CommandCost cost;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
347
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
348 cost = DoCommand(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8,
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
349 DC_QUERY_COST, GetCmdRefitVeh(v->type));
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
350
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
351 if (CmdSucceeded(cost)) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
352 SetDParam(0, this->cargo->cargo);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
353 SetDParam(1, _returned_refit_capacity);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
354 SetDParam(2, cost.GetCost());
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
355 DrawString(2, this->widget[5].top + 1, STR_9840_NEW_CAPACITY_COST_OF_REFIT, TC_FROMSTRING);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
356 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
357 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
358 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
359
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
360 virtual void OnClick(Point pt, int widget)
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
361 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
362 switch (widget) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
363 case 3: { // listbox
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
364 int y = pt.y - this->widget[3].top;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
365 if (y >= 0) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
366 this->sel = (y / (int)this->resize.step_height) + this->vscroll.pos;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
367 this->SetDirty();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
368 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
369 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
370 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
371
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
372 case 6: // refit button
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
373 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
374 const Vehicle *v = GetVehicle(this->window_number);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
375
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
376 if (this->order == INVALID_VEH_ORDER_ID) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
377 int command = 0;
6056
98baaa8dcbab (svn r8786) -Cleanup: replaced a switch-case to get the right refit command for a certain vehicle type. We have a function to do that
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
378
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
379 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
380 default: NOT_REACHED();
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
381 case VEH_TRAIN: command = CMD_REFIT_RAIL_VEHICLE | CMD_MSG(STR_RAIL_CAN_T_REFIT_VEHICLE); break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
382 case VEH_ROAD: command = CMD_REFIT_ROAD_VEH | CMD_MSG(STR_REFIT_ROAD_VEHICLE_CAN_T); break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
383 case VEH_SHIP: command = CMD_REFIT_SHIP | CMD_MSG(STR_9841_CAN_T_REFIT_SHIP); break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
384 case VEH_AIRCRAFT: command = CMD_REFIT_AIRCRAFT | CMD_MSG(STR_A042_CAN_T_REFIT_AIRCRAFT); break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
385 }
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
386 if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8, command)) delete this;
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
387 } else {
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
388 if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8 | this->order << 16, CMD_ORDER_REFIT)) delete this;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
389 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
390 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
391 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
392 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
393 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
394
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
395 virtual void OnResize(Point new_size, Point delta)
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
396 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
397 this->vscroll.cap += delta.y / (int)this->resize.step_height;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
398 this->widget[3].data = (this->vscroll.cap << 8) + 1;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
399 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
400 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
401
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
402
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
403 static const Widget _vehicle_refit_widgets[] = {
9778
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
404 { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
405 { WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 239, 0, 13, STR_983B_REFIT, STR_018C_WINDOW_TITLE_DRAG_THIS},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
406 { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 239, 14, 27, STR_983F_SELECT_CARGO_TYPE_TO_CARRY, STR_983D_SELECT_TYPE_OF_CARGO_FOR},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
407 { WWT_MATRIX, RESIZE_BOTTOM, COLOUR_GREY, 0, 227, 28, 139, 0x801, STR_EMPTY},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
408 { WWT_SCROLLBAR, RESIZE_BOTTOM, COLOUR_GREY, 228, 239, 28, 139, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
409 { WWT_PANEL, RESIZE_TB, COLOUR_GREY, 0, 239, 140, 161, 0x0, STR_NULL},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
410 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 227, 162, 173, 0x0, STR_NULL},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
411 { WWT_RESIZEBOX, RESIZE_TB, COLOUR_GREY, 228, 239, 162, 173, 0x0, STR_RESIZE_BUTTON},
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
412 { WIDGETS_END},
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
413 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
414
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
415 static const WindowDesc _vehicle_refit_desc(
7341
549c757023fc (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium <rubidium@openttd.org>
parents: 7072
diff changeset
416 WDP_AUTO, WDP_AUTO, 240, 174, 240, 174,
6491
696f0e1b046e (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium <rubidium@openttd.org>
parents: 6484
diff changeset
417 WC_VEHICLE_REFIT, WC_VEHICLE_VIEW,
10998
a1d256bf72e0 (svn r15338) -Fix [FS#2598]: close all construction related windows whenever changing company.
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
418 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_CONSTRUCTION,
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
419 _vehicle_refit_widgets
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
420 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
421
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
422 /** Show the refit window for a vehicle
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
423 * @param *v The vehicle to show the refit window for
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
424 * @param order of the vehicle ( ? )
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
425 */
10184
fbd1b77a2509 (svn r14395) -Fix [FS#2285]: crashes and GUI desyncs when order is deleted/modified while the timetable window is open
smatz <smatz@openttd.org>
parents: 10161
diff changeset
426 void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order, Window *parent)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
427 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
428 DeleteWindowById(WC_VEHICLE_REFIT, v->index);
10184
fbd1b77a2509 (svn r14395) -Fix [FS#2285]: crashes and GUI desyncs when order is deleted/modified while the timetable window is open
smatz <smatz@openttd.org>
parents: 10161
diff changeset
429 RefitWindow *w = new RefitWindow(&_vehicle_refit_desc, v, order);
fbd1b77a2509 (svn r14395) -Fix [FS#2285]: crashes and GUI desyncs when order is deleted/modified while the timetable window is open
smatz <smatz@openttd.org>
parents: 10161
diff changeset
430 w->parent = parent;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
431 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
432
6423
72ac8bfaa32f (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas <belugas@openttd.org>
parents: 6350
diff changeset
433 /** Display additional text from NewGRF in the purchase information window */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
434 uint ShowAdditionalText(int x, int y, uint w, EngineID engine)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
435 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
436 uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
437 if (callback == CALLBACK_FAILED) return 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
438
6423
72ac8bfaa32f (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas <belugas@openttd.org>
parents: 6350
diff changeset
439 /* STR_02BD is used to start the string with {BLACK} */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
440 SetDParam(0, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback));
9908
090efbc71565 (svn r14058) -Fix [FS#2224]: NewGRF callback 23 didn't use the NewGRF compatible text stack (minime)
rubidium <rubidium@openttd.org>
parents: 9862
diff changeset
441 PrepareTextRefStackUsage(0);
090efbc71565 (svn r14058) -Fix [FS#2224]: NewGRF callback 23 didn't use the NewGRF compatible text stack (minime)
rubidium <rubidium@openttd.org>
parents: 9862
diff changeset
442 uint result = DrawStringMultiLine(x, y, STR_02BD, w);
090efbc71565 (svn r14058) -Fix [FS#2224]: NewGRF callback 23 didn't use the NewGRF compatible text stack (minime)
rubidium <rubidium@openttd.org>
parents: 9862
diff changeset
443 StopTextRefStackUsage();
090efbc71565 (svn r14058) -Fix [FS#2224]: NewGRF callback 23 didn't use the NewGRF compatible text stack (minime)
rubidium <rubidium@openttd.org>
parents: 9862
diff changeset
444 return result;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
445 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
446
6423
72ac8bfaa32f (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas <belugas@openttd.org>
parents: 6350
diff changeset
447 /** Display list of cargo types of the engine, for the purchase information window */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
448 uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
449 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
450 /* List of cargo types of this engine */
11238
06dac7488367 (svn r15592) -Fix: Refit-info in purchase list did only check the first articulated part.
frosch <frosch@openttd.org>
parents: 11133
diff changeset
451 uint32 cmask = GetUnionOfArticulatedRefitMasks(engine, GetEngine(engine)->type, false);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
452 /* List of cargo types available in this climate */
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
453 uint32 lmask = _cargo_mask;
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
454 char string[512];
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
455 char *b = string;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
456
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
457 /* Draw nothing if the engine is not refittable */
7832
1f9fb5d427f9 (svn r11382) -Codechange: renamed COUNTBITS to CountBits, as it is no longer a macro (skidd13)
truelight <truelight@openttd.org>
parents: 7824
diff changeset
458 if (CountBits(cmask) <= 1) return 0;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
459
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
460 b = InlineString(b, STR_PURCHASE_INFO_REFITTABLE_TO);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
461
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
462 if (cmask == lmask) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
463 /* Engine can be refitted to all types in this climate */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
464 b = InlineString(b, STR_PURCHASE_INFO_ALL_TYPES);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
465 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
466 /* Check if we are able to refit to more cargo types and unable to. If
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
467 * so, invert the cargo types to list those that we can't refit to. */
7832
1f9fb5d427f9 (svn r11382) -Codechange: renamed COUNTBITS to CountBits, as it is no longer a macro (skidd13)
truelight <truelight@openttd.org>
parents: 7824
diff changeset
468 if (CountBits(cmask ^ lmask) < CountBits(cmask)) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
469 cmask ^= lmask;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
470 b = InlineString(b, STR_PURCHASE_INFO_ALL_BUT);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
471 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
472
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
473 bool first = true;
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
474
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
475 /* Add each cargo type to the list */
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
476 for (CargoID cid = 0; cid < NUM_CARGO; cid++) {
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7846
diff changeset
477 if (!HasBit(cmask, cid)) continue;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
478
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
479 if (b >= lastof(string) - (2 + 2 * 4)) break; // ", " and two calls to Utf8Encode()
8041
085c454f158b (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents: 7997
diff changeset
480
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
481 if (!first) b = strecpy(b, ", ", lastof(string));
6113
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
482 first = false;
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
483
5cf0c6849eee (svn r8849) -Codechange: Replace hardcoded global/climate cargo mapping tables with dynamically generated data. Change associated code to use new functions.
peter1138 <peter1138@openttd.org>
parents: 6091
diff changeset
484 b = InlineString(b, GetCargo(cid)->name);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
485 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
486 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
487
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
488 /* Terminate and display the completed string */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
489 *b = '\0';
8041
085c454f158b (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents: 7997
diff changeset
490
085c454f158b (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents: 7997
diff changeset
491 /* Make sure we detect any buffer overflow */
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
492 assert(b < endof(string));
8041
085c454f158b (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents: 7997
diff changeset
493
9653
dd040a5861eb (svn r13720) -Fix (r13715): string wasn't correctly passed to draw function.
rubidium <rubidium@openttd.org>
parents: 9652
diff changeset
494 SetDParamStr(0, string);
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9585
diff changeset
495 return DrawStringMultiLine(x, y, STR_JUST_RAW_STRING, w);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
496 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
497
11133
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
498 /** Get the cargo subtype text from NewGRF for the vehicle details window. */
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
499 StringID GetCargoSubtypeText(const Vehicle *v)
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
500 {
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
501 if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_CARGO_SUFFIX)) {
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
502 uint16 cb = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v);
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
503 if (cb != CALLBACK_FAILED) {
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
504 return GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + cb);
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
505 }
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
506 }
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
507 return STR_EMPTY;
ec305342a11e (svn r15480) -Feature(tte): Show the cargo subtype in the vehicle details window.
michi_cc <michi_cc@openttd.org>
parents: 11085
diff changeset
508 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
509
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
510 /** Sort vehicles by their number */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
511 static int CDECL VehicleNumberSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
512 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
513 return (*a)->unitnumber - (*b)->unitnumber;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
514 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
515
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
516 /** Sort vehicles by their name */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
517 static int CDECL VehicleNameSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
518 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
519 static char last_name[2][64];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
520
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
521 if (*a != _last_vehicle[0]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
522 _last_vehicle[0] = *a;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
523 SetDParam(0, (*a)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
524 GetString(last_name[0], STR_VEHICLE_NAME, lastof(last_name[0]));
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
525 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
526
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
527 if (*b != _last_vehicle[1]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
528 _last_vehicle[1] = *b;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
529 SetDParam(0, (*b)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
530 GetString(last_name[1], STR_VEHICLE_NAME, lastof(last_name[1]));
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
531 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
532
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
533 int r = strcmp(last_name[0], last_name[1]);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
534 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
535 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
536
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
537 /** Sort vehicles by their age */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
538 static int CDECL VehicleAgeSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
539 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
540 int r = (*a)->age - (*b)->age;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
541 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
542 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
543
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
544 /** Sort vehicles by this year profit */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
545 static int CDECL VehicleProfitThisYearSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
546 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
547 int r = ClampToI32((*a)->GetDisplayProfitThisYear() - (*b)->GetDisplayProfitThisYear());
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
548 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
549 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
550
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
551 /** Sort vehicles by last year profit */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
552 static int CDECL VehicleProfitLastYearSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
553 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
554 int r = ClampToI32((*a)->GetDisplayProfitLastYear() - (*b)->GetDisplayProfitLastYear());
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
555 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
556 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
557
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
558 /** Sort vehicles by their cargo */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
559 static int CDECL VehicleCargoSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
560 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
561 const Vehicle *v;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
562 AcceptedCargo diff;
9569
fcc94596ddfd (svn r13593) -Fix [FS#2095](r13524): sorting by cargo capacity was broken
smatz <smatz@openttd.org>
parents: 9563
diff changeset
563 memset(diff, 0, sizeof(diff));
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
564
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
565 /* Append the cargo of the connected weagons */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
566 for (v = *a; v != NULL; v = v->Next()) diff[v->cargo_type] += v->cargo_cap;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
567 for (v = *b; v != NULL; v = v->Next()) diff[v->cargo_type] -= v->cargo_cap;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
568
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
569 int r = 0;
6350
8132258640be (svn r9388) -Codechange: variable scope and type, and standardify all CargoID loops.
peter1138 <peter1138@openttd.org>
parents: 6259
diff changeset
570 for (CargoID i = 0; i < NUM_CARGO; i++) {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
571 r = diff[i];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
572 if (r != 0) break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
573 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
574
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
575 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
576 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
577
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
578 /** Sort vehicles by their reliability */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
579 static int CDECL VehicleReliabilitySorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
580 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
581 int r = (*a)->reliability - (*b)->reliability;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
582 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
583 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
584
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
585 /** Sort vehicles by their max speed */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
586 static int CDECL VehicleMaxSpeedSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
587 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
588 int r = 0;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
589 if ((*a)->type == VEH_TRAIN && (*b)->type == VEH_TRAIN) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
590 r = (*a)->u.rail.cached_max_speed - (*b)->u.rail.cached_max_speed;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
591 } else {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
592 r = (*a)->max_speed - (*b)->max_speed;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
593 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
594 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
595 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
596
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
597 /** Sort vehicles by model */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
598 static int CDECL VehicleModelSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
599 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
600 int r = (*a)->engine_type - (*b)->engine_type;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
601 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
602 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
603
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
604 /** Sort vehciles by their value */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
605 static int CDECL VehicleValueSorter(const Vehicle * const *a, const Vehicle * const *b)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
606 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
607 const Vehicle *u;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
608 Money diff = 0;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
609
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
610 for (u = *a; u != NULL; u = u->Next()) diff += u->value;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
611 for (u = *b; u != NULL; u = u->Next()) diff -= u->value;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
612
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
613 int r = ClampToI32(diff);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
614 return (r != 0) ? r : VehicleNumberSorter(a, b);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
615 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
616
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
617 /** Sort vehicles by their length */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
618 static int CDECL VehicleLengthSorter(const Vehicle * const *a, const Vehicle * const *b)
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
619 {
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
620 int r = 0;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
621 switch ((*a)->type) {
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
622 case VEH_TRAIN:
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
623 r = (*a)->u.rail.cached_total_length - (*b)->u.rail.cached_total_length;
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
624 break;
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
625
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
626 case VEH_ROAD: {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
627 const Vehicle *u;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
628 for (u = *a; u != NULL; u = u->Next()) r += u->u.road.cached_veh_length;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
629 for (u = *b; u != NULL; u = u->Next()) r -= u->u.road.cached_veh_length;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
630 } break;
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
631
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
632 default: NOT_REACHED();
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
633 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
634 return (r != 0) ? r : VehicleNumberSorter(a, b);
8974
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
635 }
6b1769a870ad (svn r12766) -Add: sorting by road vehicle/train length. Based on a patch by Sir Bob.
rubidium <rubidium@openttd.org>
parents: 8969
diff changeset
636
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
637 /** Sort vehicles by the time they can still live */
10647
592ae9307430 (svn r14949) -Cleanup: pointer coding style
rubidium <rubidium@openttd.org>
parents: 10562
diff changeset
638 static int CDECL VehicleTimeToLiveSorter(const Vehicle * const *a, const Vehicle * const *b)
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
639 {
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
640 int r = ClampToI32(((*a)->max_age - (*a)->age) - ((*b)->max_age - (*b)->age));
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
641 return (r != 0) ? r : VehicleNumberSorter(a, b);
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
642 }
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
643
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6148
diff changeset
644 void InitializeGUI()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
645 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
646 MemSetT(&_sorting, 0);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
647 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
648
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
649 /**
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
650 * Assign a vehicle window a new vehicle
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
651 * @param window_class WindowClass to search for
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
652 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
653 * @param to_index the new vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
654 */
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
655 static inline void ChangeVehicleWindow(WindowClass window_class, VehicleID from_index, VehicleID to_index)
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
656 {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
657 Window *w = FindWindowById(window_class, from_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
658 if (w != NULL) {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
659 w->window_number = to_index;
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
660 if (w->viewport != NULL) w->viewport->follow_vehicle = to_index;
10184
fbd1b77a2509 (svn r14395) -Fix [FS#2285]: crashes and GUI desyncs when order is deleted/modified while the timetable window is open
smatz <smatz@openttd.org>
parents: 10161
diff changeset
661 if (to_index != INVALID_VEHICLE) InvalidateThisWindowData(w, 0);
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
662 }
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
663 }
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
664
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
665 /**
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
666 * Report a change in vehicle IDs (due to autoreplace) to affected vehicle windows.
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
667 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
668 * @param to_index the new vehicle ID
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
669 */
9060
fdf9daf20b67 (svn r12912) -Codechange: overloaded ChangeVehicleViewWindow() so each argument can be either a Vehicle pointer or a VehicleID
bjarni <bjarni@openttd.org>
parents: 8994
diff changeset
670 void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
671 {
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
672 ChangeVehicleWindow(WC_VEHICLE_VIEW, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
673 ChangeVehicleWindow(WC_VEHICLE_ORDERS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
674 ChangeVehicleWindow(WC_VEHICLE_REFIT, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
675 ChangeVehicleWindow(WC_VEHICLE_DETAILS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
676 ChangeVehicleWindow(WC_VEHICLE_TIMETABLE, from_index, to_index);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
677 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
678
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
679 enum VehicleListWindowWidgets {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
680 VLW_WIDGET_CLOSEBOX = 0,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
681 VLW_WIDGET_CAPTION,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
682 VLW_WIDGET_STICKY,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
683 VLW_WIDGET_SORT_ORDER,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
684 VLW_WIDGET_SORT_BY_PULLDOWN,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
685 VLW_WIDGET_EMPTY_TOP_RIGHT,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
686 VLW_WIDGET_LIST,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
687 VLW_WIDGET_SCROLLBAR,
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
688 VLW_WIDGET_OTHER_COMPANY_FILLER,
5846
54159187097e (svn r8420) -Codechange (r7418): Rename the 'New <vehtype>' button of the global vehicle lists to 'Available <vehtype>' as it is a view-only list, not one from which you can purchase (rolling) stock.
Darkvater <Darkvater@openttd.org>
parents: 5809
diff changeset
689 VLW_WIDGET_AVAILABLE_VEHICLES,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
690 VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
691 VLW_WIDGET_STOP_ALL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
692 VLW_WIDGET_START_ALL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
693 VLW_WIDGET_EMPTY_BOTTOM_RIGHT,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
694 VLW_WIDGET_RESIZE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
695 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
696
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
697 static const Widget _vehicle_list_widgets[] = {
9778
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
698 { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
699 { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 247, 0, 13, 0x0, STR_018C_WINDOW_TITLE_DRAG_THIS},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
700 { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
701 { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
702 { WWT_DROPDOWN, RESIZE_NONE, COLOUR_GREY, 81, 247, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
703 { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 248, 259, 14, 25, 0x0, STR_NULL},
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
704 { WWT_MATRIX, RESIZE_RB, COLOUR_GREY, 0, 247, 26, 181, 0x0, STR_NULL},
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
705 { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 248, 259, 26, 181, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
706 /* Widget to be shown for other companies hiding the following 6 widgets */
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
707 { WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 0, 247, 182, 193, 0x0, STR_NULL},
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
708
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
709 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 105, 182, 193, 0x0, STR_AVAILABLE_ENGINES_TIP},
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
710 { WWT_DROPDOWN, RESIZE_TB, COLOUR_GREY, 106, 223, 182, 193, STR_MANAGE_LIST, STR_MANAGE_LIST_TIP},
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
711
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
712 { WWT_PUSHIMGBTN, RESIZE_TB, COLOUR_GREY, 224, 235, 182, 193, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
713 { WWT_PUSHIMGBTN, RESIZE_TB, COLOUR_GREY, 236, 247, 182, 193, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
714 { WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 248, 247, 182, 193, 0x0, STR_NULL},
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
715 { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 248, 259, 182, 193, 0x0, STR_RESIZE_BUTTON},
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
716 { WIDGETS_END},
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
717 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
718
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
719 static void DrawSmallOrderList(const Vehicle *v, int x, int y)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
720 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
721 const Order *order;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
722 int sel, i = 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
723
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
724 sel = v->cur_order_index;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
725
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
726 FOR_VEHICLE_ORDERS(v, order) {
7824
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7798
diff changeset
727 if (sel == 0) DrawString(x - 6, y, STR_SMALL_RIGHT_ARROW, TC_BLACK);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
728 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
729
8836
890a77315801 (svn r12584) -Codechange: do not access the order type directly.
rubidium <rubidium@openttd.org>
parents: 8786
diff changeset
730 if (order->IsType(OT_GOTO_STATION)) {
8840
c3d2f0eb69a1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium <rubidium@openttd.org>
parents: 8836
diff changeset
731 if (v->type == VEH_SHIP && GetStation(order->GetDestination())->IsBuoy()) continue;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
732
8840
c3d2f0eb69a1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium <rubidium@openttd.org>
parents: 8836
diff changeset
733 SetDParam(0, order->GetDestination());
7824
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7798
diff changeset
734 DrawString(x, y, STR_A036, TC_FROMSTRING);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
735
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
736 y += 6;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
737 if (++i == 4) break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
738 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
739 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
740 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
741
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
742 static void DrawVehicleImage(const Vehicle *v, int x, int y, VehicleID selection, int count, int skip)
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
743 {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
744 switch (v->type) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
745 case VEH_TRAIN: DrawTrainImage(v, x, y, selection, count, skip); break;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
746 case VEH_ROAD: DrawRoadVehImage(v, x, y, selection, count); break;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
747 case VEH_SHIP: DrawShipImage(v, x, y, selection); break;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
748 case VEH_AIRCRAFT: DrawAircraftImage(v, x, y, selection); break;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
749 default: NOT_REACHED();
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
750 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
751 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
752
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
753 /**
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
754 * Draw all the vehicle list items.
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
755 * @param x the position from where to draw the items.
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
756 * @param selected_vehicle the vehicle that is to be selected
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
757 */
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
758 void BaseVehicleListWindow::DrawVehicleListItems(int x, VehicleID selected_vehicle)
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
759 {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
760 int y = PLY_WND_PRC__OFFSET_TOP_WIDGET;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
761 uint max = min(this->vscroll.pos + this->vscroll.cap, this->vehicles.Length());
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
762 for (uint i = this->vscroll.pos; i < max; ++i) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
763 const Vehicle *v = this->vehicles[i];
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
764 StringID str;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
765
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
766 SetDParam(0, v->GetDisplayProfitThisYear());
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
767 SetDParam(1, v->GetDisplayProfitLastYear());
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
768
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
769 DrawVehicleImage(v, x + 19, y + 6, selected_vehicle, this->widget[VLW_WIDGET_LIST].right - this->widget[VLW_WIDGET_LIST].left - 20, 0);
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
770 DrawString(x + 19, y + this->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
771
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
772 if (v->name != NULL) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
773 /* The vehicle got a name so we will print it */
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
774 SetDParam(0, v->index);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
775 DrawString(x + 19, y, STR_01AB, TC_FROMSTRING);
10348
ac68018602dc (svn r14599) -Fix (r14598)[FS#2417]: Show again group-membership in the vehicle-lists. (Based on patch by PhilSophus)
frosch <frosch@openttd.org>
parents: 10285
diff changeset
776 } else if (v->group_id != DEFAULT_GROUP) {
ac68018602dc (svn r14599) -Fix (r14598)[FS#2417]: Show again group-membership in the vehicle-lists. (Based on patch by PhilSophus)
frosch <frosch@openttd.org>
parents: 10285
diff changeset
777 /* The vehicle has no name, but is member of a group, so print group name */
ac68018602dc (svn r14599) -Fix (r14598)[FS#2417]: Show again group-membership in the vehicle-lists. (Based on patch by PhilSophus)
frosch <frosch@openttd.org>
parents: 10285
diff changeset
778 SetDParam(0, v->group_id);
ac68018602dc (svn r14599) -Fix (r14598)[FS#2417]: Show again group-membership in the vehicle-lists. (Based on patch by PhilSophus)
frosch <frosch@openttd.org>
parents: 10285
diff changeset
779 DrawString(x + 19, y, STR_GROUP_TINY_NAME, TC_BLACK);
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
780 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
781
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
782 if (this->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG) DrawSmallOrderList(v, x + 138, y);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
783
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
784 if (v->IsInDepot()) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
785 str = STR_021F;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
786 } else {
10744
0118ca646690 (svn r15077) -Codechange: enumify DAYS_IN_YEAR and DAYS_IN_LEAP_YEAR
smatz <smatz@openttd.org>
parents: 10647
diff changeset
787 str = (v->age > v->max_age - DAYS_IN_LEAP_YEAR) ? STR_00E3 : STR_00E2;
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
788 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
789
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
790 SetDParam(0, v->unitnumber);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
791 DrawString(x, y + 2, str, TC_FROMSTRING);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
792
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
793 DrawVehicleProfitButton(v, x, y + 13);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
794
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
795 y += this->resize.step_height;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
796 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
797 }
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
798
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
799 /**
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
800 * Window for the (old) vehicle listing.
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
801 *
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
802 * bitmask for w->window_number
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
803 * 0-7 CompanyID (owner)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
804 * 8-10 window type (use flags in vehicle_gui.h)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
805 * 11-15 vehicle type (using VEH_, but can be compressed to fewer bytes if needed)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
806 * 16-31 StationID or OrderID depending on window type (bit 8-10)
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
807 */
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
808 struct VehicleListWindow : public BaseVehicleListWindow {
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
809
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
810 VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number)
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
811 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
812 uint16 window_type = this->window_number & VLW_MASK;
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
813 CompanyID company = (CompanyID)GB(this->window_number, 0, 8);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
814
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
815 this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
816 this->owner = company;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
817
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
818 /* Hide the widgets that we will not use in this window
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
819 * Some windows contains actions only fit for the owner */
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
820 if (company == _local_company) {
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
821 this->HideWidget(VLW_WIDGET_OTHER_COMPANY_FILLER);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
822 this->SetWidgetDisabledState(VLW_WIDGET_AVAILABLE_VEHICLES, window_type != VLW_STANDARD);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
823 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
824 this->SetWidgetsHiddenState(true,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
825 VLW_WIDGET_AVAILABLE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
826 VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
827 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
828 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
829 VLW_WIDGET_EMPTY_BOTTOM_RIGHT,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
830 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
831 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
832
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
833 /* Set up the window widgets */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
834 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
835 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
836 this->widget[VLW_WIDGET_LIST].tooltips = STR_883D_TRAINS_CLICK_ON_TRAIN_FOR;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
837 this->widget[VLW_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_TRAINS;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
838 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
839
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
840 case VEH_ROAD:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
841 this->widget[VLW_WIDGET_LIST].tooltips = STR_901A_ROAD_VEHICLES_CLICK_ON;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
842 this->widget[VLW_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_ROAD_VEHICLES;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
843 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
844
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
845 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
846 this->widget[VLW_WIDGET_LIST].tooltips = STR_9823_SHIPS_CLICK_ON_SHIP_FOR;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
847 this->widget[VLW_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_SHIPS;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
848 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
849
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
850 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
851 this->widget[VLW_WIDGET_LIST].tooltips = STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
852 this->widget[VLW_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_AIRCRAFT;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
853 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
854
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
855 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
856 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
857
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
858 switch (window_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
859 case VLW_SHARED_ORDERS:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
860 this->widget[VLW_WIDGET_CAPTION].data = STR_VEH_WITH_SHARED_ORDERS_LIST;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
861 break;
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
862
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
863 case VLW_STANDARD: // Company Name - standard widget setup
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
864 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
865 case VEH_TRAIN: this->widget[VLW_WIDGET_CAPTION].data = STR_881B_TRAINS; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
866 case VEH_ROAD: this->widget[VLW_WIDGET_CAPTION].data = STR_9001_ROAD_VEHICLES; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
867 case VEH_SHIP: this->widget[VLW_WIDGET_CAPTION].data = STR_9805_SHIPS; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
868 case VEH_AIRCRAFT: this->widget[VLW_WIDGET_CAPTION].data = STR_A009_AIRCRAFT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
869 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
870 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
871 break;
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
872
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
873 case VLW_WAYPOINT_LIST:
9993
9bd8842e9d02 (svn r14150) -Add: Add the count of trains using the current waypoint in the vehicle list window's caption
belugas <belugas@openttd.org>
parents: 9978
diff changeset
874 this->widget[VLW_WIDGET_CAPTION].data = STR_WAYPOINT_VIEWPORT_LIST;
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
875 break;
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
876
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
877 case VLW_STATION_LIST: // Station Name
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
878 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
879 case VEH_TRAIN: this->widget[VLW_WIDGET_CAPTION].data = STR_SCHEDULED_TRAINS; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
880 case VEH_ROAD: this->widget[VLW_WIDGET_CAPTION].data = STR_SCHEDULED_ROAD_VEHICLES; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
881 case VEH_SHIP: this->widget[VLW_WIDGET_CAPTION].data = STR_SCHEDULED_SHIPS; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
882 case VEH_AIRCRAFT: this->widget[VLW_WIDGET_CAPTION].data = STR_SCHEDULED_AIRCRAFT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
883 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
884 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
885 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
886
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
887 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
888 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
889 case VEH_TRAIN: this->widget[VLW_WIDGET_CAPTION].data = STR_VEHICLE_LIST_TRAIN_DEPOT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
890 case VEH_ROAD: this->widget[VLW_WIDGET_CAPTION].data = STR_VEHICLE_LIST_ROADVEH_DEPOT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
891 case VEH_SHIP: this->widget[VLW_WIDGET_CAPTION].data = STR_VEHICLE_LIST_SHIP_DEPOT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
892 case VEH_AIRCRAFT: this->widget[VLW_WIDGET_CAPTION].data = STR_VEHICLE_LIST_AIRCRAFT_DEPOT; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
893 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
894 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
895 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
896 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
897 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
898
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
899 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
900 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
901 this->resize.step_width = 1;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
902 /* Fallthrough */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
903 case VEH_ROAD:
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
904 this->vscroll.cap = 6;
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
905 this->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
906 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
907 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
908 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
909 this->vscroll.cap = 4;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
910 this->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
911 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
912 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
913 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
914
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
915
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
916 this->widget[VLW_WIDGET_LIST].data = (this->vscroll.cap << 8) + 1;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
917
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
918 /* Set up sorting. Make the window-specific _sorting variable
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
919 * point to the correct global _sorting struct so we are freed
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
920 * from having conditionals during window operation */
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
921 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
922 case VEH_TRAIN: this->sorting = &_sorting.train; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
923 case VEH_ROAD: this->sorting = &_sorting.roadveh; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
924 case VEH_SHIP: this->sorting = &_sorting.ship; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
925 case VEH_AIRCRAFT: this->sorting = &_sorting.aircraft; break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
926 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
927 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
928
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
929 this->vehicles.SetListing(*this->sorting);
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
930 this->vehicles.ForceRebuild();
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
931 this->vehicles.NeedResort();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
932
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
933 this->FindWindowPlacementAndResize(desc);
10118
13ba5b8a84f6 (svn r14302) -Codechange: simplify and make the vehicle list and group windows behave the same w.r.t. getting wider (by default) for trains than the other vehicles.
rubidium <rubidium@openttd.org>
parents: 10117
diff changeset
934 if (this->vehicle_type == VEH_TRAIN) ResizeWindow(this, 65, 0);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
935 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
936
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
937 ~VehicleListWindow()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
938 {
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
939 *this->sorting = this->vehicles.GetListing();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
940 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
941
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
942 virtual void OnPaint()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
943 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
944 int x = 2;
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
945 const Owner owner = this->owner;
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
946 const uint16 window_type = this->window_number & VLW_MASK;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
947 const uint16 index = GB(this->window_number, 16, 16);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
948
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
949 this->BuildVehicleList(owner, index, window_type);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
950 this->SortVehicleList();
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
951 SetVScrollCount(this, this->vehicles.Length());
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
952
9976
352e0aecf28a (svn r14133) -Fix [FS#2249]: close the 'manage vehicles' dropdown once the number of vehicles in the list reaches 0.
rubidium <rubidium@openttd.org>
parents: 9963
diff changeset
953 if (this->vehicles.Length() == 0) HideDropDownMenu(this);
352e0aecf28a (svn r14133) -Fix [FS#2249]: close the 'manage vehicles' dropdown once the number of vehicles in the list reaches 0.
rubidium <rubidium@openttd.org>
parents: 9963
diff changeset
954
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
955 /* draw the widgets */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
956 switch (window_type) {
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
957 case VLW_SHARED_ORDERS: // Shared Orders
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
958 if (this->vehicles.Length() == 0) {
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
959 /* We can't open this window without vehicles using this order
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11238
diff changeset
960 * and we should close the window when deleting the order */
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
961 NOT_REACHED();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
962 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
963 SetDParam(0, this->vscroll.count);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
964 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
965
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
966 case VLW_STANDARD: // Company Name
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
967 SetDParam(0, owner);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
968 SetDParam(1, this->vscroll.count);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
969 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
970
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
971 case VLW_WAYPOINT_LIST:
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
972 SetDParam(0, index);
9993
9bd8842e9d02 (svn r14150) -Add: Add the count of trains using the current waypoint in the vehicle list window's caption
belugas <belugas@openttd.org>
parents: 9978
diff changeset
973 SetDParam(1, this->vscroll.count);
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
974 break;
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
975
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
976 case VLW_STATION_LIST: // Station Name
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
977 SetDParam(0, index);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
978 SetDParam(1, this->vscroll.count);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
979 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
980
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
981 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
982 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
983 case VEH_TRAIN: SetDParam(0, STR_8800_TRAIN_DEPOT); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
984 case VEH_ROAD: SetDParam(0, STR_9003_ROAD_VEHICLE_DEPOT); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
985 case VEH_SHIP: SetDParam(0, STR_9803_SHIP_DEPOT); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
986 case VEH_AIRCRAFT: SetDParam(0, STR_A002_AIRCRAFT_HANGAR); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
987 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
988 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
989 if (this->vehicle_type == VEH_AIRCRAFT) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
990 SetDParam(1, index); // Airport name
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
991 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
992 SetDParam(1, GetDepot(index)->town_index);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
993 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
994 SetDParam(2, this->vscroll.count);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
995 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
996 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
997 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
998
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
999 this->SetWidgetsDisabledState(this->vehicles.Length() == 0,
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1000 VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1001 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1002 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1003 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1004
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9262
diff changeset
1005 this->DrawWidgets();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1006
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1007 /* draw sorting criteria string */
9563
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
1008 DrawString(85, 15, this->vehicle_sorter_names[this->vehicles.SortType()], TC_BLACK);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1009 /* draw arrow pointing up/down for ascending/descending sorting */
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1010 this->DrawSortButtonState(VLW_WIDGET_SORT_ORDER, this->vehicles.IsDescSortOrder() ? SBS_DOWN : SBS_UP);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1011
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
1012 this->DrawVehicleListItems(x, INVALID_VEHICLE);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1013 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1014
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1015 virtual void OnClick(Point pt, int widget)
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1016 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1017 switch (widget) {
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1018 case VLW_WIDGET_SORT_ORDER: // Flip sorting method ascending/descending
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1019 this->vehicles.ToggleSortOrder();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1020 this->SetDirty();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1021 break;
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1022 case VLW_WIDGET_SORT_BY_PULLDOWN:// Select sorting criteria dropdown menu
9563
7b66751960b8 (svn r13587) -Codechange: make some globals members of VehicleListBase since they are used as such
skidd13 <skidd13@openttd.org>
parents: 9530
diff changeset
1023 ShowDropDownMenu(this, this->vehicle_sorter_names, this->vehicles.SortType(), VLW_WIDGET_SORT_BY_PULLDOWN, 0, (this->vehicle_type == VEH_TRAIN || this->vehicle_type == VEH_ROAD) ? 0 : (1 << 10));
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1024 return;
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1025 case VLW_WIDGET_LIST: { // Matrix to show vehicles
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1026 uint32 id_v = (pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / this->resize.step_height;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1027 const Vehicle *v;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1028
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1029 if (id_v >= this->vscroll.cap) return; // click out of bounds
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1030
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1031 id_v += this->vscroll.pos;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1032
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1033 if (id_v >= this->vehicles.Length()) return; // click out of list bound
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1034
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1035 v = this->vehicles[id_v];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1036
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1037 ShowVehicleViewWindow(v);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1038 } break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1039
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1040 case VLW_WIDGET_AVAILABLE_VEHICLES:
10550
98e8bc97ec6b (svn r14807) -Codechange: use INVALID_TILE instead of 0 to mark invalid depots, industries, towns and waypoints
smatz <smatz@openttd.org>
parents: 10544
diff changeset
1041 ShowBuildVehicleWindow(INVALID_TILE, this->vehicle_type);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1042 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1043
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1044 case VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN: {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1045 static StringID action_str[] = {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1046 STR_REPLACE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1047 STR_SEND_FOR_SERVICING,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1048 STR_NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1049 INVALID_STRING_ID
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1050 };
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1051
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1052 static const StringID depot_name[] = {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1053 STR_SEND_TRAIN_TO_DEPOT,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1054 STR_SEND_ROAD_VEHICLE_TO_DEPOT,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1055 STR_SEND_SHIP_TO_DEPOT,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1056 STR_SEND_AIRCRAFT_TO_HANGAR
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1057 };
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1058
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1059 /* XXX - Substite string since the dropdown cannot handle dynamic strings */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1060 action_str[2] = depot_name[this->vehicle_type];
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1061 ShowDropDownMenu(this, action_str, 0, VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, (this->window_number & VLW_MASK) == VLW_STANDARD ? 0 : 1);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1062 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1063 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1064
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1065 case VLW_WIDGET_STOP_ALL:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1066 case VLW_WIDGET_START_ALL:
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1067 DoCommandP(0, GB(this->window_number, 16, 16), (this->window_number & VLW_MASK) | (1 << 6) | (widget == VLW_WIDGET_START_ALL ? (1 << 5) : 0) | this->vehicle_type, CMD_MASS_START_STOP);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1068 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1069 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1070 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1071
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1072 virtual void OnDropdownSelect(int widget, int index)
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1073 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1074 switch (widget) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1075 case VLW_WIDGET_SORT_BY_PULLDOWN:
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1076 this->vehicles.SetSortType(index);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1077 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1078 case VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN:
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1079 assert(this->vehicles.Length() != 0);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1080
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1081 switch (index) {
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1082 case 0: // Replace window
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1083 ShowReplaceGroupVehicleWindow(DEFAULT_GROUP, this->vehicle_type);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1084 break;
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1085 case 1: // Send for servicing
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1086 DoCommandP(0, GB(this->window_number, 16, 16) /* StationID or OrderID (depending on VLW) */,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1087 (this->window_number & VLW_MASK) | DEPOT_MASS_SEND | DEPOT_SERVICE,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1088 GetCmdSendToDepot(this->vehicle_type));
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1089 break;
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1090 case 2: // Send to Depots
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1091 DoCommandP(0, GB(this->window_number, 16, 16) /* StationID or OrderID (depending on VLW) */,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1092 (this->window_number & VLW_MASK) | DEPOT_MASS_SEND,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1093 GetCmdSendToDepot(this->vehicle_type));
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1094 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1095
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1096 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1097 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1098 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1099 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1100 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1101 this->SetDirty();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1102 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1103
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1104 virtual void OnTick()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1105 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1106 if (_pause_game != 0) return;
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1107 if (this->vehicles.NeedResort()) {
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1108 StationID station = ((this->window_number & VLW_MASK) == VLW_STATION_LIST) ? GB(this->window_number, 16, 16) : INVALID_STATION;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1109
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
1110 DEBUG(misc, 3, "Periodic resort %d list company %d at station %d", this->vehicle_type, this->owner, station);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1111 this->SetDirty();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1112 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1113 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1114
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1115 virtual void OnResize(Point new_size, Point delta)
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1116 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1117 this->vscroll.cap += delta.y / (int)this->resize.step_height;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1118 this->widget[VLW_WIDGET_LIST].data = (this->vscroll.cap << 8) + 1;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1119 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1120
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1121 virtual void OnInvalidateData(int data)
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1122 {
9942
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1123 if (HasBit(data, 15) && (this->window_number & VLW_MASK) == VLW_SHARED_ORDERS) {
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1124 SB(this->window_number, 16, 16, GB(data, 16, 16));
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1125 this->vehicles.ForceRebuild();
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1126 return;
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1127 }
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1128
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1129 if (data == 0) {
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1130 this->vehicles.ForceRebuild();
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1131 } else {
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1132 this->vehicles.ForceResort();
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1133 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1134 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1135 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1136
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1137 static WindowDesc _vehicle_list_desc(
10117
463e0d1f06fe (svn r14301) -Codechange: give the vehicle list and group list the same relative size and the same absolute height for the vehicle list items.
rubidium <rubidium@openttd.org>
parents: 9993
diff changeset
1138 WDP_AUTO, WDP_AUTO, 260, 194, 260, 246,
10118
13ba5b8a84f6 (svn r14302) -Codechange: simplify and make the vehicle list and group windows behave the same w.r.t. getting wider (by default) for trains than the other vehicles.
rubidium <rubidium@openttd.org>
parents: 10117
diff changeset
1139 WC_INVALID, WC_NONE,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1140 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1141 _vehicle_list_widgets
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1142 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1143
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1144 static void ShowVehicleListWindowLocal(CompanyID company, uint16 VLW_flag, VehicleType vehicle_type, uint16 unique_number)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1145 {
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1146 if (!IsValidCompanyID(company)) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1147
10118
13ba5b8a84f6 (svn r14302) -Codechange: simplify and make the vehicle list and group windows behave the same w.r.t. getting wider (by default) for trains than the other vehicles.
rubidium <rubidium@openttd.org>
parents: 10117
diff changeset
1148 _vehicle_list_desc.cls = GetWindowClassForVehicleType(vehicle_type);
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1149 WindowNumber num = (unique_number << 16) | (vehicle_type << 11) | VLW_flag | company;
10118
13ba5b8a84f6 (svn r14302) -Codechange: simplify and make the vehicle list and group windows behave the same w.r.t. getting wider (by default) for trains than the other vehicles.
rubidium <rubidium@openttd.org>
parents: 10117
diff changeset
1150 AllocateWindowDescFront<VehicleListWindow>(&_vehicle_list_desc, num);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1151 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1152
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1153 void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1154 {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1155 /* If _settings_client.gui.advanced_vehicle_list > 1, display the Advanced list
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1156 * if _settings_client.gui.advanced_vehicle_list == 1, display Advanced list only for local company
7547
19e0f0f69f30 (svn r11067) -Codechange: also make it possible to use the advanced vehicle list for other players. Patch by SmatZ.
rubidium <rubidium@openttd.org>
parents: 7540
diff changeset
1157 * if _ctrl_pressed, do the opposite action (Advanced list x Normal list)
19e0f0f69f30 (svn r11067) -Codechange: also make it possible to use the advanced vehicle list for other players. Patch by SmatZ.
rubidium <rubidium@openttd.org>
parents: 7540
diff changeset
1158 */
19e0f0f69f30 (svn r11067) -Codechange: also make it possible to use the advanced vehicle list for other players. Patch by SmatZ.
rubidium <rubidium@openttd.org>
parents: 7540
diff changeset
1159
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1160 if ((_settings_client.gui.advanced_vehicle_list > (uint)(company != _local_company)) != _ctrl_pressed) {
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1161 ShowCompanyGroup(company, vehicle_type);
6643
18d58b36b9b3 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium <rubidium@openttd.org>
parents: 6638
diff changeset
1162 } else {
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1163 ShowVehicleListWindowLocal(company, VLW_STANDARD, vehicle_type, 0);
6643
18d58b36b9b3 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium <rubidium@openttd.org>
parents: 6638
diff changeset
1164 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1165 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1166
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
1167 void ShowVehicleListWindow(const Waypoint *wp)
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
1168 {
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
1169 if (wp == NULL) return;
9978
793681882d37 (svn r14135) -Codechange: Add owner to waypoints. Previously, it was guessed from rail underneath it.
belugas <belugas@openttd.org>
parents: 9976
diff changeset
1170 ShowVehicleListWindowLocal(wp->owner, VLW_WAYPOINT_LIST, VEH_TRAIN, wp->index);
9949
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
1171 }
d991fb317728 (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas <belugas@openttd.org>
parents: 9942
diff changeset
1172
5745
9c34cdf6cc19 (svn r8293) -Codechange: overloaded ShowVehicleListWindow() so it can open all types of vehicle lists (depending on arguments)
bjarni <bjarni@openttd.org>
parents: 5668
diff changeset
1173 void ShowVehicleListWindow(const Vehicle *v)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1174 {
9942
5885cda280e8 (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium <rubidium@openttd.org>
parents: 9921
diff changeset
1175 ShowVehicleListWindowLocal(v->owner, VLW_SHARED_ORDERS, v->type, v->FirstShared()->index);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1176 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1177
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1178 void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station)
5745
9c34cdf6cc19 (svn r8293) -Codechange: overloaded ShowVehicleListWindow() so it can open all types of vehicle lists (depending on arguments)
bjarni <bjarni@openttd.org>
parents: 5668
diff changeset
1179 {
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1180 ShowVehicleListWindowLocal(company, VLW_STATION_LIST, vehicle_type, station);
5745
9c34cdf6cc19 (svn r8293) -Codechange: overloaded ShowVehicleListWindow() so it can open all types of vehicle lists (depending on arguments)
bjarni <bjarni@openttd.org>
parents: 5668
diff changeset
1181 }
9c34cdf6cc19 (svn r8293) -Codechange: overloaded ShowVehicleListWindow() so it can open all types of vehicle lists (depending on arguments)
bjarni <bjarni@openttd.org>
parents: 5668
diff changeset
1182
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1183 void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1184 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1185 uint16 depot_airport_index;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1186
6259
4a39d6291d58 (svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium <rubidium@openttd.org>
parents: 6248
diff changeset
1187 if (vehicle_type == VEH_AIRCRAFT) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1188 depot_airport_index = GetStationIndex(depot_tile);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1189 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1190 Depot *depot = GetDepotByTile(depot_tile);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1191 if (depot == NULL) return; // no depot to show
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1192 depot_airport_index = depot->index;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1193 }
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1194 ShowVehicleListWindowLocal(company, VLW_DEPOT_LIST, vehicle_type, depot_airport_index);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1195 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1196
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1197
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1198 /* Unified vehicle GUI - Vehicle Details Window */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1199
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1200 /** Constants of vehicle details widget indices */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1201 enum VehicleDetailsWindowWidgets {
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1202 VLD_WIDGET_CLOSEBOX = 0,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1203 VLD_WIDGET_CAPTION,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1204 VLD_WIDGET_RENAME_VEHICLE,
10562
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1205 VLD_WIDGET_STICKY,
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1206 VLD_WIDGET_TOP_DETAILS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1207 VLD_WIDGET_INCREASE_SERVICING_INTERVAL,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1208 VLD_WIDGET_DECREASE_SERVICING_INTERVAL,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1209 VLD_WIDGET_BOTTOM_RIGHT,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1210 VLD_WIDGET_MIDDLE_DETAILS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1211 VLD_WIDGET_SCROLLBAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1212 VLD_WIDGET_DETAILS_CARGO_CARRIED,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1213 VLD_WIDGET_DETAILS_TRAIN_VEHICLES,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1214 VLD_WIDGET_DETAILS_CAPACITY_OF_EACH,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1215 VLD_WIDGET_DETAILS_TOTAL_CARGO,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1216 VLD_WIDGET_RESIZE,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1217 };
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1218
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1219 /** Vehicle details widgets. */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1220 static const Widget _vehicle_details_widgets[] = {
9778
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1221 { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // VLD_WIDGET_CLOSEBOX
10562
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1222 { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 352, 0, 13, 0x0, STR_018C_WINDOW_TITLE_DRAG_THIS}, // VLD_WIDGET_CAPTION
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1223 { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 353, 392, 0, 13, STR_01AA_NAME, STR_NULL /* filled in later */}, // VLD_WIDGET_RENAME_VEHICLE
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1224 { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 393, 404, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // VLD_WIDGET_STICKY
9778
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1225 { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 404, 14, 55, 0x0, STR_NULL}, // VLD_WIDGET_TOP_DETAILS
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1226 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 10, 101, 106, STR_0188, STR_884D_INCREASE_SERVICING_INTERVAL}, // VLD_WIDGET_INCREASE_SERVICING_INTERVAL
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1227 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 10, 107, 112, STR_0189, STR_884E_DECREASE_SERVICING_INTERVAL}, // VLD_WIDGET_DECREASE_SERVICING_INTERVAL
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1228 { WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 11, 404, 101, 112, 0x0, STR_NULL}, // VLD_WIDGET_BOTTOM_RIGHT
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1229 { WWT_MATRIX, RESIZE_RB, COLOUR_GREY, 0, 392, 56, 100, 0x701, STR_NULL}, // VLD_WIDGET_MIDDLE_DETAILS
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1230 { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 393, 404, 56, 100, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // VLD_WIDGET_SCROLLBAR
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1231 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 95, 113, 124, STR_013C_CARGO, STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED}, // VLD_WIDGET_DETAILS_CARGO_CARRIED
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1232 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 96, 194, 113, 124, STR_013D_INFORMATION, STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES},// VLD_WIDGET_DETAILS_TRAIN_VEHICLES
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1233 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 195, 293, 113, 124, STR_013E_CAPACITIES, STR_8851_SHOW_CAPACITIES_OF_EACH}, // VLD_WIDGET_DETAILS_CAPACITY_OF_EACH
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1234 { WWT_PUSHTXTBTN, RESIZE_RTB, COLOUR_GREY, 294, 392, 113, 124, STR_TOTAL_CARGO, STR_SHOW_TOTAL_CARGO}, // VLD_WIDGET_DETAILS_TOTAL_CARGO
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1235 { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 393, 404, 113, 124, 0x0, STR_RESIZE_BUTTON}, // VLD_RESIZE
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1236 { WIDGETS_END},
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1237 };
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1238
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1239
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1240 /** Command indices for the _vehicle_command_translation_table. */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1241 enum VehicleStringTranslation {
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1242 VST_VEHICLE_AGE_RUNNING_COST_YR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1243 VST_VEHICLE_MAX_SPEED,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1244 VST_VEHICLE_PROFIT_THIS_YEAR_LAST_YEAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1245 VST_VEHICLE_RELIABILITY_BREAKDOWNS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1246 };
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1247
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1248 /** Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type. */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1249 static const StringID _vehicle_translation_table[][4] = {
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1250 { // VST_VEHICLE_AGE_RUNNING_COST_YR
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1251 STR_885D_AGE_RUNNING_COST_YR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1252 STR_900D_AGE_RUNNING_COST_YR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1253 STR_9812_AGE_RUNNING_COST_YR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1254 STR_A00D_AGE_RUNNING_COST_YR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1255 },
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1256 { // VST_VEHICLE_MAX_SPEED
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1257 STR_NULL,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1258 STR_900E_MAX_SPEED,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1259 STR_9813_MAX_SPEED,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1260 STR_A00E_MAX_SPEED,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1261 },
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1262 { // VST_VEHICLE_PROFIT_THIS_YEAR_LAST_YEAR
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1263 STR_885F_PROFIT_THIS_YEAR_LAST_YEAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1264 STR_900F_PROFIT_THIS_YEAR_LAST_YEAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1265 STR_9814_PROFIT_THIS_YEAR_LAST_YEAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1266 STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1267 },
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1268 { // VST_VEHICLE_RELIABILITY_BREAKDOWNS
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1269 STR_8860_RELIABILITY_BREAKDOWNS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1270 STR_9010_RELIABILITY_BREAKDOWNS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1271 STR_9815_RELIABILITY_BREAKDOWNS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1272 STR_A010_RELIABILITY_BREAKDOWNS,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1273 },
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1274 };
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1275
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1276
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1277 extern int GetTrainDetailsWndVScroll(VehicleID veh_id, byte det_tab);
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1278 extern void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vscroll_cap, byte det_tab);
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1279 extern void DrawRoadVehDetails(const Vehicle *v, int x, int y);
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1280 extern void DrawShipDetails(const Vehicle *v, int x, int y);
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1281 extern void DrawAircraftDetails(const Vehicle *v, int x, int y);
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1282
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1283 struct VehicleDetailsWindow : Window {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1284 int tab;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1285
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1286 /** Initialize a newly created vehicle details window */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1287 VehicleDetailsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1288 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1289 const Vehicle *v = GetVehicle(this->window_number);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1290
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1291 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1292 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1293 ResizeWindow(this, 0, 39);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1294
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1295 this->vscroll.cap = 6;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1296 this->height += 12;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1297 this->resize.step_height = 14;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1298 this->resize.height = this->height - 14 * 2; // Minimum of 4 wagons in the display
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1299
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1300 this->widget[VLD_WIDGET_RENAME_VEHICLE].tooltips = STR_8867_NAME_TRAIN;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1301 this->widget[VLD_WIDGET_CAPTION].data = STR_8802_DETAILS;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1302 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1303
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1304 case VEH_ROAD: {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1305 this->widget[VLD_WIDGET_CAPTION].data = STR_900C_DETAILS;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1306 this->widget[VLD_WIDGET_RENAME_VEHICLE].tooltips = STR_902E_NAME_ROAD_VEHICLE;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1307
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1308 if (!RoadVehHasArticPart(v)) break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1309
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1310 /* Draw the text under the vehicle instead of next to it, minus the
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1311 * height already allocated for the cargo of the first vehicle. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1312 uint height_extension = 15 - 11;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1313
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1314 /* Add space for the cargo amount for each part. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1315 for (const Vehicle *u = v; u != NULL; u = u->Next()) {
9585
a4be9bcc1d04 (svn r13623) -Codechange: only show the 'load' of articulated RV parts that have a capacity instead of showing 'empty' parts when a vehicle is completely full.
rubidium <rubidium@openttd.org>
parents: 9584
diff changeset
1316 if (u->cargo_cap != 0) height_extension += 11;
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1317 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1318
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1319 ResizeWindow(this, 0, height_extension);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1320 } break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1321
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1322 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1323 this->widget[VLD_WIDGET_RENAME_VEHICLE].tooltips = STR_982F_NAME_SHIP;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1324 this->widget[VLD_WIDGET_CAPTION].data = STR_9811_DETAILS;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1325 break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1326
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1327 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1328 ResizeWindow(this, 0, 11);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1329 this->widget[VLD_WIDGET_RENAME_VEHICLE].tooltips = STR_A032_NAME_AIRCRAFT;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1330 this->widget[VLD_WIDGET_CAPTION].data = STR_A00C_DETAILS;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1331 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1332 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1333 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1334
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1335 if (v->type != VEH_TRAIN) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1336 this->vscroll.cap = 1;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1337 this->widget[VLD_WIDGET_MIDDLE_DETAILS].right += 12;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1338 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1339
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1340 this->widget[VLD_WIDGET_MIDDLE_DETAILS].data = (this->vscroll.cap << 8) + 1;
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
1341 this->owner = v->owner;
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1342
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1343 this->tab = 0;
9333
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1344
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1345 this->FindWindowPlacementAndResize(desc);
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1346 }
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1347
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1348 /** Checks whether service interval is enabled for the vehicle. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1349 static bool IsVehicleServiceIntervalEnabled(const VehicleType vehicle_type)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1350 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1351 switch (vehicle_type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1352 default: NOT_REACHED();
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1353 case VEH_TRAIN: return _settings_game.vehicle.servint_trains != 0; break;
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1354 case VEH_ROAD: return _settings_game.vehicle.servint_roadveh != 0; break;
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1355 case VEH_SHIP: return _settings_game.vehicle.servint_ships != 0; break;
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1356 case VEH_AIRCRAFT: return _settings_game.vehicle.servint_aircraft != 0; break;
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1357 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1358 return false; // kill a compiler warning
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1359 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1360
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1361 /**
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1362 * Draw the details for the given vehicle at the position (x, y) of the Details windows
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1363 *
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1364 * @param v current vehicle
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1365 * @param x The x coordinate
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1366 * @param y The y coordinate
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1367 * @param vscroll_pos (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1368 * @param vscroll_cap (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1369 * @param det_tab (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1370 */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1371 static void DrawVehicleDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint vscroll_cap, byte det_tab)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1372 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1373 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1374 case VEH_TRAIN: DrawTrainDetails(v, x, y, vscroll_pos, vscroll_cap, det_tab); break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1375 case VEH_ROAD: DrawRoadVehDetails(v, x, y); break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1376 case VEH_SHIP: DrawShipDetails(v, x, y); break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1377 case VEH_AIRCRAFT: DrawAircraftDetails(v, x, y); break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1378 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1379 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1380 }
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1381
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1382 /** Repaint vehicle details window. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1383 virtual void OnPaint()
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1384 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1385 const Vehicle *v = GetVehicle(this->window_number);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1386 byte det_tab = this->tab;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1387
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1388 this->SetWidgetDisabledState(VLD_WIDGET_RENAME_VEHICLE, v->owner != _local_company);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1389
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1390 if (v->type == VEH_TRAIN) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1391 this->DisableWidget(det_tab + VLD_WIDGET_DETAILS_CARGO_CARRIED);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1392 SetVScrollCount(this, GetTrainDetailsWndVScroll(v->index, det_tab));
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1393 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1394
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1395 this->SetWidgetsHiddenState(v->type != VEH_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1396 VLD_WIDGET_SCROLLBAR,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1397 VLD_WIDGET_DETAILS_CARGO_CARRIED,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1398 VLD_WIDGET_DETAILS_TRAIN_VEHICLES,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1399 VLD_WIDGET_DETAILS_CAPACITY_OF_EACH,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1400 VLD_WIDGET_DETAILS_TOTAL_CARGO,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1401 VLD_WIDGET_RESIZE,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1402 WIDGET_LIST_END);
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1403
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1404 /* Disable service-scroller when interval is set to disabled */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1405 this->SetWidgetsDisabledState(!IsVehicleServiceIntervalEnabled(v->type),
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1406 VLD_WIDGET_INCREASE_SERVICING_INTERVAL,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1407 VLD_WIDGET_DECREASE_SERVICING_INTERVAL,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1408 WIDGET_LIST_END);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1409
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1410
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1411 SetDParam(0, v->index);
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9262
diff changeset
1412 this->DrawWidgets();
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1413
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1414 /* Draw running cost */
10744
0118ca646690 (svn r15077) -Codechange: enumify DAYS_IN_YEAR and DAYS_IN_LEAP_YEAR
smatz <smatz@openttd.org>
parents: 10647
diff changeset
1415 SetDParam(1, v->age / DAYS_IN_LEAP_YEAR);
0118ca646690 (svn r15077) -Codechange: enumify DAYS_IN_YEAR and DAYS_IN_LEAP_YEAR
smatz <smatz@openttd.org>
parents: 10647
diff changeset
1416 SetDParam(0, (v->age + DAYS_IN_YEAR < v->max_age) ? STR_AGE : STR_AGE_RED);
0118ca646690 (svn r15077) -Codechange: enumify DAYS_IN_YEAR and DAYS_IN_LEAP_YEAR
smatz <smatz@openttd.org>
parents: 10647
diff changeset
1417 SetDParam(2, v->max_age / DAYS_IN_LEAP_YEAR);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1418 SetDParam(3, v->GetDisplayRunningCost());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1419 DrawString(2, 15, _vehicle_translation_table[VST_VEHICLE_AGE_RUNNING_COST_YR][v->type], TC_FROMSTRING);
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1420
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1421 /* Draw max speed */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1422 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1423 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1424 SetDParam(2, v->GetDisplayMaxSpeed());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1425 SetDParam(1, v->u.rail.cached_power);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1426 SetDParam(0, v->u.rail.cached_weight);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1427 SetDParam(3, v->u.rail.cached_max_te / 1000);
10901
c704059a7faa (svn r15236) -Codechange: Rename realistic_acceleration patch option to train_acceleration_model, and change from boolean to value. Don't forget to update your settings.
peter1138 <peter1138@openttd.org>
parents: 10744
diff changeset
1428 DrawString(2, 25, (_settings_game.vehicle.train_acceleration_model != TAM_ORIGINAL && v->u.rail.railtype != RAILTYPE_MAGLEV) ?
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1429 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1430 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED, TC_FROMSTRING);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1431 break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1432
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1433 case VEH_ROAD:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1434 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1435 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1436 SetDParam(0, v->GetDisplayMaxSpeed());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1437 DrawString(2, 25, _vehicle_translation_table[VST_VEHICLE_MAX_SPEED][v->type], TC_FROMSTRING);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1438 break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1439
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1440 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1441 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1442
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1443 /* Draw profit */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1444 SetDParam(0, v->GetDisplayProfitThisYear());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1445 SetDParam(1, v->GetDisplayProfitLastYear());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1446 DrawString(2, 35, _vehicle_translation_table[VST_VEHICLE_PROFIT_THIS_YEAR_LAST_YEAR][v->type], TC_FROMSTRING);
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1447
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1448 /* Draw breakdown & reliability */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1449 SetDParam(0, v->reliability * 100 >> 16);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1450 SetDParam(1, v->breakdowns_since_last_service);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1451 DrawString(2, 45, _vehicle_translation_table[VST_VEHICLE_RELIABILITY_BREAKDOWNS][v->type], TC_FROMSTRING);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1452
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1453 /* Draw service interval text */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1454 SetDParam(0, v->service_interval);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1455 SetDParam(1, v->date_of_last_service);
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1456 DrawString(13, this->height - (v->type != VEH_TRAIN ? 11 : 23), _settings_game.vehicle.servint_ispercent ? STR_SERVICING_INTERVAL_PERCENT : STR_883C_SERVICING_INTERVAL_DAYS, TC_FROMSTRING);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1457
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1458 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1459 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1460 DrawVehicleDetails(v, 2, 57, this->vscroll.pos, this->vscroll.cap, det_tab);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1461 break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1462
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1463 case VEH_ROAD:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1464 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1465 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1466 DrawVehicleImage(v, 3, 57, INVALID_VEHICLE, 0, 0);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1467 DrawVehicleDetails(v, 75, 57, this->vscroll.pos, this->vscroll.cap, det_tab);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1468 break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1469
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1470 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1471 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1472 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1473
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1474 virtual void OnClick(Point pt, int widget)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1475 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1476 /** Message strings for renaming vehicles indexed by vehicle type. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1477 static const StringID _name_vehicle_title[] = {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1478 STR_8865_NAME_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1479 STR_902C_NAME_ROAD_VEHICLE,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1480 STR_9831_NAME_SHIP,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1481 STR_A030_NAME_AIRCRAFT
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1482 };
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1483
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1484 switch (widget) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1485 case VLD_WIDGET_RENAME_VEHICLE: {// rename
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1486 const Vehicle *v = GetVehicle(this->window_number);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1487 SetDParam(0, v->index);
10148
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1488 ShowQueryString(STR_VEHICLE_NAME, _name_vehicle_title[v->type], MAX_LENGTH_VEHICLE_NAME_BYTES, MAX_LENGTH_VEHICLE_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1489 } break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1490
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1491 case VLD_WIDGET_INCREASE_SERVICING_INTERVAL: // increase int
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1492 case VLD_WIDGET_DECREASE_SERVICING_INTERVAL: { // decrease int
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1493 int mod = _ctrl_pressed ? 5 : 10;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1494 const Vehicle *v = GetVehicle(this->window_number);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1495
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1496 mod = (widget == VLD_WIDGET_DECREASE_SERVICING_INTERVAL) ? -mod : mod;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1497 mod = GetServiceIntervalClamped(mod + v->service_interval);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1498 if (mod == v->service_interval) return;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1499
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1500 DoCommandP(v->tile, v->index, mod, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1501 } break;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1502
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1503 case VLD_WIDGET_DETAILS_CARGO_CARRIED:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1504 case VLD_WIDGET_DETAILS_TRAIN_VEHICLES:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1505 case VLD_WIDGET_DETAILS_CAPACITY_OF_EACH:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1506 case VLD_WIDGET_DETAILS_TOTAL_CARGO:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1507 this->SetWidgetsDisabledState(false,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1508 VLD_WIDGET_DETAILS_CARGO_CARRIED,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1509 VLD_WIDGET_DETAILS_TRAIN_VEHICLES,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1510 VLD_WIDGET_DETAILS_CAPACITY_OF_EACH,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1511 VLD_WIDGET_DETAILS_TOTAL_CARGO,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1512 widget,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1513 WIDGET_LIST_END);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1514
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1515 this->tab = widget - VLD_WIDGET_DETAILS_CARGO_CARRIED;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1516 this->SetDirty();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1517 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1518 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1519 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1520
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1521 virtual void OnQueryTextFinished(char *str)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1522 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1523 /** Message strings for error while renaming indexed by vehicle type. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1524 static const StringID _name_vehicle_error[] = {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1525 STR_8866_CAN_T_NAME_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1526 STR_902D_CAN_T_NAME_ROAD_VEHICLE,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1527 STR_9832_CAN_T_NAME_SHIP,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1528 STR_A031_CAN_T_NAME_AIRCRAFT
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1529 };
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1530
10148
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1531 if (str == NULL) return;
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1532
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1533 DoCommandP(0, this->window_number, 0, CMD_RENAME_VEHICLE | CMD_MSG(_name_vehicle_error[GetVehicle(this->window_number)->type]), NULL, str);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1534 }
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1535
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1536 virtual void OnResize(Point new_size, Point delta)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1537 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1538 if (delta.x != 0) ResizeButtons(this, VLD_WIDGET_DETAILS_CARGO_CARRIED, VLD_WIDGET_DETAILS_TOTAL_CARGO);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1539 if (delta.y == 0) return;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1540
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1541 this->vscroll.cap += delta.y / 14;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1542 this->widget[VLD_WIDGET_MIDDLE_DETAILS].data = (this->vscroll.cap << 8) + 1;
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1543 }
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1544 };
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1545
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1546 /** Vehicle details window descriptor. */
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1547 static const WindowDesc _vehicle_details_desc(
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1548 WDP_AUTO, WDP_AUTO, 405, 113, 405, 113,
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1549 WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW,
10562
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1550 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1551 _vehicle_details_widgets
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1552 );
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1553
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1554 /** Shows the vehicle details window of the given vehicle. */
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1555 static void ShowVehicleDetailsWindow(const Vehicle *v)
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1556 {
10562
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1557 DeleteWindowById(WC_VEHICLE_ORDERS, v->index, false);
19596a28a157 (svn r14819) -Change: make details and order menu stickyable, like the timetable window. Also let the detail/order/timetable window close eachther, like the detail and order windows already did, when not stickied.
rubidium <rubidium@openttd.org>
parents: 10550
diff changeset
1558 DeleteWindowById(WC_VEHICLE_TIMETABLE, v->index, false);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1559 AllocateWindowDescFront<VehicleDetailsWindow>(&_vehicle_details_desc, v->index);
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1560 }
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1561
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1562
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1563 /* Unified vehicle GUI - Vehicle View Window */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1564
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1565 /** Vehicle view widgets. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1566 static const Widget _vehicle_view_widgets[] = {
9778
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1567 { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, // VVW_WIDGET_CLOSEBOX
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1568 { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 237, 0, 13, 0x0 /* filled later */, STR_018C_WINDOW_TITLE_DRAG_THIS }, // VVW_WIDGET_CAPTION
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1569 { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON }, // VVW_WIDGET_STICKY
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1570 { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 231, 14, 103, 0x0, STR_NULL }, // VVW_WIDGET_PANEL
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1571 { WWT_INSET, RESIZE_RB, COLOUR_GREY, 2, 229, 16, 101, 0x0, STR_NULL }, // VVW_WIDGET_VIEWPORT
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1572 { WWT_PUSHBTN, RESIZE_RTB, COLOUR_GREY, 0, 237, 104, 115, 0x0, 0x0 /* filled later */ }, // VVW_WIDGET_START_STOP_VEH
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1573 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 14, 31, SPR_CENTRE_VIEW_VEHICLE, 0x0 /* filled later */ }, // VVW_WIDGET_CENTER_MAIN_VIEH
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1574 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 32, 49, 0x0 /* filled later */, 0x0 /* filled later */ }, // VVW_WIDGET_GOTO_DEPOT
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1575 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 50, 67, SPR_REFIT_VEHICLE, 0x0 /* filled later */ }, // VVW_WIDGET_REFIT_VEH
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1576 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 68, 85, SPR_SHOW_ORDERS, 0x0 /* filled later */ }, // VVW_WIDGET_SHOW_ORDERS
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1577 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 86, 103, SPR_SHOW_VEHICLE_DETAILS, 0x0 /* filled later */ }, // VVW_WIDGET_SHOW_DETAILS
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1578 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 32, 49, 0x0 /* filled later */, 0x0 /* filled later */ }, // VVW_WIDGET_CLONE_VEH
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1579 { WWT_PANEL, RESIZE_LRB, COLOUR_GREY, 232, 249, 104, 103, 0x0, STR_NULL }, // VVW_WIDGET_EMPTY_BOTTOM_RIGHT
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1580 { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 238, 249, 104, 115, 0x0, STR_NULL }, // VVW_WIDGET_RESIZE
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1581 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 50, 67, SPR_FORCE_VEHICLE_TURN, STR_9020_FORCE_VEHICLE_TO_TURN_AROUND }, // VVW_WIDGET_TURN_AROUND
aafe72af338c (svn r13919) -Codechange: Replace numbers with Colours enum on osk(forgot 2 assignations), statusbar, subsidy, terraform, timetable, toolbar, town, tree and vehicle guis.
belugas <belugas@openttd.org>
parents: 9653
diff changeset
1582 { WWT_PUSHIMGBTN, RESIZE_LR, COLOUR_GREY, 232, 249, 50, 67, SPR_IGNORE_SIGNALS, STR_884A_FORCE_TRAIN_TO_PROCEED }, // VVW_WIDGET_FORCE_PROCEED
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1583 { WIDGETS_END},
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1584 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1585
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1586
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1587 /** Vehicle view window descriptor for all vehicles but trains. */
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1588 static const WindowDesc _vehicle_view_desc(
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1589 WDP_AUTO, WDP_AUTO, 250, 116, 250, 116,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1590 WC_VEHICLE_VIEW, WC_NONE,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1591 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1592 _vehicle_view_widgets
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1593 );
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1594
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1595 /** Vehicle view window descriptor for trains. Only minimum_height and
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1596 * default_height are different for train view.
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1597 */
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1598 static const WindowDesc _train_view_desc(
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1599 WDP_AUTO, WDP_AUTO, 250, 134, 250, 134,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1600 WC_VEHICLE_VIEW, WC_NONE,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1601 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1602 _vehicle_view_widgets
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1603 );
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1604
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1605
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1606 /* Just to make sure, nobody has changed the vehicle type constants, as we are
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1607 using them for array indexing in a number of places here. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1608 assert_compile(VEH_TRAIN == 0);
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1609 assert_compile(VEH_ROAD == 1);
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1610 assert_compile(VEH_SHIP == 2);
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1611 assert_compile(VEH_AIRCRAFT == 3);
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1612
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1613 /** Zoom levels for vehicle views indexed by vehicle type. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1614 static const ZoomLevel _vehicle_view_zoom_levels[] = {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1615 ZOOM_LVL_TRAIN,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1616 ZOOM_LVL_ROADVEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1617 ZOOM_LVL_SHIP,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1618 ZOOM_LVL_AIRCRAFT,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1619 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1620
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1621 /* Constants for geometry of vehicle view viewport */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1622 static const int VV_VIEWPORT_X = 3;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1623 static const int VV_VIEWPORT_Y = 17;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1624 static const int VV_INITIAL_VIEWPORT_WIDTH = 226;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1625 static const int VV_INITIAL_VIEWPORT_HEIGHT = 84;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1626 static const int VV_INITIAL_VIEWPORT_HEIGHT_TRAIN = 102;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1627
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1628 /** Command indices for the _vehicle_command_translation_table. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1629 enum VehicleCommandTranslation {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1630 VCT_CMD_START_STOP = 0,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1631 VCT_CMD_GOTO_DEPOT,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1632 VCT_CMD_CLONE_VEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1633 VCT_CMD_TURN_AROUND,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1634 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1635
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1636 /** Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1637 static const uint32 _vehicle_command_translation_table[][4] = {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1638 { // VCT_CMD_START_STOP
9921
29d461128c75 (svn r14076) -Codechange: Merge the four start/stop commands into a single CMD_START_STOP_VEHICLE.
frosch <frosch@openttd.org>
parents: 9913
diff changeset
1639 CMD_START_STOP_VEHICLE | CMD_MSG(STR_883B_CAN_T_STOP_START_TRAIN),
29d461128c75 (svn r14076) -Codechange: Merge the four start/stop commands into a single CMD_START_STOP_VEHICLE.
frosch <frosch@openttd.org>
parents: 9913
diff changeset
1640 CMD_START_STOP_VEHICLE | CMD_MSG(STR_9015_CAN_T_STOP_START_ROAD_VEHICLE),
29d461128c75 (svn r14076) -Codechange: Merge the four start/stop commands into a single CMD_START_STOP_VEHICLE.
frosch <frosch@openttd.org>
parents: 9913
diff changeset
1641 CMD_START_STOP_VEHICLE | CMD_MSG(STR_9818_CAN_T_STOP_START_SHIP),
29d461128c75 (svn r14076) -Codechange: Merge the four start/stop commands into a single CMD_START_STOP_VEHICLE.
frosch <frosch@openttd.org>
parents: 9913
diff changeset
1642 CMD_START_STOP_VEHICLE | CMD_MSG(STR_A016_CAN_T_STOP_START_AIRCRAFT)
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1643 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1644 { // VCT_CMD_GOTO_DEPOT
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1645 /* TrainGotoDepot has a nice randomizer in the pathfinder, which causes desyncs... */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1646 CMD_SEND_TRAIN_TO_DEPOT | CMD_NO_TEST_IF_IN_NETWORK | CMD_MSG(STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1647 CMD_SEND_ROADVEH_TO_DEPOT | CMD_MSG(STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1648 CMD_SEND_SHIP_TO_DEPOT | CMD_MSG(STR_9819_CAN_T_SEND_SHIP_TO_DEPOT),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1649 CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO)
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1650 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1651 { // VCT_CMD_CLONE_VEH
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1652 CMD_CLONE_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1653 CMD_CLONE_VEHICLE | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1654 CMD_CLONE_VEHICLE | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1655 CMD_CLONE_VEHICLE | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT)
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1656 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1657 { // VCT_CMD_TURN_AROUND
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1658 CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_8869_CAN_T_REVERSE_DIRECTION),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1659 CMD_TURN_ROADVEH | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN),
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1660 0xffffffff, // invalid for ships
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1661 0xffffffff // invalid for aircrafts
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1662 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1663 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1664
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1665 /** Checks whether the vehicle may be refitted at the moment.*/
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1666 static bool IsVehicleRefitable(const Vehicle *v)
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1667 {
10430
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1668 if (!v->IsStoppedInDepot()) return false;
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1669
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1670 do {
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1671 if (IsEngineRefittable(v->engine_type)) return true;
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1672 } while ((v->type == VEH_TRAIN || v->type == VEH_ROAD) && (v = v->Next()) != NULL);
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1673
399a56984e58 (svn r14683) -Change: only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos.
rubidium <rubidium@openttd.org>
parents: 10348
diff changeset
1674 return false;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1675 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1676
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1677 struct VehicleViewWindow : Window {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1678 VehicleViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1679 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1680 const Vehicle *v = GetVehicle(this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1681
11084
e07c7d3925c8 (svn r15427) -Codechange: give w->caption_color a more sensible name as it holds the owner of whatever is shown in the window
rubidium <rubidium@openttd.org>
parents: 10998
diff changeset
1682 this->owner = v->owner;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1683 InitializeWindowViewport(this, VV_VIEWPORT_X, VV_VIEWPORT_Y, VV_INITIAL_VIEWPORT_WIDTH,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1684 (v->type == VEH_TRAIN) ? VV_INITIAL_VIEWPORT_HEIGHT_TRAIN : VV_INITIAL_VIEWPORT_HEIGHT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1685 this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1686
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1687 /*
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1688 * fill in data and tooltip codes for the widgets and
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1689 * move some of the buttons for trains
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1690 */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1691 switch (v->type) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1692 case VEH_TRAIN:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1693 this->widget[VVW_WIDGET_CAPTION].data = STR_882E;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1694
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1695 this->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_8846_CURRENT_TRAIN_ACTION_CLICK;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1696
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1697 this->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_8848_CENTER_MAIN_VIEW_ON_TRAIN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1698
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1699 this->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_TRAIN_TODEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1700 this->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_8849_SEND_TRAIN_TO_DEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1701
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1702 this->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_RAIL_REFIT_VEHICLE_TO_CARRY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1703
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1704 this->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_8847_SHOW_TRAIN_S_ORDERS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1705
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1706 this->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_884C_SHOW_TRAIN_DETAILS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1707
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1708 this->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_TRAIN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1709 this->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_TRAIN_INFO;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1710
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1711 this->widget[VVW_WIDGET_TURN_AROUND].tooltips = STR_884B_REVERSE_DIRECTION_OF_TRAIN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1712
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1713
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1714 /* due to more buttons we must modify the layout a bit for trains */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1715 this->widget[VVW_WIDGET_PANEL].bottom = 121;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1716 this->widget[VVW_WIDGET_VIEWPORT].bottom = 119;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1717
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1718 this->widget[VVW_WIDGET_START_STOP_VEH].top = 122;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1719 this->widget[VVW_WIDGET_START_STOP_VEH].bottom = 133;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1720
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1721 this->widget[VVW_WIDGET_REFIT_VEH].top = 68;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1722 this->widget[VVW_WIDGET_REFIT_VEH].bottom = 85;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1723
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1724 this->widget[VVW_WIDGET_SHOW_ORDERS].top = 86;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1725 this->widget[VVW_WIDGET_SHOW_ORDERS].bottom = 103;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1726
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1727 this->widget[VVW_WIDGET_SHOW_DETAILS].top = 104;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1728 this->widget[VVW_WIDGET_SHOW_DETAILS].bottom = 121;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1729
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1730 this->widget[VVW_WIDGET_EMPTY_BOTTOM_RIGHT].top = 122;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1731 this->widget[VVW_WIDGET_EMPTY_BOTTOM_RIGHT].bottom = 121;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1732
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1733 this->widget[VVW_WIDGET_RESIZE].top = 122;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1734 this->widget[VVW_WIDGET_RESIZE].bottom = 133;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1735
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1736 this->widget[VVW_WIDGET_TURN_AROUND].top = 68;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1737 this->widget[VVW_WIDGET_TURN_AROUND].bottom = 85;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1738 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1739
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1740 case VEH_ROAD:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1741 this->widget[VVW_WIDGET_CAPTION].data = STR_9002;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1742
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1743 this->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_901C_CURRENT_VEHICLE_ACTION;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1744
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1745 this->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1746
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1747 this->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_ROADVEH_TODEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1748 this->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_901F_SEND_VEHICLE_TO_DEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1749
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1750 this->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_REFIT_ROAD_VEHICLE_TO_CARRY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1751
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1752 this->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_901D_SHOW_VEHICLE_S_ORDERS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1753
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1754 this->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_9021_SHOW_ROAD_VEHICLE_DETAILS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1755
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1756 this->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_ROADVEH;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1757 this->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_ROAD_VEHICLE_INFO;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1758
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1759 this->SetWidgetHiddenState(VVW_WIDGET_FORCE_PROCEED, true);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1760 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1761
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1762 case VEH_SHIP:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1763 this->widget[VVW_WIDGET_CAPTION].data = STR_980F;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1764
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1765 this->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_9827_CURRENT_SHIP_ACTION_CLICK;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1766
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1767 this->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_9829_CENTER_MAIN_VIEW_ON_SHIP;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1768
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1769 this->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_SHIP_TODEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1770 this->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_982A_SEND_SHIP_TO_DEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1771
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1772 this->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_983A_REFIT_CARGO_SHIP_TO_CARRY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1773
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1774 this->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_9828_SHOW_SHIP_S_ORDERS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1775
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1776 this->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_982B_SHOW_SHIP_DETAILS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1777
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1778 this->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_SHIP;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1779 this->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_SHIP_INFO;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1780
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1781 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1782 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1783 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1784 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1785 break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1786
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1787 case VEH_AIRCRAFT:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1788 this->widget[VVW_WIDGET_CAPTION].data = STR_A00A;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1789
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1790 this->widget[VVW_WIDGET_START_STOP_VEH].tooltips = STR_A027_CURRENT_AIRCRAFT_ACTION;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1791
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1792 this->widget[VVW_WIDGET_CENTER_MAIN_VIEH].tooltips = STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1793
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1794 this->widget[VVW_WIDGET_GOTO_DEPOT].data = SPR_SEND_AIRCRAFT_TODEPOT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1795 this->widget[VVW_WIDGET_GOTO_DEPOT].tooltips = STR_A02A_SEND_AIRCRAFT_TO_HANGAR;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1796
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1797 this->widget[VVW_WIDGET_REFIT_VEH].tooltips = STR_A03B_REFIT_AIRCRAFT_TO_CARRY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1798
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1799 this->widget[VVW_WIDGET_SHOW_ORDERS].tooltips = STR_A028_SHOW_AIRCRAFT_S_ORDERS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1800
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1801 this->widget[VVW_WIDGET_SHOW_DETAILS].tooltips = STR_A02B_SHOW_AIRCRAFT_DETAILS;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1802
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1803 this->widget[VVW_WIDGET_CLONE_VEH].data = SPR_CLONE_AIRCRAFT;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1804 this->widget[VVW_WIDGET_CLONE_VEH].tooltips = STR_CLONE_AIRCRAFT_INFO;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1805
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1806 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1807 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1808 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1809 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1810 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1811
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1812 default: NOT_REACHED();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1813 }
9333
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1814
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1815 this->FindWindowPlacementAndResize(desc);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1816 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1817
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1818 ~VehicleViewWindow()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1819 {
10528
faf41b99dbc3 (svn r14785) -Fix [FS#2132]: vehicle list for station gets closed when station view is closed even when the vehicle list is stickied. Other vehicle lists are not deleted when their 'opening' window gets closed so do the same with the station view.
rubidium <rubidium@openttd.org>
parents: 10527
diff changeset
1820 DeleteWindowById(WC_VEHICLE_ORDERS, this->window_number, false);
faf41b99dbc3 (svn r14785) -Fix [FS#2132]: vehicle list for station gets closed when station view is closed even when the vehicle list is stickied. Other vehicle lists are not deleted when their 'opening' window gets closed so do the same with the station view.
rubidium <rubidium@openttd.org>
parents: 10527
diff changeset
1821 DeleteWindowById(WC_VEHICLE_REFIT, this->window_number, false);
faf41b99dbc3 (svn r14785) -Fix [FS#2132]: vehicle list for station gets closed when station view is closed even when the vehicle list is stickied. Other vehicle lists are not deleted when their 'opening' window gets closed so do the same with the station view.
rubidium <rubidium@openttd.org>
parents: 10527
diff changeset
1822 DeleteWindowById(WC_VEHICLE_DETAILS, this->window_number, false);
faf41b99dbc3 (svn r14785) -Fix [FS#2132]: vehicle list for station gets closed when station view is closed even when the vehicle list is stickied. Other vehicle lists are not deleted when their 'opening' window gets closed so do the same with the station view.
rubidium <rubidium@openttd.org>
parents: 10527
diff changeset
1823 DeleteWindowById(WC_VEHICLE_TIMETABLE, this->window_number, false);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1824 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1825
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1826 virtual void OnPaint()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1827 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1828 /** Message strings for heading to depot indexed by vehicle type. */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1829 static const StringID _heading_for_depot_strings[] = {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1830 STR_HEADING_FOR_TRAIN_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1831 STR_HEADING_FOR_ROAD_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1832 STR_HEADING_FOR_SHIP_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1833 STR_HEADING_FOR_HANGAR,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1834 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1835
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1836 /** Message strings for heading to depot and servicing indexed by vehicle type. */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1837 static const StringID _heading_for_depot_service_strings[] = {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1838 STR_HEADING_FOR_TRAIN_DEPOT_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1839 STR_HEADING_FOR_ROAD_DEPOT_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1840 STR_HEADING_FOR_SHIP_DEPOT_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1841 STR_HEADING_FOR_HANGAR_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1842 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1843
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1844 const Vehicle *v = GetVehicle(this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1845 StringID str;
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1846 bool is_localcompany = v->owner == _local_company;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1847 bool refitable_and_stopped_in_depot = IsVehicleRefitable(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1848
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1849 this->SetWidgetDisabledState(VVW_WIDGET_GOTO_DEPOT, !is_localcompany);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1850 this->SetWidgetDisabledState(VVW_WIDGET_REFIT_VEH,
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1851 !refitable_and_stopped_in_depot || !is_localcompany);
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1852 this->SetWidgetDisabledState(VVW_WIDGET_CLONE_VEH, !is_localcompany);
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1853
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1854 if (v->type == VEH_TRAIN) {
10207
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1855 this->SetWidgetDisabledState(VVW_WIDGET_FORCE_PROCEED, !is_localcompany);
c54d140df948 (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium <rubidium@openttd.org>
parents: 10184
diff changeset
1856 this->SetWidgetDisabledState(VVW_WIDGET_TURN_AROUND, !is_localcompany);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1857 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1858
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1859 /* draw widgets & caption */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1860 SetDParam(0, v->index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1861 this->DrawWidgets();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1862
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1863 if (v->vehstatus & VS_CRASHED) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1864 str = STR_8863_CRASHED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1865 } else if (v->type != VEH_AIRCRAFT && v->breakdown_ctr == 1) { // check for aircraft necessary?
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1866 str = STR_885C_BROKEN_DOWN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1867 } else if (v->vehstatus & VS_STOPPED) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1868 if (v->type == VEH_TRAIN) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1869 if (v->cur_speed == 0) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1870 if (v->u.rail.cached_power == 0) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1871 str = STR_TRAIN_NO_POWER;
7759
b9b3e3b75b92 (svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
belugas <belugas@openttd.org>
parents: 7642
diff changeset
1872 } else {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1873 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1874 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1875 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1876 SetDParam(0, v->GetDisplaySpeed());
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1877 str = STR_TRAIN_STOPPING + _settings_client.gui.vehicle_speed;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1878 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1879 } else { // no train
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1880 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1881 }
9808
fa8743b489ff (svn r13950) -Add [YAPP]: Trains can now also be in a 'stuck' state when waiting on a path reservation. (michi_cc)
rubidium <rubidium@openttd.org>
parents: 9778
diff changeset
1882 } else if (v->type == VEH_TRAIN && HasBit(v->u.rail.flags, VRF_TRAIN_STUCK)) {
fa8743b489ff (svn r13950) -Add [YAPP]: Trains can now also be in a 'stuck' state when waiting on a path reservation. (michi_cc)
rubidium <rubidium@openttd.org>
parents: 9778
diff changeset
1883 str = STR_TRAIN_STUCK;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1884 } else { // vehicle is in a "normal" state, show current order
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1885 switch (v->current_order.GetType()) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1886 case OT_GOTO_STATION: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1887 SetDParam(0, v->current_order.GetDestination());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1888 SetDParam(1, v->GetDisplaySpeed());
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1889 str = STR_HEADING_FOR_STATION + _settings_client.gui.vehicle_speed;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1890 } break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1891
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1892 case OT_GOTO_DEPOT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1893 if (v->type == VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1894 /* Aircrafts always go to a station, even if you say depot */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1895 SetDParam(0, v->current_order.GetDestination());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1896 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1897 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1898 Depot *depot = GetDepot(v->current_order.GetDestination());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1899 SetDParam(0, depot->town_index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1900 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1901 }
10285
615db2678973 (svn r14524) -Add: stop-in-depot as part of orders (PhilSophus)
rubidium <rubidium@openttd.org>
parents: 10208
diff changeset
1902 if (v->current_order.GetDepotActionType() & ODATFB_HALT) {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1903 str = _heading_for_depot_strings[v->type] + _settings_client.gui.vehicle_speed;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1904 } else {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1905 str = _heading_for_depot_service_strings[v->type] + _settings_client.gui.vehicle_speed;
7759
b9b3e3b75b92 (svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
belugas <belugas@openttd.org>
parents: 7642
diff changeset
1906 }
b9b3e3b75b92 (svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
belugas <belugas@openttd.org>
parents: 7642
diff changeset
1907 } break;
b9b3e3b75b92 (svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
belugas <belugas@openttd.org>
parents: 7642
diff changeset
1908
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1909 case OT_LOADING:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1910 str = STR_882F_LOADING_UNLOADING;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1911 break;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1912
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1913 case OT_GOTO_WAYPOINT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1914 assert(v->type == VEH_TRAIN);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1915 SetDParam(0, v->current_order.GetDestination());
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1916 str = STR_HEADING_FOR_WAYPOINT + _settings_client.gui.vehicle_speed;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1917 SetDParam(1, v->GetDisplaySpeed());
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1918 break;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1919 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1920
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1921 case OT_LEAVESTATION:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1922 if (v->type != VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1923 str = STR_LEAVING;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1924 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1925 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1926 /* fall-through if aircraft. Does this even happen? */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1927
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1928 default:
10544
836dfaca2a32 (svn r14801) -Codechange: don't reference Vehicle::num_orders directly but through a method GetNumOrders() (PhilSophus)
rubidium <rubidium@openttd.org>
parents: 10528
diff changeset
1929 if (v->GetNumOrders() == 0) {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
1930 str = STR_NO_ORDERS + _settings_client.gui.vehicle_speed;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1931 SetDParam(0, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1932 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1933 str = STR_EMPTY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1934 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1935 break;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1936 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1937 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1938
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1939 /* draw the flag plus orders */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1940 DrawSprite(v->vehstatus & VS_STOPPED ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, 2, this->widget[VVW_WIDGET_START_STOP_VEH].top + 1);
11426
38844e2f76fd (svn r15784) -Fix (r15779): TextAlignment and TA_* already exist on windows
glx <glx@openttd.org>
parents: 11424
diff changeset
1941 DrawString(this->widget[VVW_WIDGET_START_STOP_VEH].left + 8, this->widget[VVW_WIDGET_START_STOP_VEH].right, this->widget[VVW_WIDGET_START_STOP_VEH].top + 1, str, TC_FROMSTRING, SA_CENTER);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1942 this->DrawViewport();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1943 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1944
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1945 virtual void OnClick(Point pt, int widget)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1946 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1947 const Vehicle *v = GetVehicle(this->window_number);
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1948
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1949 switch (widget) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1950 case VVW_WIDGET_START_STOP_VEH: // start stop
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1951 DoCommandP(v->tile, v->index, 0,
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1952 _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1953 break;
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11361
diff changeset
1954 case VVW_WIDGET_CENTER_MAIN_VIEH: {// center main view
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1955 const Window *mainwindow = FindWindowById(WC_MAIN_WINDOW, 0);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1956 /* code to allow the main window to 'follow' the vehicle if the ctrl key is pressed */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1957 if (_ctrl_pressed && mainwindow->viewport->zoom == ZOOM_LVL_NORMAL) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1958 mainwindow->viewport->follow_vehicle = v->index;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1959 } else {
11375
1d342902ac94 (svn r15725) -Fix: centering on a vehicle didn't respect its z coordinate
smatz <smatz@openttd.org>
parents: 11373
diff changeset
1960 ScrollMainWindowTo(v->x_pos, v->y_pos, v->z_pos);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1961 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1962 } break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1963
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1964 case VVW_WIDGET_GOTO_DEPOT: // goto hangar
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1965 DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0,
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1966 _vehicle_command_translation_table[VCT_CMD_GOTO_DEPOT][v->type]);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1967 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1968 case VVW_WIDGET_REFIT_VEH: // refit
10184
fbd1b77a2509 (svn r14395) -Fix [FS#2285]: crashes and GUI desyncs when order is deleted/modified while the timetable window is open
smatz <smatz@openttd.org>
parents: 10161
diff changeset
1969 ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID, this);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1970 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1971 case VVW_WIDGET_SHOW_ORDERS: // show orders
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1972 if (_ctrl_pressed) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1973 ShowTimetableWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1974 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1975 ShowOrdersWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1976 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1977 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1978 case VVW_WIDGET_SHOW_DETAILS: // show details
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1979 ShowVehicleDetailsWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1980 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1981 case VVW_WIDGET_CLONE_VEH: // clone vehicle
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1982 DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0,
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1983 _vehicle_command_translation_table[VCT_CMD_CLONE_VEH][v->type],
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1984 CcCloneVehicle);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1985 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1986 case VVW_WIDGET_TURN_AROUND: // turn around
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1987 assert(v->type == VEH_TRAIN || v->type == VEH_ROAD);
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1988 DoCommandP(v->tile, v->index, 0,
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1989 _vehicle_command_translation_table[VCT_CMD_TURN_AROUND][v->type]);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1990 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1991 case VVW_WIDGET_FORCE_PROCEED: // force proceed
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1992 assert(v->type == VEH_TRAIN);
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10430
diff changeset
1993 DoCommandP(v->tile, v->index, 0, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL));
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1994 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1995 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1996 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1997
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1998 virtual void OnResize(Point new_size, Point delta)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1999 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2000 this->viewport->width += delta.x;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2001 this->viewport->height += delta.y;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2002 this->viewport->virtual_width += delta.x;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2003 this->viewport->virtual_height += delta.y;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2004 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2005
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2006 virtual void OnTick()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2007 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2008 const Vehicle *v = GetVehicle(this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2009 bool veh_stopped = v->IsStoppedInDepot();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2010
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2011 /* Widget VVW_WIDGET_GOTO_DEPOT must be hidden if the vehicle is already
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2012 * stopped in depot.
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2013 * Widget VVW_WIDGET_CLONE_VEH should then be shown, since cloning is
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2014 * allowed only while in depot and stopped.
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2015 * This sytem allows to have two buttons, on top of each other.
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2016 * The same system applies to widget VVW_WIDGET_REFIT_VEH and VVW_WIDGET_TURN_AROUND.*/
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2017 if (veh_stopped != this->IsWidgetHidden(VVW_WIDGET_GOTO_DEPOT) || veh_stopped == this->IsWidgetHidden(VVW_WIDGET_CLONE_VEH)) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2018 this->SetWidgetHiddenState( VVW_WIDGET_GOTO_DEPOT, veh_stopped); // send to depot
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2019 this->SetWidgetHiddenState(VVW_WIDGET_CLONE_VEH, !veh_stopped); // clone
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2020 if (v->type == VEH_ROAD || v->type == VEH_TRAIN) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2021 this->SetWidgetHiddenState( VVW_WIDGET_REFIT_VEH, !veh_stopped); // refit
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2022 this->SetWidgetHiddenState(VVW_WIDGET_TURN_AROUND, veh_stopped); // force turn around
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2023 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2024 this->SetDirty();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2025 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2026 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2027 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2028
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2029
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2030 /** Shows the vehicle view window of the given vehicle. */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2031 void ShowVehicleViewWindow(const Vehicle *v)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2032 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2033 AllocateWindowDescFront<VehicleViewWindow>((v->type == VEH_TRAIN) ? &_train_view_desc : &_vehicle_view_desc, v->index);
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2034 }
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2035
9274
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2036 void StopGlobalFollowVehicle(const Vehicle *v)
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2037 {
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2038 Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2039 if (w != NULL && w->viewport->follow_vehicle == v->index) {
11375
1d342902ac94 (svn r15725) -Fix: centering on a vehicle didn't respect its z coordinate
smatz <smatz@openttd.org>
parents: 11373
diff changeset
2040 ScrollMainWindowTo(v->x_pos, v->y_pos, v->z_pos, true); // lock the main view on the vehicle's last position
9274
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2041 w->viewport->follow_vehicle = INVALID_VEHICLE;
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2042 }
85a62fb8608f (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
2043 }