annotate src/vehicle_gui.cpp @ 10348:ac68018602dc draft

(svn r14599) -Fix (r14598)[FS#2417]: Show again group-membership in the vehicle-lists. (Based on patch by PhilSophus)
author frosch <frosch@openttd.org>
date Thu, 20 Nov 2008 16:48:22 +0000
parents 615db2678973
children 399a56984e58
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 "variables.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
14 #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
15 #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
16 #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
17 #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
18 #include "train.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
19 #include "newgrf_callbacks.h"
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 "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
21 #include "newgrf_text.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
22 #include "ship.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
23 #include "aircraft.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
24 #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
25 #include "depot_base.h"
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
26 #include "cargotype.h"
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
27 #include "group.h"
8111
5475263e4cab (svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
28 #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
29 #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
30 #include "functions.h"
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
31 #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
32 #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
33 #include "autoreplace_gui.h"
8213
87c85bb42d6f (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium <rubidium@openttd.org>
parents: 8212
diff changeset
34 #include "core/alloc_func.hpp"
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
35 #include "core/mem_func.hpp"
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
36 #include "core/sort_func.hpp"
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
37 #include "string_func.h"
8270
5613b863190d (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium <rubidium@openttd.org>
parents: 8264
diff changeset
38 #include "settings_type.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
39 #include "widgets/dropdown_func.h"
8784
6280c0d48a6d (svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium <rubidium@openttd.org>
parents: 8771
diff changeset
40 #include "order_func.h"
9117
453c3d26f4bc (svn r12977) -Codechange: remove quite some redundant (duplicate) function declarations.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
41 #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
42 #include "vehiclelist.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
43
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
44 #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
45 #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
46
9182
d3a153aa328d (svn r13045) -Codechange: make list_d (now GUIList) more generic and uniform.
rubidium <rubidium@openttd.org>
parents: 9161
diff changeset
47 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
48
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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 static GUIVehicleList::SortFunction VehicleLengthSorter;
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
60 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
61
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
62 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
63 &VehicleNumberSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
64 &VehicleNameSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
65 &VehicleAgeSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
66 &VehicleProfitThisYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
67 &VehicleProfitLastYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
68 &VehicleCargoSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
69 &VehicleReliabilitySorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
70 &VehicleMaxSpeedSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
71 &VehicleModelSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
72 &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
73 &VehicleLengthSorter,
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
74 &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
75 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
76
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
77 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
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 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
87 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
88 STR_SORT_BY_LENGTH,
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
89 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
90 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
91 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
92
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
93 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
94 {
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
95 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
96
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
97 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
98
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
99 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
100
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
101 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
102 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
103
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
104 /* 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
105 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
106
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
107 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
108 {
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
109 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
110
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
111 /* 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
112 _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
113 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
114
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
115 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
116 {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
117 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
118 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
119 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
120
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
121 /** 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
122 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
123 {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
124 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
125
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
126 /* draw profit-based colored icons */
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 if (v->age <= 365 * 2) {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
128 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
129 } 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
130 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
131 } 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
132 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
133 } else {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
134 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
135 }
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
136 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
137 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
138
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
139 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
140 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
141 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
142 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
143 EngineID engine;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
144 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
145
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
146 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
147 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
148 RefitOption *items;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
149 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
150
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
151 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
152 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
153 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
154 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
155 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
156 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
157 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
158 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
159
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
160 do {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
161 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
162 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
163
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
164 /* 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
165 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
166
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
167 /* 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
168 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
169 /* 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
170 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
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 /* 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
173 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
174 /* 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
175 * 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
176 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
177 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
178 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
179
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
180 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
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 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
183 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
184 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
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 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
187 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
188
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
189 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
190 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
191
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
192 /* 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
193 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
194 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
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
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
197 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
198
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
199 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
200 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
201 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
202 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
203 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
204 }
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 /* 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
207 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
208 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
209 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
210 /* 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
211 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
212
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
213 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
214 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
215 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
216
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
217 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
218 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
219 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
220 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
221 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
222 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
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 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
225 }
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
226 } 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
227
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
228 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
229 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
230
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 list;
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
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
234 /** 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
235 * 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
236 * @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
237 * @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
238 * @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
239 * @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
240 * @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
241 * @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
242 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
243 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
244 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
245 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
246 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
247 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
248 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
249 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
250
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
251 /* 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
252 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
253 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
254 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
255 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
256 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
257 }
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 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
260 /* 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
261 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
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 /* 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
264 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
265 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
266 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
267 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
268 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
269
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
270 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
271 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
272
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
273 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
274 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
275
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
276 struct RefitWindow : public Window {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
277 int sel;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
278 RefitOption *cargo;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
279 RefitList *list;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
280 uint length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
281 VehicleOrderID order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
282
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
283 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
284 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
285 this->caption_color = v->owner;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
286 this->vscroll.cap = 8;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
287 this->resize.step_height = 14;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
288
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
289 this->order = order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
290 this->sel = -1;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
291 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
292 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
293 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
294
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
295 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
296 case VEH_TRAIN:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
297 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
298 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
299 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
300 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
301
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
302 case VEH_ROAD:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
303 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
304 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
305 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
306 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
307
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
308 case VEH_SHIP:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
309 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
310 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
311 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
312 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
313
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
314 case VEH_AIRCRAFT:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
315 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
316 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
317 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
318 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
319
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
320 default: NOT_REACHED();
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
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
323 this->FindWindowPlacementAndResize(desc);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
324 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
325
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
326 ~RefitWindow()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
327 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
328 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
329 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
330 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
331
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
332 virtual void OnPaint()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
333 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
334 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
335
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
336 if (v->type == VEH_TRAIN) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
337 uint length = CountVehiclesInChain(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
338
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
339 if (length != this->length) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
340 /* 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
341 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
342 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
343 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
344 this->length = length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
345 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
346 }
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 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
349
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
350 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
351 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
352
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
353 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
354
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
355 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
356 CommandCost cost;
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 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
359 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
360
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
361 if (CmdSucceeded(cost)) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
362 SetDParam(0, this->cargo->cargo);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
363 SetDParam(1, _returned_refit_capacity);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
364 SetDParam(2, cost.GetCost());
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
365 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
366 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
367 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
368 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
369
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
370 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
371 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
372 switch (widget) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
373 case 3: { // listbox
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
374 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
375 if (y >= 0) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
376 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
377 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
378 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
379 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
380 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
381
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
382 case 6: // refit button
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
383 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
384 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
385
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
386 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
387 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
388
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
389 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
390 default: NOT_REACHED();
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
391 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
392 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
393 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
394 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
395 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
396 if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8, NULL, command)) delete this;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
397 } else {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
398 if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8 | this->order << 16, NULL, 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
399 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
400 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
401 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
402 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
403 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
404
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
405 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
406 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
407 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
408 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
409 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
410 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
411
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
412
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
413 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
414 { 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
415 { 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
416 { 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
417 { 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
418 { 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
419 { 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
420 { 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
421 { 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
422 { 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
423 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
424
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
425 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
426 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
427 WC_VEHICLE_REFIT, WC_VEHICLE_VIEW,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
428 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
429 _vehicle_refit_widgets,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
430 };
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 /** Show the refit window for a vehicle
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
433 * @param *v The vehicle to show the refit window for
6491
696f0e1b046e (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium <rubidium@openttd.org>
parents: 6484
diff changeset
434 * @param order of the vehicle ( ? )
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
435 */
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
436 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
437 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
438 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
439 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
440 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
441 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
442
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
443 /** 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
444 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
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 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
447 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
448
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
449 /* 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
450 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
451 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
452 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
453 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
454 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
455 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
456
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
457 /** 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
458 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
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 /* List of cargo types of this engine */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
461 uint32 cmask = EngInfo(engine)->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
462 /* 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
463 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
464 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
465 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
466
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
467 /* 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
468 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
469
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_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
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 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
473 /* 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
474 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
475 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
476 /* 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
477 * 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
478 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
479 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
480 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
481 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
482
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
483 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
484
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 /* 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
486 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
487 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
488
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
489 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
490
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
491 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
492 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
493
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
494 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
495 }
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
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
498 /* 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
499 *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
500
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
501 /* 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
502 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
503
9653
dd040a5861eb (svn r13720) -Fix (r13715): string wasn't correctly passed to draw function.
rubidium <rubidium@openttd.org>
parents: 9652
diff changeset
504 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
505 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
506 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
507
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
508
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
509 /** Sort vehicles by their number */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
510 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
511 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
512 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
513 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
514
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
515 /** Sort vehicles by their name */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
516 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
517 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
518 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
519
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
520 if (*a != _last_vehicle[0]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
521 _last_vehicle[0] = *a;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
522 SetDParam(0, (*a)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
523 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
524 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
525
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
526 if (*b != _last_vehicle[1]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
527 _last_vehicle[1] = *b;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
528 SetDParam(0, (*b)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
529 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
530 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
531
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
532 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
533 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
534 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
535
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
536 /** Sort vehicles by their age */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
537 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
538 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
539 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
540 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
541 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
542
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
543 /** Sort vehicles by this year profit */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
544 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
545 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
546 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
547 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
548 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
549
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
550 /** Sort vehicles by last year profit */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
551 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
552 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
553 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
554 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
555 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
556
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
557 /** Sort vehicles by their cargo */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
558 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
559 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
560 const Vehicle *v;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
561 AcceptedCargo diff;
9569
fcc94596ddfd (svn r13593) -Fix [FS#2095](r13524): sorting by cargo capacity was broken
smatz <smatz@openttd.org>
parents: 9563
diff changeset
562 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
563
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
564 /* 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
565 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
566 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
567
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
568 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
569 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
570 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
571 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
572 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
573
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
574 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
575 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
576
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
577 /** Sort vehicles by their reliability */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
578 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
579 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
580 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
581 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
582 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
583
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
584 /** Sort vehicles by their max speed */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
585 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
586 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
587 int r = 0;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
588 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
589 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
590 } else {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
591 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
592 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
593 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
594 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
595
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
596 /** Sort vehicles by model */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
597 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
598 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
599 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
600 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
601 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
602
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
603 /** Sort vehciles by their value */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
604 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
605 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
606 const Vehicle *u;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
607 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
608
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
609 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
610 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
611
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
612 int r = ClampToI32(diff);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
613 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
614 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
615
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
616 /** Sort vehicles by their length */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
617 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
618 {
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 int r = 0;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
620 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
621 case VEH_TRAIN:
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
622 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
623 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
624
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
625 case VEH_ROAD: {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
626 const Vehicle *u;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
627 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
628 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
629 } 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
630
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 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
632 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
633 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
634 }
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
10161
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
636 /** Sort vehicles by the time they can still live */
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
637 static int CDECL VehicleTimeToLiveSorter(const Vehicle* const *a, const Vehicle* const *b)
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
638 {
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
639 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
640 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
641 }
8897c483bae7 (svn r14352) -Feature: Allow sorting vehicles by remaining life time.
belugas <belugas@openttd.org>
parents: 10151
diff changeset
642
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6148
diff changeset
643 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
644 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
645 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
646 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
647
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
648 /**
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
649 * Assign a vehicle window a new vehicle
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
650 * @param window_class WindowClass to search for
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
651 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
652 * @param to_index the new vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
653 */
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
654 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
655 {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
656 Window *w = FindWindowById(window_class, from_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
657 if (w != NULL) {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
658 w->window_number = to_index;
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
659 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
660 if (to_index != INVALID_VEHICLE) InvalidateThisWindowData(w, 0);
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
661 }
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 * 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
666 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
667 * @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
668 */
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
669 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
670 {
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
671 ChangeVehicleWindow(WC_VEHICLE_VIEW, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
672 ChangeVehicleWindow(WC_VEHICLE_ORDERS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
673 ChangeVehicleWindow(WC_VEHICLE_REFIT, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
674 ChangeVehicleWindow(WC_VEHICLE_DETAILS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
675 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
676 }
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 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
679 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
680 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
681 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
682 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
683 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
684 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
685 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
686 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
687 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
688 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
689 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
690 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
691 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
692 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
693 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
694 };
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 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
697 { 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
698 { 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
699 { 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
700 { 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
701 { 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
702 { 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
703 { 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
704 { 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
705 /* 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
706 { 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
707
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
708 { 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
709 { 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
710
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
711 { 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
712 { 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
713 { 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
714 { 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
715 { 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
716 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
717
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
718 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
719 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
720 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
721 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
722
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
723 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
724
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
725 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
726 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
727 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
728
8836
890a77315801 (svn r12584) -Codechange: do not access the order type directly.
rubidium <rubidium@openttd.org>
parents: 8786
diff changeset
729 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
730 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
731
8840
c3d2f0eb69a1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium <rubidium@openttd.org>
parents: 8836
diff changeset
732 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
733 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
734
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
735 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
736 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
737 }
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
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
741 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
742 {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
743 switch (v->type) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
744 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
745 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
746 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
747 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
748 default: NOT_REACHED();
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
749 }
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 * 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
754 * @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
755 * @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
756 */
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
757 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
758 {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
759 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
760 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
761 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
762 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
763 StringID str;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
764
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
765 SetDParam(0, v->GetDisplayProfitThisYear());
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
766 SetDParam(1, v->GetDisplayProfitLastYear());
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
767
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
768 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
769 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
770
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
771 if (v->name != NULL) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
772 /* 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
773 SetDParam(0, v->index);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
774 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
775 } 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
776 /* 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
777 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
778 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
779 }
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 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
782
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
783 if (v->IsInDepot()) {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
784 str = STR_021F;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
785 } else {
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
786 str = (v->age > v->max_age - 366) ? STR_00E3 : STR_00E2;
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
787 }
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 SetDParam(0, v->unitnumber);
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
790 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
791
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
792 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
793
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
794 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
795 }
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
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
798 /**
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
799 * 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
800 *
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
801 * 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
802 * 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
803 * 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
804 * 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
805 * 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
806 */
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
807 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
808
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
809 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
810 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
811 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
812 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
813
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
814 this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
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
815 this->caption_color = 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
816
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
817 /* Hide the widgets that we will not use in this window
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
818 * 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
819 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
820 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
821 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
822 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
823 this->SetWidgetsHiddenState(true,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
824 VLW_WIDGET_AVAILABLE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
825 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
826 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
827 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
828 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
829 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
830 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
831
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
832 /* 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
833 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
834 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
835 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
836 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
837 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
838
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
839 case VEH_ROAD:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
840 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
841 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
842 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
843
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
844 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
845 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
846 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
847 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
848
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
849 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
850 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
851 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
852 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
853
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
854 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
855 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
856
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
857 switch (window_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
858 case VLW_SHARED_ORDERS:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
859 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
860 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
861
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
862 case VLW_STANDARD: /* Company Name - standard widget setup */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
863 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
864 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
865 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
866 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
867 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
868 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
869 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
870 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
871
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
872 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
873 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
874 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
875
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
876 case VLW_STATION_LIST: /* Station Name */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
877 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
878 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
879 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
880 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
881 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
882 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
883 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
884 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
885
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
886 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
887 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
888 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
889 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
890 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
891 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
892 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
893 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
894 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
895 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
896 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
897
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
898 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
899 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
900 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
901 /* Fallthrough */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
902 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
903 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
904 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
905 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
906 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
907 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
908 this->vscroll.cap = 4;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
909 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
910 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
911 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
912 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
913
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
914
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
915 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
916
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
917 /* Set up sorting. Make the window-specific _sorting variable
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
918 * point to the correct global _sorting struct so we are freed
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
919 * from having conditionals during window operation */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
920 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
921 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
922 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
923 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
924 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
925 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
926 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
927
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
928 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
929 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
930 this->vehicles.NeedResort();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
931
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
932 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
933 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
934 }
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 ~VehicleListWindow()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
937 {
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
938 *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
939 }
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 virtual void OnPaint()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
942 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
943 int x = 2;
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
944 const Owner owner = (Owner)this->caption_color;
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
945 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
946 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
947
10122
dff578338ffb (svn r14306) -Codechange: unify the code to draw the vehicle list.
rubidium <rubidium@openttd.org>
parents: 10118
diff changeset
948 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
949 this->SortVehicleList();
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
950 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
951
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
952 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
953
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
954 /* draw the widgets */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
955 switch (window_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
956 case VLW_SHARED_ORDERS: /* Shared Orders */
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
957 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
958 /* We can't open this window without vehicles using this order
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
959 * and we should close the window when deleting the order */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
960 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
961 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
962 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
963 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
964
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
965 case VLW_STANDARD: /* Company Name */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
966 SetDParam(0, owner);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
967 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
968 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
969
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
970 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
971 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
972 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
973 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
974
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
975 case VLW_STATION_LIST: /* Station Name */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
976 SetDParam(0, index);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
977 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
978 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
979
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
980 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
981 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
982 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
983 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
984 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
985 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
986 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
987 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
988 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
989 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
990 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
991 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
992 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
993 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
994 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
995 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
996 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
997
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
998 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
999 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
1000 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1001 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1002 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1003
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
1004 this->DrawWidgets();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1005
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1006 /* 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
1007 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
1008 /* 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
1009 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
1010
10143
a2e7b550afee (svn r14329) -Fix (r14306): selections in the group GUI weren't shown anymore.
rubidium <rubidium@openttd.org>
parents: 10122
diff changeset
1011 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
1012 }
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 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
1015 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1016 switch (widget) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1017 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
1018 this->vehicles.ToggleSortOrder();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1019 this->SetDirty();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1020 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1021 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
1022 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
1023 return;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1024 case VLW_WIDGET_LIST: { /* Matrix to show vehicles */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1025 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
1026 const Vehicle *v;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1027
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1028 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
1029
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1030 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
1031
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1032 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
1033
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1034 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
1035
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1036 ShowVehicleViewWindow(v);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1037 } break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1038
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1039 case VLW_WIDGET_AVAILABLE_VEHICLES:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1040 ShowBuildVehicleWindow(0, this->vehicle_type);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1041 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
1042
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1043 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
1044 static StringID action_str[] = {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1045 STR_REPLACE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1046 STR_SEND_FOR_SERVICING,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1047 STR_NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1048 INVALID_STRING_ID
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1049 };
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 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
1052 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
1053 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
1054 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
1055 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
1056 };
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 /* 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
1059 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
1060 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
1061 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
1062 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1063
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1064 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
1065 case VLW_WIDGET_START_ALL:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1066 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, NULL, CMD_MASS_START_STOP);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1067 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1068 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1069 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1070
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1071 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
1072 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1073 switch (widget) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1074 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
1075 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
1076 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1077 case VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN:
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1078 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
1079
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1080 switch (index) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1081 case 0: /* Replace window */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1082 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
1083 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1084 case 1: /* Send for servicing */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1085 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
1086 (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
1087 NULL,
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;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1090 case 2: /* Send to Depots */
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 NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1094 GetCmdSendToDepot(this->vehicle_type));
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1095 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
1096
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1097 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1098 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1099 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1100 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1101 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1102 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
1103 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1104
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1105 virtual void OnTick()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1106 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1107 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
1108 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
1109 StationID station = ((this->window_number & VLW_MASK) == VLW_STATION_LIST) ? GB(this->window_number, 16, 16) : INVALID_STATION;
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
1110 Owner owner = (Owner)this->caption_color;
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1111
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
1112 DEBUG(misc, 3, "Periodic resort %d list company %d at station %d", this->vehicle_type, owner, station);
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1113 this->SetDirty();
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 }
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 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
1118 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1119 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
1120 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
1121 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1122
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1123 virtual void OnInvalidateData(int data)
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1124 {
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
1125 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
1126 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
1127 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
1128 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
1129 }
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
1130
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1131 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
1132 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
1133 } else {
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1134 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
1135 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1136 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1137 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1138
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 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
1140 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
1141 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
1142 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1143 _vehicle_list_widgets,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1144 };
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 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
1147 {
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
1148 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
1149
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 _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
1151 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
1152 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
1153 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1154
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
1155 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
1156 {
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
1157 /* 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
1158 * 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
1159 * 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
1160 */
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
1161
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
1162 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
1163 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
1164 } 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
1165 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
1166 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1167 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1168
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
1169 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
1170 {
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 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
1172 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
1173 }
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
1174
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
1175 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
1176 {
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
1177 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
1178 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
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 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
1181 {
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
1182 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
1183 }
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
1184
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
1185 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
1186 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1187 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
1188
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
1189 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
1190 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
1191 } else {
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 *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
1193 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
1194 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
1195 }
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
1196 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
1197 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1198
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1199
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
1200 /* 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
1201
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 /** 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
1203 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
1204 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
1205 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
1206 VLD_WIDGET_RENAME_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
1207 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
1208 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
1209 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
1210 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
1211 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
1212 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
1213 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
1214 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
1215 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
1216 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
1217 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
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
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 /** 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
1221 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
1222 { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // VLD_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
1223 { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 364, 0, 13, 0x0, STR_018C_WINDOW_TITLE_DRAG_THIS}, // VLD_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
1224 { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 365, 404, 0, 13, STR_01AA_NAME, STR_NULL /* filled in later */}, // VLD_WIDGET_RENAME_VEHICLE
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;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1341 this->caption_color = v->owner;
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 */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1415 SetDParam(1, v->age / 366);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1416 SetDParam(0, (v->age + 365 < v->max_age) ? STR_AGE : STR_AGE_RED);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1417 SetDParam(2, v->max_age / 366);
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);
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
1428 DrawString(2, 25, (_settings_game.vehicle.realistic_acceleration && 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
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1500 DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
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
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
1533 _cmd_text = str;
10151
8a25a93ea7b4 (svn r14337) -Codechange: use CmdRename* and CMD_RENAME_* for vehicle, president and company renaming commands, too
smatz <smatz@openttd.org>
parents: 10148
diff changeset
1534 DoCommandP(0, this->window_number, 0, NULL, CMD_RENAME_VEHICLE | CMD_MSG(_name_vehicle_error[GetVehicle(this->window_number)->type]));
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1535 }
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
1536
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1537 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
1538 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1539 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
1540 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
1541
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1542 this->vscroll.cap += delta.y / 14;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1543 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
1544 }
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1545 };
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
1546
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
1547 /** Vehicle details window descriptor. */
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 static const WindowDesc _vehicle_details_desc = {
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 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
1550 WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW,
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
1551 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
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
1552 _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
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
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 /** 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
1556 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
1557 {
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
1558 DeleteWindowById(WC_VEHICLE_ORDERS, v->index);
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
1559 DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1560 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
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
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
1563
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1564 /* 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
1565
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1566 /** Vehicle view widgets. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1567 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
1568 { 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
1569 { 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
1570 { 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
1571 { 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
1572 { 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
1573 { 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
1574 { 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
1575 { 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
1576 { 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
1577 { 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
1578 { 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
1579 { 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
1580 { 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
1581 { 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
1582 { 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
1583 { 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
1584 { WIDGETS_END},
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1588 /** Vehicle view window descriptor for all vehicles but trains. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1589 static const WindowDesc _vehicle_view_desc = {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1590 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
1591 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
1592 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1593 _vehicle_view_widgets,
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1596 /** 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
1597 * 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
1598 */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1599 static const WindowDesc _train_view_desc = {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1600 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
1601 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
1602 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1603 _vehicle_view_widgets,
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1607 /* 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
1608 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
1609 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
1610 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
1611 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
1612 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
1613
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1614 /** 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
1615 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
1616 ZOOM_LVL_TRAIN,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1617 ZOOM_LVL_ROADVEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1618 ZOOM_LVL_SHIP,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1619 ZOOM_LVL_AIRCRAFT,
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1622 /* 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
1623 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
1624 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
1625 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
1626 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
1627 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
1628
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1629 /** 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
1630 enum VehicleCommandTranslation {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1631 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
1632 VCT_CMD_GOTO_DEPOT,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1633 VCT_CMD_CLONE_VEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1634 VCT_CMD_TURN_AROUND,
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1637 /** 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
1638 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
1639 { // 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
1640 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
1641 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
1642 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
1643 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
1644 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1645 { // VCT_CMD_GOTO_DEPOT
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1646 /* 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
1647 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
1648 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
1649 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
1650 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
1651 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1652 { // VCT_CMD_CLONE_VEH
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_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
1654 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
1655 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
1656 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
1657 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1658 { // VCT_CMD_TURN_AROUND
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1659 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
1660 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
1661 0xffffffff, // invalid for ships
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1662 0xffffffff // invalid for aircrafts
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 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1665
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1666 /** 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
1667 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
1668 {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1669 /* Why is this so different for different vehicles?
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1670 * Does maybe work one solution for all?
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1671 */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1672 switch (v->type) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1673 case VEH_TRAIN: return false;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1674 case VEH_ROAD: return EngInfo(v->engine_type)->refit_mask != 0 && v->IsStoppedInDepot();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1675 case VEH_SHIP: return ShipVehInfo(v->engine_type)->refittable && v->IsStoppedInDepot();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1676 case VEH_AIRCRAFT: return v->IsStoppedInDepot();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1677 default: NOT_REACHED();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1678 }
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
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1681 struct VehicleViewWindow : Window {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1682 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
1683 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1684 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
1685
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1686 this->caption_color = v->owner;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1687 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
1688 (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
1689 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
1690
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1691 /*
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1692 * 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
1693 * 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
1694 */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1695 switch (v->type) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1696 case VEH_TRAIN:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1697 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
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_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
1700
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1701 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
1702
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1703 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
1704 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
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_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
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_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
1709
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1710 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
1711
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1712 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
1713 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
1714
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1715 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
1716
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 /* 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
1719 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
1720 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
1721
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1722 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
1723 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
1724
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1725 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
1726 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
1727
9315
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_ORDERS].top = 86;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1729 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
1730
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1731 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
1732 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
1733
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1734 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
1735 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
1736
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1737 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
1738 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
1739
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1740 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
1741 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
1742 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1743
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1744 case VEH_ROAD:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1745 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
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_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
1748
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1749 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
1750
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1751 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
1752 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
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_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
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_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
1757
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1758 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
1759
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1760 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
1761 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
1762
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1763 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
1764 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1765
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1766 case VEH_SHIP:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1767 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
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_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
1770
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1771 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
1772
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1773 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
1774 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
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_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
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_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
1779
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1780 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
1781
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1782 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
1783 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
1784
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1785 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1786 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1787 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1788 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1789 break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1790
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1791 case VEH_AIRCRAFT:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1792 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
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_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
1795
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1796 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
1797
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1798 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
1799 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
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_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
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_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
1804
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1805 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
1806
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1807 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
1808 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
1809
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1810 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1811 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1812 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1813 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1814 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1815
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1816 default: NOT_REACHED();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1817 }
9333
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1818
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1819 this->FindWindowPlacementAndResize(desc);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1820 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1821
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1822 ~VehicleViewWindow()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1823 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1824 DeleteWindowById(WC_VEHICLE_ORDERS, this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1825 DeleteWindowById(WC_VEHICLE_REFIT, this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1826 DeleteWindowById(WC_VEHICLE_DETAILS, this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1827 DeleteWindowById(WC_VEHICLE_TIMETABLE, this->window_number);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1828 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1829
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1830 virtual void OnPaint()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1831 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1832 /** 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
1833 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
1834 STR_HEADING_FOR_TRAIN_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1835 STR_HEADING_FOR_ROAD_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1836 STR_HEADING_FOR_SHIP_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1837 STR_HEADING_FOR_HANGAR,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1838 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1839
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1840 /** 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
1841 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
1842 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
1843 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
1844 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
1845 STR_HEADING_FOR_HANGAR_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1846 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1847
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1848 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
1849 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
1850 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
1851 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
1852
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
1853 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
1854 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
1855 !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
1856 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
1857
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1858 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
1859 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
1860 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
1861
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1862 /* Cargo refit button is disabled, until we know we can enable it below. */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1863
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
1864 if (is_localcompany) {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1865 /* See if any vehicle can be refitted */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1866 for (const Vehicle *u = v; u != NULL; u = u->Next()) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1867 if (EngInfo(u->engine_type)->refit_mask != 0 ||
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1868 (RailVehInfo(v->engine_type)->railveh_type != RAILVEH_WAGON && v->cargo_cap != 0)) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1869 this->EnableWidget(VVW_WIDGET_REFIT_VEH);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1870 /* We have a refittable carriage, bail out */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1871 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1872 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1873 }
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 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1876
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1877 /* draw widgets & caption */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1878 SetDParam(0, v->index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1879 this->DrawWidgets();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1880
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1881 if (v->vehstatus & VS_CRASHED) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1882 str = STR_8863_CRASHED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1883 } 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
1884 str = STR_885C_BROKEN_DOWN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1885 } 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
1886 if (v->type == VEH_TRAIN) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1887 if (v->cur_speed == 0) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1888 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
1889 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
1890 } else {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1891 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1892 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1893 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1894 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
1895 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
1896 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1897 } else { // no train
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1898 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1899 }
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
1900 } 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
1901 str = STR_TRAIN_STUCK;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1902 } 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
1903 switch (v->current_order.GetType()) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1904 case OT_GOTO_STATION: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1905 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
1906 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
1907 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
1908 } break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1909
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1910 case OT_GOTO_DEPOT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1911 if (v->type == VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1912 /* 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
1913 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
1914 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1915 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1916 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
1917 SetDParam(0, depot->town_index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1918 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1919 }
10285
615db2678973 (svn r14524) -Add: stop-in-depot as part of orders (PhilSophus)
rubidium <rubidium@openttd.org>
parents: 10208
diff changeset
1920 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
1921 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
1922 } 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
1923 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
1924 }
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
1925 } 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
1926
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1927 case OT_LOADING:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1928 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
1929 break;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1930
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1931 case OT_GOTO_WAYPOINT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1932 assert(v->type == VEH_TRAIN);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1933 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
1934 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
1935 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
1936 break;
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 case OT_LEAVESTATION:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1940 if (v->type != VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1941 str = STR_LEAVING;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1942 break;
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 /* 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
1945
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1946 default:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1947 if (v->num_orders == 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
1948 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
1949 SetDParam(0, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1950 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1951 str = STR_EMPTY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1952 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1953 break;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1954 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1955 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1956
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1957 /* draw the flag plus orders */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1958 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);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1959 DrawStringCenteredTruncated(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);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1960 this->DrawViewport();
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
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1963 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
1964 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1965 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
1966
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1967 switch (widget) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1968 case VVW_WIDGET_START_STOP_VEH: // start stop
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1969 DoCommandP(v->tile, v->index, 0, NULL,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1970 _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
1971 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1972 case VVW_WIDGET_CENTER_MAIN_VIEH: {/* center main view */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1973 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
1974 /* 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
1975 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
1976 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
1977 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1978 ScrollMainWindowTo(v->x_pos, v->y_pos);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1979 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1980 } break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1981
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1982 case VVW_WIDGET_GOTO_DEPOT: // goto hangar
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1983 DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1984 _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
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_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
1987 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
1988 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1989 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
1990 if (_ctrl_pressed) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1991 ShowTimetableWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1992 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1993 ShowOrdersWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1994 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1995 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1996 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
1997 ShowVehicleDetailsWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1998 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1999 case VVW_WIDGET_CLONE_VEH: // clone vehicle
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2000 DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, CcCloneVehicle,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2001 _vehicle_command_translation_table[VCT_CMD_CLONE_VEH][v->type]);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2002 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2003 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
2004 assert(v->type == VEH_TRAIN || v->type == VEH_ROAD);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2005 DoCommandP(v->tile, v->index, 0, NULL,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2006 _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
2007 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2008 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
2009 assert(v->type == VEH_TRAIN);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2010 DoCommandP(v->tile, v->index, 0, NULL, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL));
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2011 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2012 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2013 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2014
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2015 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
2016 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2017 this->viewport->width += delta.x;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2018 this->viewport->height += delta.y;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2019 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
2020 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
2021 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2022
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2023 virtual void OnTick()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2024 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2025 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
2026 bool veh_stopped = v->IsStoppedInDepot();
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 /* 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
2029 * stopped in depot.
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2030 * 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
2031 * 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
2032 * 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
2033 * 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
2034 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
2035 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
2036 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
2037 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
2038 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
2039 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
2040 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2041 this->SetDirty();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2042 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2043 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2044 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2045
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2046
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2047 /** 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
2048 void ShowVehicleViewWindow(const Vehicle *v)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2049 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2050 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
2051 }
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2052
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
2053 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
2054 {
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
2055 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
2056 if (w != NULL && w->viewport->follow_vehicle == v->index) {
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
2057 ScrollMainWindowTo(v->x_pos, v->y_pos, true); // lock the main view on the vehicle's last position
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
2058 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
2059 }
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
2060 }