annotate src/vehicle_gui.cpp @ 9978:793681882d37 draft

(svn r14135) -Codechange: Add owner to waypoints. Previously, it was guessed from rail underneath it.
author belugas <belugas@openttd.org>
date Sat, 23 Aug 2008 02:15:46 +0000
parents 352e0aecf28a
children 9bd8842e9d02
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"
8254
7d580c9c41fb (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium <rubidium@openttd.org>
parents: 8224
diff changeset
8 #include "player_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"
8224
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
15 #include "viewport_func.h"
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
16 #include "gfx_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
17 #include "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
18 #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
19 #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
20 #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
21 #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
22 #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
23 #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
24 #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
25 #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
26 #include "group.h"
8111
5475263e4cab (svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
27 #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
28 #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
29 #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
30 #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
31 #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
32 #include "autoreplace_gui.h"
8213
87c85bb42d6f (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium <rubidium@openttd.org>
parents: 8212
diff changeset
33 #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
34 #include "core/mem_func.hpp"
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
35 #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
36 #include "string_func.h"
8270
5613b863190d (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium <rubidium@openttd.org>
parents: 8264
diff changeset
37 #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
38 #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
39 #include "order_func.h"
9117
453c3d26f4bc (svn r12977) -Codechange: remove quite some redundant (duplicate) function declarations.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
40 #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
41 #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
42
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
43 #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
44 #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
45
9182
d3a153aa328d (svn r13045) -Codechange: make list_d (now GUIList) more generic and uniform.
rubidium <rubidium@openttd.org>
parents: 9161
diff changeset
46 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
47
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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 static GUIVehicleList::SortFunction VehicleLengthSorter;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
59
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
60 GUIVehicleList::SortFunction* const VehicleListBase::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
61 &VehicleNumberSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
62 &VehicleNameSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
63 &VehicleAgeSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
64 &VehicleProfitThisYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
65 &VehicleProfitLastYearSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
66 &VehicleCargoSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
67 &VehicleReliabilitySorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
68 &VehicleMaxSpeedSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
69 &VehicleModelSorter,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
70 &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
71 &VehicleLengthSorter,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
72 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
73
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
74 const StringID VehicleListBase::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
75 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
76 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
77 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
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 STR_SORT_BY_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
86 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
87 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
88
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
89 void BuildVehicleList(VehicleListBase *vl, PlayerID 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
90 {
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
91 if (!vl->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
92
5747
61edd889181d (svn r8295) -Cleanup: merged arguments station, order and depot_airport_index for GenerateVehicleSortList() and BuildVehicleList() into one uint16 argument
bjarni <bjarni@openttd.org>
parents: 5745
diff changeset
93 DEBUG(misc, 3, "Building vehicle list for player %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
94
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
95 GenerateVehicleSortList(&vl->vehicles, vl->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
96
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
97 vl->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
98 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
99
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
100 /* 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
101 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
102
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
103 void SortVehicleList(VehicleListBase *vl)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
104 {
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
105 if (vl->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
106
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
107 /* 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
108 _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
109 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
110
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
111 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
112 {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9333
diff changeset
113 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
114 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
115 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
116
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
117 /** 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
118 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
119 {
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
120 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
121
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
122 /* 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
123 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
124 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
125 } 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
126 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
127 } 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
128 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
129 } else {
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_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
131 }
5668
3d6d9bff3dd8 (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138 <peter1138@openttd.org>
parents: 5609
diff changeset
132 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
133 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
134
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
135 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
136 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
137 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
138 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
139 EngineID engine;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
140 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
141
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
142 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
143 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
144 RefitOption *items;
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
145 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
146
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
147 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
148 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
149 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
150 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
151 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
152 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
153 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
154 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
155
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
156 do {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
157 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
158 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
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 /* 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
161 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
162
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
163 /* 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
164 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
165 /* 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
166 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
167
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
168 /* 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
169 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
170 /* 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
171 * 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
172 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
173 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
174 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
175
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
176 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
177
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
178 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
179 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
180 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
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 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
183 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
184
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
185 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
186 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
187
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
188 /* 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
189 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
190 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
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
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
193 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
194
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
195 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
196 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
197 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
198 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
199 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
200 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
201
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
202 /* 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
203 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
204 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
205 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
206 /* 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
207 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
208
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
209 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
210 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
211 }
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 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
214 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
215 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
216 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
217 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
218 num_lines++;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
219 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
220 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
221 }
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
222 } 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
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 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
225 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
226
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
227 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
228 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
229
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
230 /** 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
231 * 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
232 * @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
233 * @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
234 * @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
235 * @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
236 * @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
237 * @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
238 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
239 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
240 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
241 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
242 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
243 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
244 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
245 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
246
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
247 /* 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
248 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
249 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
250 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
251 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
252 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
253 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
254
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
255 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
256 /* 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
257 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
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 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
260 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
261 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
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 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
264 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
265
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
266 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
267 }
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 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
270 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
271
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
272 struct RefitWindow : public Window {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
273 int sel;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
274 RefitOption *cargo;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
275 RefitList *list;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
276 uint length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
277 VehicleOrderID order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
278
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
279 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
280 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
281 this->caption_color = v->owner;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
282 this->vscroll.cap = 8;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
283 this->resize.step_height = 14;
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->order = order;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
286 this->sel = -1;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
287 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
288 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
289 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
290
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
291 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
292 case VEH_TRAIN:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
293 this->widget[3].tooltips = STR_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
294 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
295 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
296 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
297
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
298 case VEH_ROAD:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
299 this->widget[3].tooltips = STR_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
300 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
301 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
302 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
303
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
304 case VEH_SHIP:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
305 this->widget[3].tooltips = STR_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
306 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
307 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
308 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
309
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
310 case VEH_AIRCRAFT:
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
311 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
312 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
313 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
314 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
315
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
316 default: NOT_REACHED();
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
317 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
318
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
319 this->FindWindowPlacementAndResize(desc);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
320 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
321
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
322 ~RefitWindow()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
323 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
324 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
325 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
326 }
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 virtual void OnPaint()
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
329 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
330 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
331
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
332 if (v->type == VEH_TRAIN) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
333 uint length = CountVehiclesInChain(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
334
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
335 if (length != this->length) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
336 /* 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
337 free(this->list->items);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
338 free(this->list);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
339 this->list = BuildRefitList(v);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
340 this->length = length;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
341 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
342 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
343
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
344 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
345
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
346 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
347 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
348
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
349 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
350
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
351 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
352 CommandCost cost;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
353
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
354 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
355 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
356
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
357 if (CmdSucceeded(cost)) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
358 SetDParam(0, this->cargo->cargo);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
359 SetDParam(1, _returned_refit_capacity);
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
360 SetDParam(2, cost.GetCost());
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
361 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
362 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
363 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
364 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
365
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
366 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
367 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
368 switch (widget) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
369 case 3: { // listbox
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
370 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
371 if (y >= 0) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
372 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
373 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
374 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
375 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
376 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
377
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
378 case 6: // refit button
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
379 if (this->cargo != NULL) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
380 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
381
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
382 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
383 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
384
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
385 switch (v->type) {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
386 default: NOT_REACHED();
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
387 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
388 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
389 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
390 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
391 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
392 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
393 } else {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
394 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
395 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
396 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
397 break;
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
398 }
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
399 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
400
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
401 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
402 {
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
403 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
404 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
405 }
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
406 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
407
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
408
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
409 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
410 { 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
411 { 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
412 { 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
413 { 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
414 { 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
415 { 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
416 { 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
417 { 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
418 { 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
419 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
420
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
421 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
422 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
423 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
424 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
425 _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
426 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
427
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
428 /** 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
429 * @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
430 * @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
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 void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
433 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
434 DeleteWindowById(WC_VEHICLE_REFIT, v->index);
9262
4c503ff7c207 (svn r13128) -Codechange: Make a class of the refit window
peter1138 <peter1138@openttd.org>
parents: 9254
diff changeset
435 new RefitWindow(&_vehicle_refit_desc, v, order);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
436 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
437
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
438 /** 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
439 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
440 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
441 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
442 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
443
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
444 /* 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
445 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
446 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
447 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
448 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
449 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
450 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
451
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
452 /** 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
453 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
454 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
455 /* 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
456 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
457 /* 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
458 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
459 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
460 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
461
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
462 /* 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
463 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
464
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
465 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
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 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
468 /* 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
469 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
470 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
471 /* 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
472 * 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
473 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
474 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
475 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
476 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
477
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
478 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
479
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
480 /* 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
481 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
482 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
483
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
484 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
485
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
486 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
487 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
488
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
489 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
490 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
491 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
492
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
493 /* 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
494 *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
495
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
496 /* 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
497 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
498
9653
dd040a5861eb (svn r13720) -Fix (r13715): string wasn't correctly passed to draw function.
rubidium <rubidium@openttd.org>
parents: 9652
diff changeset
499 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
500 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
501 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
502
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
503
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
504 /** Sort vehicles by their number */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
505 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
506 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
507 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
508 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
509
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
510 /** Sort vehicles by their name */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
511 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
512 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
513 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
514
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
515 if (*a != _last_vehicle[0]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
516 _last_vehicle[0] = *a;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
517 SetDParam(0, (*a)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
518 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
519 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
520
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
521 if (*b != _last_vehicle[1]) {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
522 _last_vehicle[1] = *b;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
523 SetDParam(0, (*b)->index);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
524 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
525 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
526
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
527 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
528 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
529 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
530
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
531 /** Sort vehicles by their age */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
532 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
533 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
534 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
535 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
536 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
537
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
538 /** 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
539 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
540 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
541 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
542 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
543 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
544
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
545 /** 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
546 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
547 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
548 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
549 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
550 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
551
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
552 /** Sort vehicles by their cargo */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
553 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
554 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
555 const Vehicle *v;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
556 AcceptedCargo diff;
9569
fcc94596ddfd (svn r13593) -Fix [FS#2095](r13524): sorting by cargo capacity was broken
smatz <smatz@openttd.org>
parents: 9563
diff changeset
557 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
558
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
559 /* 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
560 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
561 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
562
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
563 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
564 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
565 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
566 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
567 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
568
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
569 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
570 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
571
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
572 /** Sort vehicles by their reliability */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
573 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
574 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
575 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
576 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
577 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
578
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
579 /** 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
580 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
581 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
582 int r = 0;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
583 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
584 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
585 } else {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
586 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
587 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
588 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
589 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
590
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
591 /** Sort vehicles by model */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
592 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
593 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
594 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
595 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
596 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
597
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
598 /** Sort vehciles by their value */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
599 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
600 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
601 const Vehicle *u;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
602 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
603
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
604 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
605 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
606
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
607 int r = ClampToI32(diff);
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
608 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
609 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
610
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
611 /** Sort vehicles by their length */
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
612 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
613 {
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
614 int r = 0;
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
615 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
616 case VEH_TRAIN:
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
617 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
618 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
619
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
620 case VEH_ROAD: {
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
621 const Vehicle *u;
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
622 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
623 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
624 } 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
625
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
626 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
627 }
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
628 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
629 }
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
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6148
diff changeset
631 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
632 {
9528
6a031a5f7412 (svn r13524) -Codechange: use the typesafe QSort for vehicle sortings
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
633 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
634 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
635
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
636 /**
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
637 * Assign a vehicle window a new vehicle
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
638 * @param window_class WindowClass to search for
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
639 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
640 * @param to_index the new vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
641 */
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
642 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
643 {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
644 Window *w = FindWindowById(window_class, from_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
645 if (w != NULL) {
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
646 w->window_number = to_index;
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
647 if (w->viewport != NULL) w->viewport->follow_vehicle = to_index;
9862
699b265b904b (svn r14007) -Fix [FS#2098]: Notify vehicle windows when their internal state is botched up from outside.
frosch <frosch@openttd.org>
parents: 9861
diff changeset
648 if (to_index != INVALID_VEHICLE) InvalidateThisWindowData(w);
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
649 }
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
650 }
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
651
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
652 /**
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
653 * 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
654 * @param from_index the old vehicle ID
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
655 * @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
656 */
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
657 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
658 {
9861
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
659 ChangeVehicleWindow(WC_VEHICLE_VIEW, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
660 ChangeVehicleWindow(WC_VEHICLE_ORDERS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
661 ChangeVehicleWindow(WC_VEHICLE_REFIT, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
662 ChangeVehicleWindow(WC_VEHICLE_DETAILS, from_index, to_index);
9d1b7d450eb3 (svn r14006) -Codechange: Deduplicate some code.
frosch <frosch@openttd.org>
parents: 9808
diff changeset
663 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
664 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
665
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
666 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
667 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
668 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
669 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
670 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
671 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
672 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
673 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
674 VLW_WIDGET_SCROLLBAR,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
675 VLW_WIDGET_OTHER_PLAYER_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
676 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
677 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
678 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
679 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
680 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
681 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
682 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
683
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
684 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
685 { 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
686 { 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
687 { 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
688 { 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
689 { 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
690 { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 248, 259, 14, 25, 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
691 { WWT_MATRIX, RESIZE_RB, COLOUR_GREY, 0, 247, 26, 169, 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
692 { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 248, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_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
693 /* Widget to be shown for other players hiding the following 6 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
694 { WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 0, 247, 170, 181, 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
695
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
696 { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 105, 170, 181, 0x0, STR_AVAILABLE_ENGINES_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
697 { WWT_DROPDOWN, RESIZE_TB, COLOUR_GREY, 106, 223, 170, 181, 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
698
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
699 { WWT_PUSHIMGBTN, RESIZE_TB, COLOUR_GREY, 224, 235, 170, 181, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_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
700 { WWT_PUSHIMGBTN, RESIZE_TB, COLOUR_GREY, 236, 247, 170, 181, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_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_PANEL, RESIZE_RTB, COLOUR_GREY, 248, 247, 170, 181, 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
702 { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 248, 259, 170, 181, 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
703 { 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
704 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
705
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
706 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
707 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
708 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
709 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
710
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
711 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
712
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
713 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
714 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
715 sel--;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
716
8836
890a77315801 (svn r12584) -Codechange: do not access the order type directly.
rubidium <rubidium@openttd.org>
parents: 8786
diff changeset
717 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
718 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
719
8840
c3d2f0eb69a1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium <rubidium@openttd.org>
parents: 8836
diff changeset
720 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
721 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
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 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
724 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
725 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
726 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
727 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
728
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
729 /**
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
730 * 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
731 *
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
732 * bitmask for w->window_number
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
733 * 0-7 PlayerID (owner)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
734 * 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
735 * 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
736 * 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
737 */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
738 struct VehicleListWindow : public Window, public VehicleListBase {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
739
9203
375bae14ff71 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium <rubidium@openttd.org>
parents: 9184
diff changeset
740 VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
741 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
742 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
743 PlayerID player = (PlayerID)GB(this->window_number, 0, 8);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
744
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
745 this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
746 this->caption_color = player;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
747
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
748 /* 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
749 * Some windows contains actions only fit for the owner */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
750 if (player == _local_player) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
751 this->HideWidget(VLW_WIDGET_OTHER_PLAYER_FILLER);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
752 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
753 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
754 this->SetWidgetsHiddenState(true,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
755 VLW_WIDGET_AVAILABLE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
756 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
757 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
758 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
759 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
760 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
761 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
762
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
763 /* 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
764 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
765 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
766 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
767 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
768 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
769
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
770 case VEH_ROAD:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
771 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
772 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
773 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
774
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
775 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
776 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
777 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
778 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
779
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
780 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
781 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
782 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
783 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
784
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
785 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
786 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
787
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
788 switch (window_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
789 case VLW_SHARED_ORDERS:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
790 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
791 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
792
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
793 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
794 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
795 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
796 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
797 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
798 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
799 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
800 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
801 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
802
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
803 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
804 this->widget[VLW_WIDGET_CAPTION].data = STR_WAYPOINT_VIEWPORT;
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
805 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
806
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
807 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
808 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
809 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
810 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
811 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
812 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
813 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
814 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
815 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
816
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
817 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
818 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
819 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
820 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
821 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
822 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
823 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
824 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
825 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
826 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
827 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
828
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
829 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
830 case VEH_TRAIN:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
831 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
832 /* Fallthrough */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
833 case VEH_ROAD:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
834 this->vscroll.cap = 7;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
835 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
836 this->resize.height = 220 - (PLY_WND_PRC__SIZE_OF_ROW_SMALL * 3); // Minimum of 4 vehicles
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
837 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
838 case VEH_SHIP:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
839 case VEH_AIRCRAFT:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
840 this->vscroll.cap = 4;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
841 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
842 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
843 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
844 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
845
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
846
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
847 this->widget[VLW_WIDGET_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
848
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
849 /* 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
850 * 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
851 * 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
852 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
853 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
854 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
855 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
856 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
857 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
858 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
859
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
860 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
861 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
862 this->vehicles.NeedResort();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
863
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
864 this->FindWindowPlacementAndResize(desc);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
865 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
866
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
867 ~VehicleListWindow()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
868 {
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
869 *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
870 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
871
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
872 virtual void OnPaint()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
873 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
874 int x = 2;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
875 int y = PLY_WND_PRC__OFFSET_TOP_WIDGET;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
876 int max;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
877 int i;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
878 const PlayerID owner = (PlayerID)this->caption_color;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
879 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
880 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
881
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
882 BuildVehicleList(this, owner, index, window_type);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
883 SortVehicleList(this);
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
884 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
885
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
886 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
887
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
888 /* draw the widgets */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
889 switch (window_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
890 case VLW_SHARED_ORDERS: /* Shared Orders */
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
891 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
892 /* 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
893 * 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
894 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
895 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
896 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
897 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
898
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
899 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
900 SetDParam(0, owner);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
901 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
902 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
903
9963
737454880ea0 (svn r14118) -Fix(r14104): typos creeping like bugs
belugas <belugas@openttd.org>
parents: 9949
diff changeset
904 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
905 SetDParam(0, index);
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
906 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
907
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
908 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
909 SetDParam(0, index);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
910 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
911 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
912
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
913 case VLW_DEPOT_LIST:
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
914 switch (this->vehicle_type) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
915 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
916 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
917 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
918 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
919 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
920 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
921 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
922 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
923 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
924 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
925 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
926 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
927 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
928 default: NOT_REACHED(); break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
929 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
930
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
931 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
932 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
933 VLW_WIDGET_STOP_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
934 VLW_WIDGET_START_ALL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
935 WIDGET_LIST_END);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
936
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
937 this->DrawWidgets();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
938
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
939 /* 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
940 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
941 /* 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
942 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
943
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
944 max = min(this->vscroll.pos + this->vscroll.cap, this->vehicles.Length());
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
945 for (i = this->vscroll.pos; i < max; ++i) {
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
946 const Vehicle *v = this->vehicles[i];
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
947 StringID str;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
948
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
949 SetDParam(0, v->GetDisplayProfitThisYear());
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
950 SetDParam(1, v->GetDisplayProfitLastYear());
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
951
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
952 DrawVehicleImage(v, x + 19, y + 6, INVALID_VEHICLE, this->widget[VLW_WIDGET_LIST].right - this->widget[VLW_WIDGET_LIST].left - 20, 0);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
953 DrawString(x + 19, y + this->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 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
954
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
955 if (v->name != NULL) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
956 /* The vehicle got a name so we will print it */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
957 SetDParam(0, v->index);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
958 DrawString(x + 19, y, STR_01AB, TC_FROMSTRING);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
959 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
960
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
961 if (this->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG) DrawSmallOrderList(v, x + 138, y);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
962
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
963 if (v->IsInDepot()) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
964 str = STR_021F;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
965 } else {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
966 str = (v->age > v->max_age - 366) ? STR_00E3 : STR_00E2;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
967 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
968
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
969 SetDParam(0, v->unitnumber);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
970 DrawString(x, y + 2, str, TC_FROMSTRING);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
971
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
972 DrawVehicleProfitButton(v, x, y + 13);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
973
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
974 y += this->resize.step_height;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
975 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
976 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
977
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
978 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
979 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
980 switch (widget) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
981 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
982 this->vehicles.ToggleSortOrder();
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
983 this->SetDirty();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
984 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
985 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
986 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
987 return;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
988 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
989 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
990 const Vehicle *v;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
991
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
992 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
993
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
994 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
995
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
996 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
997
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
998 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
999
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1000 ShowVehicleViewWindow(v);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1001 } break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1002
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1003 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
1004 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
1005 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
1006
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1007 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
1008 static StringID action_str[] = {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1009 STR_REPLACE_VEHICLES,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1010 STR_SEND_FOR_SERVICING,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1011 STR_NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1012 INVALID_STRING_ID
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1013 };
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1014
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1015 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
1016 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
1017 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
1018 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
1019 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
1020 };
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1021
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1022 /* 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
1023 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
1024 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
1025 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
1026 }
9183
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 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
1029 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
1030 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
1031 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1032 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1033 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1034
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1035 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
1036 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1037 switch (widget) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1038 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
1039 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
1040 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1041 case VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN:
9365
5a3d3513930c (svn r13266) -Codechange: Use SmallVector in GUIList
peter1138 <peter1138@openttd.org>
parents: 9354
diff changeset
1042 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
1043
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1044 switch (index) {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1045 case 0: /* Replace window */
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1046 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
1047 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1048 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
1049 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
1050 (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
1051 NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1052 GetCmdSendToDepot(this->vehicle_type));
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1053 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1054 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
1055 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
1056 (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
1057 NULL,
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1058 GetCmdSendToDepot(this->vehicle_type));
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1059 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
1060
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1061 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1062 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1063 break;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1064 default: NOT_REACHED();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1065 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1066 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
1067 }
9183
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 virtual void OnTick()
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1070 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1071 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
1072 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
1073 StationID station = ((this->window_number & VLW_MASK) == VLW_STATION_LIST) ? GB(this->window_number, 16, 16) : INVALID_STATION;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1074 PlayerID owner = (PlayerID)this->caption_color;
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1075
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1076 DEBUG(misc, 3, "Periodic resort %d list player %d at station %d", this->vehicle_type, owner, station);
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1077 this->SetDirty();
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1078 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1079 }
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1080
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1081 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
1082 {
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1083 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
1084 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
1085 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1086
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1087 virtual void OnInvalidateData(int data)
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1088 {
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
1089 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
1090 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
1091 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
1092 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
1093 }
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
1094
9530
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1095 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
1096 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
1097 } else {
e5323930bdb9 (svn r13534) -Codechange: Replace the main part of VehiclesListBase sorting with GUIList function calls
skidd13 <skidd13@openttd.org>
parents: 9528
diff changeset
1098 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
1099 }
9297
add307f2e6ea (svn r13165) -Codechange: replace some RebuildXXXList/ResortXXXList+InvalidateWindowXXX with InvalidateWindowXXXData.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1100 }
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1101 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1102
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1103 static const WindowDesc _player_vehicle_list_train_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
1104 WDP_AUTO, WDP_AUTO, 260, 182, 260, 182,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5847
diff changeset
1105 WC_TRAINS_LIST, 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
1106 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
1107 _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
1108 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1109
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1110 static const WindowDesc _player_vehicle_list_road_veh_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
1111 WDP_AUTO, WDP_AUTO, 260, 182, 260, 182,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5847
diff changeset
1112 WC_ROADVEH_LIST, 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
1113 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
1114 _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
1115 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1116
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1117 static const WindowDesc _player_vehicle_list_ship_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
1118 WDP_AUTO, WDP_AUTO, 260, 182, 260, 182,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5847
diff changeset
1119 WC_SHIPS_LIST, 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
1120 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
1121 _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
1122 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1123
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1124 static const WindowDesc _player_vehicle_list_aircraft_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
1125 WDP_AUTO, WDP_AUTO, 260, 182, 260, 182,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5847
diff changeset
1126 WC_AIRCRAFT_LIST, 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
1127 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
1128 _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
1129 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1130
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1131 static void ShowVehicleListWindowLocal(PlayerID player, 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
1132 {
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1133 VehicleListWindow *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
1134 WindowNumber num;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1135
9652
a05d108fe78f (svn r13719) -Codechange: rename IsValidPlayer to IsValidPlayerID in line with all other structs/classes that are in a pool.
rubidium <rubidium@openttd.org>
parents: 9648
diff changeset
1136 if (!IsValidPlayerID(player)) 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
1137
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
1138 num = (unique_number << 16) | (vehicle_type << 11) | VLW_flag | player;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1139
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1140 /* The vehicle list windows have been unified. Just some strings need
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1141 * to be changed which happens in the WE_CREATE event and resizing
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1142 * some of the windows to the correct size */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1143 switch (vehicle_type) {
5752
f8e26bee8df8 (svn r8303) -Codechange (r8293): default is moved to the front of the switch in ShowVehicleListWindowLocal()
bjarni <bjarni@openttd.org>
parents: 5747
diff changeset
1144 default: NOT_REACHED();
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
1145 case VEH_TRAIN:
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1146 w = AllocateWindowDescFront<VehicleListWindow>(&_player_vehicle_list_train_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
1147 if (w != NULL) ResizeWindow(w, 65, 38);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1148 break;
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
1149 case VEH_ROAD:
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1150 w = AllocateWindowDescFront<VehicleListWindow>(&_player_vehicle_list_road_veh_desc, num);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1151 if (w != NULL) ResizeWindow(w, 0, 38);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1152 break;
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
1153 case VEH_SHIP:
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1154 w = AllocateWindowDescFront<VehicleListWindow>(&_player_vehicle_list_ship_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
1155 break;
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
1156 case VEH_AIRCRAFT:
9183
5b8c9fe2e0f4 (svn r13046) -Codechange: make classes of the VehicleListWindow and the VehicleGroupWindow.
rubidium <rubidium@openttd.org>
parents: 9182
diff changeset
1157 w = AllocateWindowDescFront<VehicleListWindow>(&_player_vehicle_list_aircraft_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
1158 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1159 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1160
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1161 if (w != NULL) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1162 /* Set the minimum window size to the current window size */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1163 w->resize.width = w->width;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1164 w->resize.height = w->height;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1165 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1166 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1167
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1168 void ShowVehicleListWindow(PlayerID player, 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
1169 {
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
1170 /* If _settings_client.gui.advanced_vehicle_list > 1, display the Advanced list
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
1171 * if _settings_client.gui.advanced_vehicle_list == 1, display Advanced list only for local player
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
1172 * 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
1173 */
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
1174
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
1175 if ((_settings_client.gui.advanced_vehicle_list > (uint)(player != _local_player)) != _ctrl_pressed) {
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
1176 ShowPlayerGroup(player, vehicle_type);
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
1177 } else {
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
1178 ShowVehicleListWindowLocal(player, VLW_STANDARD, vehicle_type, 0);
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
1179 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1180 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1181
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
1182 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
1183 {
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
1184 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
1185 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
1186 }
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
1187
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
1188 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
1189 {
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
1190 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
1191 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1192
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1193 void ShowVehicleListWindow(PlayerID player, 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
1194 {
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
1195 ShowVehicleListWindowLocal(player, VLW_STATION_LIST, vehicle_type, station);
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
1196 }
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
1197
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1198 void ShowVehicleListWindow(PlayerID player, 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
1199 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1200 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
1201
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
1202 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
1203 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
1204 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1205 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
1206 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
1207 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
1208 }
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
1209 ShowVehicleListWindowLocal(player, 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
1210 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1211
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1212
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
1213 /* 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
1214
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 /** 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
1216 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
1217 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
1218 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
1219 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
1220 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
1221 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
1222 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
1223 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
1224 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
1225 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
1226 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
1227 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
1228 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
1229 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
1230 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
1231 };
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
1232
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
1233 /** 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
1234 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
1235 { 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
1236 { 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
1237 { 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
1238 { 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
1239 { 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
1240 { 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
1241 { 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
1242 { 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
1243 { 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
1244 { 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
1245 { 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
1246 { 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
1247 { 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
1248 { 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
1249 { 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
1250 };
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
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
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 /** 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
1254 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
1255 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
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 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
1258 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
1259 };
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
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 /** 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
1262 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
1263 { // 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
1264 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
1265 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
1266 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
1267 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
1268 },
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 { // 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
1270 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
1271 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
1272 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
1273 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
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 { // 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
1276 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
1277 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
1278 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
1279 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
1280 },
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 { // 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
1282 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
1283 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
1284 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
1285 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
1286 },
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
1287 };
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
1288
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
1289
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
1290 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
1291 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
1292 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
1293 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
1294 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
1295
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1296 struct VehicleDetailsWindow : Window {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1297 int tab;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1298
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1299 /** 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
1300 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
1301 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1302 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
1303
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1304 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1305 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1306 ResizeWindow(this, 0, 39);
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 this->vscroll.cap = 6;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1309 this->height += 12;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1310 this->resize.step_height = 14;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1311 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
1312
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1313 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
1314 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
1315 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1316
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1317 case VEH_ROAD: {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1318 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
1319 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
1320
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1321 if (!RoadVehHasArticPart(v)) break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1322
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1323 /* 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
1324 * 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
1325 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
1326
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1327 /* 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
1328 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
1329 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
1330 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1331
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1332 ResizeWindow(this, 0, height_extension);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1333 } break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1334
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1335 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1336 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
1337 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
1338 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
1339
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1340 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1341 ResizeWindow(this, 0, 11);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1342 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
1343 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
1344 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1345 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1346 }
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
1347
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1348 if (v->type != VEH_TRAIN) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1349 this->vscroll.cap = 1;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1350 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
1351 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1352
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1353 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
1354 this->caption_color = v->owner;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1355
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1356 this->tab = 0;
9333
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1357
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1358 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
1359 }
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 /** 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
1362 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
1363 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1364 switch (vehicle_type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1365 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
1366 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
1367 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
1368 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
1369 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
1370 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1371 return false; // kill a compiler warning
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1372 }
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
1373
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1374 /**
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1375 * 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
1376 *
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1377 * @param v current vehicle
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1378 * @param x The x coordinate
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1379 * @param y The y coordinate
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1380 * @param vscroll_pos (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1381 * @param vscroll_cap (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1382 * @param det_tab (train only)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1383 */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1384 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
1385 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1386 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1387 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
1388 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
1389 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
1390 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
1391 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1392 }
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
1393 }
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 /** Repaint vehicle details window. */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1396 virtual void OnPaint()
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1397 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1398 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
1399 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
1400
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1401 this->SetWidgetDisabledState(VLD_WIDGET_RENAME_VEHICLE, v->owner != _local_player);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1402
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1403 if (v->type == VEH_TRAIN) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1404 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
1405 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
1406 }
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
1407
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1408 this->SetWidgetsHiddenState(v->type != VEH_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1409 VLD_WIDGET_SCROLLBAR,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1410 VLD_WIDGET_DETAILS_CARGO_CARRIED,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1411 VLD_WIDGET_DETAILS_TRAIN_VEHICLES,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1412 VLD_WIDGET_DETAILS_CAPACITY_OF_EACH,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1413 VLD_WIDGET_DETAILS_TOTAL_CARGO,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1414 VLD_WIDGET_RESIZE,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1415 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
1416
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1417 /* 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
1418 this->SetWidgetsDisabledState(!IsVehicleServiceIntervalEnabled(v->type),
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1419 VLD_WIDGET_INCREASE_SERVICING_INTERVAL,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1420 VLD_WIDGET_DECREASE_SERVICING_INTERVAL,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1421 WIDGET_LIST_END);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1422
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
1423
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1424 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
1425 this->DrawWidgets();
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1426
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1427 /* Draw running cost */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1428 SetDParam(1, v->age / 366);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1429 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
1430 SetDParam(2, v->max_age / 366);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1431 SetDParam(3, v->GetDisplayRunningCost());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1432 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
1433
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1434 /* Draw max speed */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1435 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1436 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1437 SetDParam(2, v->GetDisplayMaxSpeed());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1438 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
1439 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
1440 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
1441 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
1442 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
1443 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
1444 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
1445
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1446 case VEH_ROAD:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1447 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1448 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1449 SetDParam(0, v->GetDisplayMaxSpeed());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1450 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
1451 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
1452
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1453 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1454 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1455
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1456 /* Draw profit */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1457 SetDParam(0, v->GetDisplayProfitThisYear());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1458 SetDParam(1, v->GetDisplayProfitLastYear());
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1459 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
1460
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1461 /* Draw breakdown & reliability */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1462 SetDParam(0, v->reliability * 100 >> 16);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1463 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
1464 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
1465
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1466 /* Draw service interval text */
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1467 SetDParam(0, v->service_interval);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1468 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
1469 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
1470
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1471 switch (v->type) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1472 case VEH_TRAIN:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1473 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
1474 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
1475
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1476 case VEH_ROAD:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1477 case VEH_SHIP:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1478 case VEH_AIRCRAFT:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1479 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
1480 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
1481 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
1482
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1483 default: NOT_REACHED();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1484 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1485 }
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
1486
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1487 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
1488 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1489 /** 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
1490 static const StringID _name_vehicle_title[] = {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1491 STR_8865_NAME_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1492 STR_902C_NAME_ROAD_VEHICLE,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1493 STR_9831_NAME_SHIP,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1494 STR_A030_NAME_AIRCRAFT
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1495 };
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
1496
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1497 switch (widget) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1498 case VLD_WIDGET_RENAME_VEHICLE: {// rename
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1499 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
1500 SetDParam(0, v->index);
9913
a1cc2bf90049 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium <rubidium@openttd.org>
parents: 9908
diff changeset
1501 ShowQueryString(STR_VEHICLE_NAME, _name_vehicle_title[v->type], MAX_LENGTH_VEHICLE_NAME_BYTES, MAX_LENGTH_VEHICLE_NAME_PIXELS, this, CS_ALPHANUMERAL);
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1502 } 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
1503
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1504 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
1505 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
1506 int mod = _ctrl_pressed ? 5 : 10;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1507 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
1508
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1509 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
1510 mod = GetServiceIntervalClamped(mod + v->service_interval);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1511 if (mod == v->service_interval) return;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1512
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1513 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
1514 } 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
1515
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1516 case VLD_WIDGET_DETAILS_CARGO_CARRIED:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1517 case VLD_WIDGET_DETAILS_TRAIN_VEHICLES:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1518 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
1519 case VLD_WIDGET_DETAILS_TOTAL_CARGO:
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1520 this->SetWidgetsDisabledState(false,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1521 VLD_WIDGET_DETAILS_CARGO_CARRIED,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1522 VLD_WIDGET_DETAILS_TRAIN_VEHICLES,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1523 VLD_WIDGET_DETAILS_CAPACITY_OF_EACH,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1524 VLD_WIDGET_DETAILS_TOTAL_CARGO,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1525 widget,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1526 WIDGET_LIST_END);
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1527
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1528 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
1529 this->SetDirty();
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1530 break;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1531 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1532 }
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
1533
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1534 virtual void OnQueryTextFinished(char *str)
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1535 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1536 /** 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
1537 static const StringID _name_vehicle_error[] = {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1538 STR_8866_CAN_T_NAME_TRAIN,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1539 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
1540 STR_9832_CAN_T_NAME_SHIP,
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1541 STR_A031_CAN_T_NAME_AIRCRAFT
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1542 };
7530
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1543
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1544 if (!StrEmpty(str)) {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1545 _cmd_text = str;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1546 DoCommandP(0, this->window_number, 0, NULL, CMD_NAME_VEHICLE | CMD_MSG(_name_vehicle_error[GetVehicle(this->window_number)->type]));
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1547 }
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1548 }
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
1549
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1550 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
1551 {
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1552 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
1553 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
1554
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1555 this->vscroll.cap += delta.y / 14;
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1556 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
1557 }
9254
65f7ee038ac5 (svn r13120) -Codechange: make a class of the VehicleDetailsWindow.
rubidium <rubidium@openttd.org>
parents: 9203
diff changeset
1558 };
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
1559
614aeff92fd3 (svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium <rubidium@openttd.org>
parents: 7516
diff changeset
1560 /** 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
1561 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
1562 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
1563 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
1564 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
1565 _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
1566 };
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
1567
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
1568 /** 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
1569 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
1570 {
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
1571 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
1572 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
1573 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
1574 }
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
1575
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
1576
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1577 /* 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
1578
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1579 /** Vehicle view widgets. */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1580 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
1581 { 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
1582 { 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
1583 { 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
1584 { 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
1585 { 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
1586 { 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
1587 { 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
1588 { 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
1589 { 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
1590 { 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
1591 { 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
1592 { 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
1593 { 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
1594 { 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
1595 { 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
1596 { 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
1597 { WIDGETS_END},
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
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1600
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1601 /** 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
1602 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
1603 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
1604 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
1605 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
1606 _vehicle_view_widgets,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1607 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1608
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1609 /** 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
1610 * 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
1611 */
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1612 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
1613 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
1614 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
1615 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
1616 _vehicle_view_widgets,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1617 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1618
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1619
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1620 /* 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
1621 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
1622 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
1623 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
1624 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
1625 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
1626
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1627 /** 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
1628 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
1629 ZOOM_LVL_TRAIN,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1630 ZOOM_LVL_ROADVEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1631 ZOOM_LVL_SHIP,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1632 ZOOM_LVL_AIRCRAFT,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1633 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1634
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1635 /* 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
1636 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
1637 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
1638 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
1639 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
1640 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
1641
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1642 /** 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
1643 enum VehicleCommandTranslation {
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1644 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
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 VCT_CMD_CLONE_VEH,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1647 VCT_CMD_TURN_AROUND,
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1648 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1649
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1650 /** 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
1651 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
1652 { // 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
1653 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
1654 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
1655 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
1656 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
1657 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1658 { // VCT_CMD_GOTO_DEPOT
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1659 /* 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
1660 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
1661 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
1662 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
1663 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
1664 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1665 { // VCT_CMD_CLONE_VEH
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1666 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
1667 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
1668 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
1669 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
1670 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1671 { // VCT_CMD_TURN_AROUND
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1672 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
1673 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
1674 0xffffffff, // invalid for ships
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1675 0xffffffff // invalid for aircrafts
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1676 },
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1677 };
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1678
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1679 /** 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
1680 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
1681 {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1682 /* 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
1683 * 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
1684 */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1685 switch (v->type) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1686 case VEH_TRAIN: return false;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1687 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
1688 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
1689 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
1690 default: NOT_REACHED();
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 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1693
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1694 struct VehicleViewWindow : Window {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1695 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
1696 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1697 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
1698
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1699 this->caption_color = v->owner;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1700 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
1701 (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
1702 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
1703
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1704 /*
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1705 * 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
1706 * 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
1707 */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1708 switch (v->type) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1709 case VEH_TRAIN:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1710 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
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_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
1713
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1714 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
1715
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1716 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
1717 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
1718
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1719 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
1720
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1721 this->widget[VVW_WIDGET_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
1722
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1723 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
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_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
1726 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
1727
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1728 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
1729
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 /* 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
1732 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
1733 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
1734
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1735 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
1736 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
1737
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1738 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
1739 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
1740
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1741 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
1742 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
1743
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1744 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
1745 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
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_EMPTY_BOTTOM_RIGHT].top = 122;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1748 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
1749
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1750 this->widget[VVW_WIDGET_RESIZE].top = 122;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1751 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
1752
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1753 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
1754 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
1755 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1756
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1757 case VEH_ROAD:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1758 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
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_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
1761
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1762 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
1763
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1764 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
1765 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
1766
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1767 this->widget[VVW_WIDGET_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
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_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
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_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
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_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
1774 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
1775
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1776 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
1777 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1778
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1779 case VEH_SHIP:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1780 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
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_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
1783
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1784 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
1785
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1786 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
1787 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
1788
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1789 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
1790
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1791 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
1792
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1793 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
1794
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1795 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
1796 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
1797
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1798 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1799 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1800 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1801 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1802 break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1803
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1804 case VEH_AIRCRAFT:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1805 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
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_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
1808
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1809 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
1810
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1811 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
1812 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
1813
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1814 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
1815
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1816 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
1817
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1818 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
1819
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1820 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
1821 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
1822
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1823 this->SetWidgetsHiddenState(true,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1824 VVW_WIDGET_TURN_AROUND,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1825 VVW_WIDGET_FORCE_PROCEED,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1826 WIDGET_LIST_END);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1827 break;
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 default: NOT_REACHED();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1830 }
9333
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1831
5236ba6c7d54 (svn r13225) -Fix (r13041): Missing calls to FindWindowPlacementAndResize() from lots
peter1138 <peter1138@openttd.org>
parents: 9317
diff changeset
1832 this->FindWindowPlacementAndResize(desc);
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1833 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1834
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1835 ~VehicleViewWindow()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1836 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1837 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
1838 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
1839 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
1840 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
1841 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1842
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1843 virtual void OnPaint()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1844 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1845 /** 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
1846 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
1847 STR_HEADING_FOR_TRAIN_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1848 STR_HEADING_FOR_ROAD_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1849 STR_HEADING_FOR_SHIP_DEPOT,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1850 STR_HEADING_FOR_HANGAR,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1851 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1852
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1853 /** 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
1854 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
1855 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
1856 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
1857 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
1858 STR_HEADING_FOR_HANGAR_SERVICE,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1859 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1860
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1861 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
1862 StringID str;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1863 bool is_localplayer = v->owner == _local_player;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1864 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
1865
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1866 this->SetWidgetDisabledState(VVW_WIDGET_GOTO_DEPOT, !is_localplayer);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1867 this->SetWidgetDisabledState(VVW_WIDGET_REFIT_VEH,
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1868 !refitable_and_stopped_in_depot || !is_localplayer);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1869 this->SetWidgetDisabledState(VVW_WIDGET_CLONE_VEH, !is_localplayer);
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1870
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1871 if (v->type == VEH_TRAIN) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1872 this->SetWidgetDisabledState(VVW_WIDGET_FORCE_PROCEED, !is_localplayer);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1873 this->SetWidgetDisabledState(VVW_WIDGET_TURN_AROUND, !is_localplayer);
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 /* 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
1876
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1877 if (is_localplayer) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1878 /* 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
1879 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
1880 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
1881 (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
1882 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
1883 /* 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
1884 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1885 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1886 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1887 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1888 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1889
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1890 /* draw widgets & caption */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1891 SetDParam(0, v->index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1892 this->DrawWidgets();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1893
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1894 if (v->vehstatus & VS_CRASHED) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1895 str = STR_8863_CRASHED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1896 } 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
1897 str = STR_885C_BROKEN_DOWN;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1898 } 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
1899 if (v->type == VEH_TRAIN) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1900 if (v->cur_speed == 0) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1901 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
1902 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
1903 } else {
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1904 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1905 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1906 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1907 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
1908 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
1909 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1910 } else { // no train
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1911 str = STR_8861_STOPPED;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1912 }
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
1913 } 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
1914 str = STR_TRAIN_STUCK;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1915 } 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
1916 switch (v->current_order.GetType()) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1917 case OT_GOTO_STATION: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1918 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
1919 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
1920 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
1921 } break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1922
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1923 case OT_GOTO_DEPOT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1924 if (v->type == VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1925 /* 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
1926 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
1927 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1928 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1929 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
1930 SetDParam(0, depot->town_index);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1931 SetDParam(1, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1932 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1933 if ((v->current_order.GetDepotActionType() & ODATFB_HALT) && !(v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) {
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 = _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
1935 } 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
1936 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
1937 }
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
1938 } 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
1939
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1940 case OT_LOADING:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1941 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
1942 break;
9315
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 case OT_GOTO_WAYPOINT: {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1945 assert(v->type == VEH_TRAIN);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1946 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
1947 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
1948 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
1949 break;
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1950 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1951
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1952 case OT_LEAVESTATION:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1953 if (v->type != VEH_AIRCRAFT) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1954 str = STR_LEAVING;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1955 break;
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 /* 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
1958
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1959 default:
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1960 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
1961 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
1962 SetDParam(0, v->GetDisplaySpeed());
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1963 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1964 str = STR_EMPTY;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1965 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1966 break;
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1967 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1968 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1969
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1970 /* draw the flag plus orders */
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1971 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
1972 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
1973 this->DrawViewport();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1974 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1975
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1976 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
1977 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1978 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
1979
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1980 switch (widget) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1981 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
1982 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
1983 _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
1984 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1985 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
1986 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
1987 /* 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
1988 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
1989 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
1990 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1991 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
1992 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1993 } break;
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
1994
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
1995 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
1996 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
1997 _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
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_REFIT_VEH: // refit
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2000 ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2001 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2002 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
2003 if (_ctrl_pressed) {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2004 ShowTimetableWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2005 } else {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2006 ShowOrdersWindow(v);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2007 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2008 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2009 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
2010 ShowVehicleDetailsWindow(v);
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 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
2013 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
2014 _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
2015 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2016 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
2017 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
2018 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
2019 _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
2020 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2021 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
2022 assert(v->type == VEH_TRAIN);
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2023 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
2024 break;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2025 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2026 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2027
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2028 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
2029 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2030 this->viewport->width += delta.x;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2031 this->viewport->height += delta.y;
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2032 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
2033 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
2034 }
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2035
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2036 virtual void OnTick()
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2037 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2038 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
2039 bool veh_stopped = v->IsStoppedInDepot();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2040
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2041 /* 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
2042 * stopped in depot.
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2043 * 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
2044 * 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
2045 * 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
2046 * 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
2047 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
2048 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
2049 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
2050 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
2051 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
2052 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
2053 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2054 this->SetDirty();
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2055 }
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
2056 }
9315
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2057 };
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2058
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2059
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2060 /** 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
2061 void ShowVehicleViewWindow(const Vehicle *v)
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2062 {
7458510a7cad (svn r13183) -Codechange: make a window class of the VehicleViewWindow.
rubidium <rubidium@openttd.org>
parents: 9297
diff changeset
2063 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
2064 }
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2065
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2066 void DrawVehicleImage(const Vehicle *v, int x, int y, VehicleID selection, int count, int skip)
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2067 {
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2068 switch (v->type) {
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2069 case VEH_TRAIN: DrawTrainImage(v, x, y, selection, count, skip); break;
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2070 case VEH_ROAD: DrawRoadVehImage(v, x, y, selection, count); break;
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2071 case VEH_SHIP: DrawShipImage(v, x, y, selection); break;
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2072 case VEH_AIRCRAFT: DrawAircraftImage(v, x, y, selection); break;
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2073 default: NOT_REACHED();
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2074 }
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8140
diff changeset
2075 }
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
2076
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
2077 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
2078 {
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
2079 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
2080 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
2081 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
2082 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
2083 }
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
2084 }