annotate src/depot_gui.cpp @ 15789:9c5d4355aa5c draft

(svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
author frosch <frosch@openttd.org>
date Thu, 12 Aug 2010 11:21:30 +0000 (2010-08-12)
parents 6c4bec3b8401
children 68a68f0554f9
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
12778
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
3 /*
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
4 * This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
8 */
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12762
diff changeset
9
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: 9094
diff changeset
10 /** @file depot_gui.cpp The GUI for depots. */
6125
46d001ebacf6 (svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas <belugas@openttd.org>
parents: 6043
diff changeset
11
14258
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14230
diff changeset
12 #include "stdafx.h"
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14230
diff changeset
13 #include "engine_base.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
14 #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
15 #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
16 #include "aircraft.h"
11984
b6d3e583be86 (svn r16390) -Codechange: move u.road to RoadVehicle.
rubidium <rubidium@openttd.org>
parents: 11922
diff changeset
17 #include "roadveh.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
18 #include "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: 8082
diff changeset
19 #include "textbuf_gui.h"
8224
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8144
diff changeset
20 #include "viewport_func.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
21 #include "command_func.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: 8828
diff changeset
22 #include "depot_base.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
23 #include "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
24 #include "newgrf_engine.h"
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
25 #include "spritecache.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
26 #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: 8121
diff changeset
27 #include "window_func.h"
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8131
diff changeset
28 #include "vehicle_func.h"
10208
39cf8eebfda5 (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium <rubidium@openttd.org>
parents: 10207
diff changeset
29 #include "company_func.h"
9127
428852b86d4d (svn r12987) -Codechange: split viewport and tile selection.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
30 #include "tilehighlight_func.h"
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
31 #include "window_gui.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: 9351
diff changeset
32 #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
33
8264
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8254
diff changeset
34 #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: 8254
diff changeset
35 #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: 8254
diff changeset
36
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
37 /*
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
38 * Since all depot window sizes aren't the same, we need to modify sizes a little.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
39 * It's done with the following arrays of widget indexes. Each of them tells if a widget side should be moved and in what direction.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
40 * How long they should be moved and for what window types are controlled in ShowDepotWindow()
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
41 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
42
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
43 /* Names of the widgets. Keep them in the same order as in the widget array */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
44 enum DepotWindowWidgets {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
45 DEPOT_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
46 DEPOT_WIDGET_SELL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
47 DEPOT_WIDGET_SELL_CHAIN,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
48 DEPOT_WIDGET_SELL_ALL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
49 DEPOT_WIDGET_AUTOREPLACE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
50 DEPOT_WIDGET_MATRIX,
6125
46d001ebacf6 (svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas <belugas@openttd.org>
parents: 6043
diff changeset
51 DEPOT_WIDGET_V_SCROLL, ///< Vertical scrollbar
46d001ebacf6 (svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas <belugas@openttd.org>
parents: 6043
diff changeset
52 DEPOT_WIDGET_H_SCROLL, ///< Horizontal scrollbar
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
53 DEPOT_WIDGET_BUILD,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
54 DEPOT_WIDGET_CLONE,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
55 DEPOT_WIDGET_LOCATION,
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
56 DEPOT_WIDGET_SHOW_RENAME,
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
57 DEPOT_WIDGET_RENAME,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
58 DEPOT_WIDGET_VEHICLE_LIST,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
59 DEPOT_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
60 DEPOT_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
61 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
62
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
63 /** Nested widget definition for train depots. */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
64 static const NWidgetPart _nested_train_depot_widgets[] = {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
65 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
66 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
67 NWidget(WWT_CAPTION, COLOUR_GREY, DEPOT_WIDGET_CAPTION), SetDataTip(STR_DEPOT_CAPTION, STR_NULL),
14045
68fabdc82f5b (svn r18588) -Feature [FS#2943]: Add shading and unshading of windows.
alberth <alberth@openttd.org>
parents: 14037
diff changeset
68 NWidget(WWT_SHADEBOX, COLOUR_GREY),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
69 NWidget(WWT_STICKYBOX, COLOUR_GREY),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
70 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
71 NWidget(NWID_HORIZONTAL),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
72 NWidget(NWID_VERTICAL),
15778
4f4c3160cca8 (svn r20452) -Codechange: Remove NWidgetCore::FindScrollbar() and associate scrollbar explicitly using a NWidgetPart via SetScrollbar().
frosch <frosch@openttd.org>
parents: 15623
diff changeset
73 NWidget(WWT_MATRIX, COLOUR_GREY, DEPOT_WIDGET_MATRIX), SetDataTip(0x0, STR_NULL), SetResize(1, 1), SetScrollbar(DEPOT_WIDGET_V_SCROLL),
15787
6c4bec3b8401 (svn r20461) -Codechange: Replace WWT_HSCROLLBAR, WWT_SCROLLBAR and WWT_SCROLL2BAR with NWID_HSCROLLBAR and NWID_VSCROLLBAR.
frosch <frosch@openttd.org>
parents: 15779
diff changeset
74 NWidget(NWID_HSCROLLBAR, COLOUR_GREY, DEPOT_WIDGET_H_SCROLL),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
75 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
76 NWidget(NWID_VERTICAL),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
77 NWidget(WWT_IMGBTN, COLOUR_GREY, DEPOT_WIDGET_SELL), SetDataTip(0x0, STR_NULL), SetResize(0, 1), SetFill(0, 1),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
78 NWidget(WWT_IMGBTN, COLOUR_GREY, DEPOT_WIDGET_SELL_CHAIN), SetDataTip(SPR_SELL_CHAIN_TRAIN, STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP), SetResize(0, 1), SetFill(0, 1),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
79 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, DEPOT_WIDGET_SELL_ALL), SetDataTip(0x0, STR_NULL),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
80 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, DEPOT_WIDGET_AUTOREPLACE), SetDataTip(0x0, STR_NULL),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
81 EndContainer(),
15787
6c4bec3b8401 (svn r20461) -Codechange: Replace WWT_HSCROLLBAR, WWT_SCROLLBAR and WWT_SCROLL2BAR with NWID_HSCROLLBAR and NWID_VSCROLLBAR.
frosch <frosch@openttd.org>
parents: 15779
diff changeset
82 NWidget(NWID_VSCROLLBAR, COLOUR_GREY, DEPOT_WIDGET_V_SCROLL),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
83 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
84 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
85 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, DEPOT_WIDGET_BUILD), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
86 NWidget(WWT_TEXTBTN, COLOUR_GREY, DEPOT_WIDGET_CLONE), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
87 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, DEPOT_WIDGET_LOCATION), SetDataTip(STR_BUTTON_LOCATION, STR_NULL), SetFill(1, 1), SetResize(1, 0),
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
88 NWidget(NWID_SELECTION, INVALID_COLOUR, DEPOT_WIDGET_SHOW_RENAME), // rename button
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
89 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, DEPOT_WIDGET_RENAME), SetDataTip(STR_BUTTON_RENAME, STR_DEPOT_RENAME_TOOLTIP), SetFill(1, 1), SetResize(1, 0),
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
90 EndContainer(),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
91 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, DEPOT_WIDGET_VEHICLE_LIST), SetDataTip(0x0, STR_NULL), SetFill(0, 1),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
92 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, DEPOT_WIDGET_STOP_ALL), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_NULL), SetFill(0, 1),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
93 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, DEPOT_WIDGET_START_ALL), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_NULL), SetFill(0, 1),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
94 NWidget(WWT_RESIZEBOX, COLOUR_GREY),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
95 EndContainer(),
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 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
97
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
98 static const WindowDesc _train_depot_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
99 WDP_AUTO, 362, 123,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
100 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
101 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
102 _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
103 );
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
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
105 static const WindowDesc _road_depot_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
106 WDP_AUTO, 316, 97,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
107 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
108 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
109 _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
110 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
111
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
112 static const WindowDesc _ship_depot_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
113 WDP_AUTO, 306, 99,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
114 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
115 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
116 _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
117 );
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
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
119 static const WindowDesc _aircraft_depot_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
120 WDP_AUTO, 332, 99,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
121 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
122 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
123 _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
124 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
125
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
126 extern 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
127
7478
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
128 /**
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
129 * This is the Callback method after the cloning attempt of a vehicle
14230
95250f9a5035 (svn r18781) -Codechange: pass the CommandCost to the callback instead of whether it succeeded or not.
rubidium <rubidium@openttd.org>
parents: 14045
diff changeset
130 * @param result the result of the cloning command
7478
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
131 * @param tile unused
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
132 * @param p1 unused
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
133 * @param p2 unused
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
134 */
14230
95250f9a5035 (svn r18781) -Codechange: pass the CommandCost to the callback instead of whether it succeeded or not.
rubidium <rubidium@openttd.org>
parents: 14045
diff changeset
135 void CcCloneVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
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 {
14230
95250f9a5035 (svn r18781) -Codechange: pass the CommandCost to the callback instead of whether it succeeded or not.
rubidium <rubidium@openttd.org>
parents: 14045
diff changeset
137 if (result.Failed()) return;
7478
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
138
11922
0a4b63f3f3c3 (svn r16325) -Codechange: replace GetPoolItem(index) by PoolItem::Get(index)
smatz <smatz@openttd.org>
parents: 11896
diff changeset
139 const Vehicle *v = Vehicle::Get(_new_vehicle_id);
7478
29e4afeffd1e (svn r10985) -Codechange: unify/remove duplicate CcClone(Aircraft|RoadVeh|Ship|Train) in favour of CcCloneVehicle.
rubidium <rubidium@openttd.org>
parents: 7341
diff changeset
140
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7479
diff changeset
141 ShowVehicleViewWindow(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
142 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
143
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
144 static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Vehicle *head)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
145 {
11922
0a4b63f3f3c3 (svn r16325) -Codechange: replace GetPoolItem(index) by PoolItem::Get(index)
smatz <smatz@openttd.org>
parents: 11896
diff changeset
146 const Vehicle *v = Vehicle::Get(sel);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
147
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
148 if (v == wagon) return;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
149
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
150 if (wagon == NULL) {
12460
4acae7d6f5ed (svn r16894) -Codechange: Add [Specialised]Vehicle::Last().
frosch <frosch@openttd.org>
parents: 12450
diff changeset
151 if (head != NULL) wagon = head->Last();
12762
839af08c39fc (svn r17228) -Codechange: some coding style fixes
rubidium <rubidium@openttd.org>
parents: 12729
diff changeset
152 } else {
7497
797ff0b0e0a5 (svn r11011) -Fix [FS#1129]: GetFirstVehicleInChain did change the game state while being marked const.
rubidium <rubidium@openttd.org>
parents: 7492
diff changeset
153 wagon = wagon->Previous();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
154 if (wagon == NULL) return;
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
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
157 if (wagon == v) return;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
158
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
159 DoCommandP(v->tile, v->index + ((wagon == NULL ? INVALID_VEHICLE : wagon->index) << 16), _ctrl_pressed ? 1 : 0, CMD_MOVE_RAIL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_MOVE_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
160 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
161
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
162 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
163 * Array containing the cell size in pixels of the #DEPOT_WIDGET_MATRIX widget for each vehicle type.
15623
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
164 * @note The train vehicle type uses the entire row for each train.
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
165 */
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
166 static Dimension _base_block_sizes[4];
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
167
13147
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
168 static void InitBlocksizeForShipAircraft(VehicleType type)
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
169 {
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
170 uint max_width = 0;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
171 uint max_height = 0;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
172
9070
11b5b3f4175d (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138 <peter1138@openttd.org>
parents: 9065
diff changeset
173 const Engine *e;
11b5b3f4175d (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138 <peter1138@openttd.org>
parents: 9065
diff changeset
174 FOR_ALL_ENGINES_OF_TYPE(e, type) {
11b5b3f4175d (svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138 <peter1138@openttd.org>
parents: 9065
diff changeset
175 EngineID eid = e->index;
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
176 uint x, y;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
177
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
178 switch (type) {
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
179 default: NOT_REACHED();
9065
d341f7b59228 (svn r12917) -Codechange: standardise variable names called with FOR_ALL_ENGINEIDS_OF_TYPE
peter1138 <peter1138@openttd.org>
parents: 8969
diff changeset
180 case VEH_SHIP: GetShipSpriteSize( eid, x, y); break;
d341f7b59228 (svn r12917) -Codechange: standardise variable names called with FOR_ALL_ENGINEIDS_OF_TYPE
peter1138 <peter1138@openttd.org>
parents: 8969
diff changeset
181 case VEH_AIRCRAFT: GetAircraftSpriteSize(eid, x, y); break;
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
182 }
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
183 if (x > max_width) max_width = x;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
184 if (y > max_height) max_height = y;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
185 }
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
186
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
187 switch (type) {
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
188 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
189 case VEH_SHIP:
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
190 _base_block_sizes[VEH_SHIP].width = max(76U, max_width);
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
191 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
192 case VEH_AIRCRAFT:
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
193 _base_block_sizes[VEH_AIRCRAFT].width = max(67U, max_width);
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
194 break;
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
195 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
196 _base_block_sizes[type].height = max(GetVehicleHeight(type), max_height);
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
197 }
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
198
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
199 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
200 * Set the size of the blocks in the window so we can be sure that they are big enough for the vehicle sprites in the current game.
15623
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
201 * @note Calling this function once for each game is enough.
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
202 */
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
203 void InitDepotWindowBlockSizes()
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
204 {
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
205 _base_block_sizes[VEH_TRAIN].width = 0;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
206 _base_block_sizes[VEH_TRAIN].height = GetVehicleHeight(VEH_TRAIN);
13147
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
207
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
208 _base_block_sizes[VEH_ROAD].width = 32;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
209 _base_block_sizes[VEH_ROAD].height = GetVehicleHeight(VEH_ROAD);
13147
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
210
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
211 InitBlocksizeForShipAircraft(VEH_SHIP);
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
212 InitBlocksizeForShipAircraft(VEH_AIRCRAFT);
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
213 }
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
214
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
215 static void DepotSellAllConfirmationCallback(Window *w, bool confirmed);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
216 const Sprite *GetAircraftSprite(EngineID engine);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
217
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
218 struct DepotWindow : Window {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
219 VehicleID sel;
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
220 VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
221 VehicleType type;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
222 bool generate_list;
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
223 VehicleList vehicle_list;
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
224 VehicleList wagon_list;
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
225 uint num_columns; ///< Number of columns.
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
226 Scrollbar *hscroll; ///< Only for trains.
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
227 Scrollbar *vscroll;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
228
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
229 DepotWindow(const WindowDesc *desc, TileIndex tile, VehicleType type) : Window()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
230 {
13602
47a93be74755 (svn r18126) -Codechange: remove duplicate (since r18119) scrollbar capacity/matrix initialisation
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
231 assert(IsCompanyBuildableVehicleType(type)); // ensure that we make the call with a valid type
47a93be74755 (svn r18126) -Codechange: remove duplicate (since r18119) scrollbar capacity/matrix initialisation
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
232
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
233 this->sel = INVALID_VEHICLE;
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
234 this->vehicle_over = INVALID_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
235 this->generate_list = true;
13143
dd57dca0d7c7 (svn r17648) -Codechange: Move type initialization and widget disabling to the constructor.
alberth <alberth@openttd.org>
parents: 13142
diff changeset
236 this->type = type;
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
237 this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
238
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
239 this->CreateNestedTree(desc);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
240 this->hscroll = (this->type == VEH_TRAIN ? this->GetScrollbar(DEPOT_WIDGET_H_SCROLL) : NULL);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
241 this->vscroll = this->GetScrollbar(DEPOT_WIDGET_V_SCROLL);
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
242 /* Don't show 'rename button' of aircraft hangar */
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
243 this->GetWidget<NWidgetStacked>(DEPOT_WIDGET_SHOW_RENAME)->SetDisplayedPlane(type == VEH_AIRCRAFT ? SZSP_NONE : 0);
13321
8f6b37d7f699 (svn r17830) -Fix [FS#3276]: Some windows already need their window_number when setting up smallest size (e.g. for DParams). So assign it earlier in Window::InitializeData instead of dealing with each window separately.
frosch <frosch@openttd.org>
parents: 13277
diff changeset
244 this->SetupWidgetData(type);
8f6b37d7f699 (svn r17830) -Fix [FS#3276]: Some windows already need their window_number when setting up smallest size (e.g. for DParams). So assign it earlier in Window::InitializeData instead of dealing with each window separately.
frosch <frosch@openttd.org>
parents: 13277
diff changeset
245 this->FinishInitNested(desc, tile);
10503
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
246
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
247 this->owner = GetTileOwner(tile);
13602
47a93be74755 (svn r18126) -Codechange: remove duplicate (since r18119) scrollbar capacity/matrix initialisation
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
248 _backup_orders_tile = 0;
47a93be74755 (svn r18126) -Codechange: remove duplicate (since r18119) scrollbar capacity/matrix initialisation
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
249
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
250 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
251
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
252 ~DepotWindow()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
253 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
254 DeleteWindowById(WC_BUILD_VEHICLE, this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
255 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
256
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
257 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
258 * Draw a vehicle in the depot window in the box with the top left corner at x,y.
13142
a37a85a415ad (svn r17647) -Codechange: Moving widget array access to outside the function.
alberth <alberth@openttd.org>
parents: 13138
diff changeset
259 * @param v Vehicle to draw.
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
260 * @param left Left side of the box to draw in.
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
261 * @param right Right side of the box to draw in.
13142
a37a85a415ad (svn r17647) -Codechange: Moving widget array access to outside the function.
alberth <alberth@openttd.org>
parents: 13138
diff changeset
262 * @param y Top of the box to draw in.
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11084
diff changeset
263 */
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
264 void DrawVehicleInDepot(const Vehicle *v, int left, int right, int y) const
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
265 {
12440
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
266 bool free_wagon = false;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
267 int sprite_y = y + (this->resize.step_height - GetVehicleHeight(v->type)) / 2;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
268
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
269 bool rtl = _dynlang.text_dir == TD_RTL;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
270 int image_left = rtl ? left + this->count_width : left + this->header_width;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
271 int image_right = rtl ? right - this->header_width : right - this->count_width;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
272
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
273 switch (v->type) {
12440
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
274 case VEH_TRAIN: {
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
275 const Train *u = Train::From(v);
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
276 free_wagon = u->IsFreeWagon();
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
277
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
278 uint x_space = free_wagon ? TRAININFO_DEFAULT_VEHICLE_WIDTH : 0;
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
279 DrawTrainImage(u, image_left + (rtl ? 0 : x_space), image_right - (rtl ? x_space : 0), sprite_y - 1,
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
280 this->sel, free_wagon ? 0 : this->hscroll->GetPosition(), this->vehicle_over);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
281
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
282 /* Number of wagons relative to a standard length wagon (rounded up) */
15050
73f4e0e490b7 (svn r19670) -Codechange: Add CeilDiv() and RoundDiv() to simplify integer divisions with rounding.
frosch <frosch@openttd.org>
parents: 14409
diff changeset
283 SetDParam(0, CeilDiv(u->tcache.cached_total_length, 8));
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
284 DrawString(rtl ? left + WD_FRAMERECT_LEFT : right - this->count_width, rtl ? left + this->count_width : right - WD_FRAMERECT_RIGHT, y + (this->resize.step_height - FONT_HEIGHT_SMALL) / 2, STR_TINY_BLACK_COMA, TC_FROMSTRING, SA_RIGHT); // Draw the counter
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
285 break;
12440
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
286 }
5972
6ece78140826 (svn r8661) -Fix: [depot windows] Enlarge the blocks in the depot window if a sprite is too big to fit (ships and aircraft only)
bjarni <bjarni@openttd.org>
parents: 5955
diff changeset
287
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
288 case VEH_ROAD: DrawRoadVehImage( v, image_left, image_right, sprite_y, this->sel); break;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
289 case VEH_SHIP: DrawShipImage( v, image_left, image_right, sprite_y, this->sel); break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
290 case VEH_AIRCRAFT: {
10056
7867701f63e4 (svn r14223) -Codechange: make GetSprite aware of the 4 different types of sprites: fonts, recolour, mapgen and normal sprites.
rubidium <rubidium@openttd.org>
parents: 9931
diff changeset
291 const Sprite *spr = GetSprite(v->GetImage(DIR_W), ST_NORMAL);
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
292 DrawAircraftImage(v, image_left, image_right,
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
293 y + max(spr->height + spr->y_offs - 14, 0), // tall sprites needs an y offset
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
294 this->sel);
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
295 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
296 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
297 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
298 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
299
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
300 uint diff_x, diff_y;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
301 if (v->type == VEH_TRAIN || v->type == VEH_ROAD) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
302 /* Arrange unitnumber and flag horizontally */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
303 diff_x = this->flag_width + WD_FRAMERECT_LEFT;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
304 diff_y = (this->resize.step_height - this->flag_height) / 2 - 2;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
305 } else {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
306 /* Arrange unitnumber and flag vertically */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
307 diff_x = WD_FRAMERECT_LEFT;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
308 diff_y = FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
309 }
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
310 int text_left = rtl ? right - this->header_width - 1 : left + diff_x;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
311 int text_right = rtl ? right - diff_x : left + this->header_width - 1;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
312
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
313 if (free_wagon) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
314 DrawString(text_left, text_right, y + 2, STR_DEPOT_NO_ENGINE);
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
315 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
316 DrawSprite((v->vehstatus & VS_STOPPED) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, rtl ? right - this->flag_width : left + WD_FRAMERECT_LEFT, y + diff_y);
12440
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
317
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
318 SetDParam(0, v->unitnumber);
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
319 DrawString(text_left, text_right, y + 2, (uint16)(v->max_age - DAYS_IN_LEAP_YEAR) >= v->age ? STR_BLACK_COMMA : STR_RED_COMMA);
12440
83a4c35ab350 (svn r16874) -Change: Give the number behind free wagon chains in depots the same meaning as for trains.
frosch <frosch@openttd.org>
parents: 12433
diff changeset
320 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
321 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
322
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
323 void DrawWidget(const Rect &r, int widget) const
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
324 {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
325 if (widget != DEPOT_WIDGET_MATRIX) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
326
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
327 bool rtl = _dynlang.text_dir == TD_RTL;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
328
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
329 /* Set the row and number of boxes in each row based on the number of boxes drawn in the matrix */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
330 uint16 mat_data = this->GetWidget<NWidgetCore>(DEPOT_WIDGET_MATRIX)->widget_data;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
331 uint16 rows_in_display = GB(mat_data, MAT_ROW_START, MAT_ROW_BITS);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
332 uint16 boxes_in_each_row = GB(mat_data, MAT_COL_START, MAT_COL_BITS);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
333
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
334 uint16 num = this->vscroll->GetPosition() * boxes_in_each_row;
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
335 int maxval = min(this->vehicle_list.Length(), num + (rows_in_display * boxes_in_each_row));
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
336 int y;
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
337 for (y = r.top + 1; num < maxval; y += this->resize.step_height) { // Draw the rows
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
338 for (byte i = 0; i < boxes_in_each_row && num < maxval; i++, num++) {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
339 /* Draw all vehicles in the current row */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
340 const Vehicle *v = this->vehicle_list[num];
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
341 if (boxes_in_each_row == 1) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
342 this->DrawVehicleInDepot(v, r.left, r.right, y);
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
343 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
344 int x = r.left + (rtl ? (boxes_in_each_row - i - 1) : i) * this->resize.step_width;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
345 this->DrawVehicleInDepot(v, x, x + this->resize.step_width - 1, y);
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
346 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
347 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
348 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
349
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
350 maxval = min(this->vehicle_list.Length() + this->wagon_list.Length(), (this->vscroll->GetPosition() * boxes_in_each_row) + (rows_in_display * boxes_in_each_row));
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
351
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
352 /* draw the train wagons, that do not have an engine in front */
13885
22d1d919b00e (svn r18414) -Fix: In the depot window, 'free' wagons were not drawn resize.step_height apart
peter1138 <peter1138@openttd.org>
parents: 13796
diff changeset
353 for (; num < maxval; num++, y += this->resize.step_height) {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
354 const Vehicle *v = this->wagon_list[num - this->vehicle_list.Length()];
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
355 this->DrawVehicleInDepot(v, r.left, r.right, y);
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
356 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
357 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
358
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
359 void SetStringParameters(int widget) const
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
360 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
361 if (widget != DEPOT_WIDGET_CAPTION) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
362
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
363 /* locate the depot struct */
13143
dd57dca0d7c7 (svn r17648) -Codechange: Move type initialization and widget disabling to the constructor.
alberth <alberth@openttd.org>
parents: 13142
diff changeset
364 TileIndex tile = this->window_number;
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
365 SetDParam(0, this->type);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
366 SetDParam(1, (this->type == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(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
367 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
368
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
369 struct GetDepotVehiclePtData {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
370 const Vehicle *head;
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
371 const Vehicle *wagon;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
372 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
373
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
374 enum DepotGUIAction {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
375 MODE_ERROR,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
376 MODE_DRAG_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
377 MODE_SHOW_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
378 MODE_START_STOP,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
379 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
380
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
381 DepotGUIAction GetVehicleFromDepotWndPt(int x, int y, const Vehicle **veh, GetDepotVehiclePtData *d) const
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
382 {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
383 const NWidgetCore *matrix_widget = this->GetWidget<NWidgetCore>(DEPOT_WIDGET_MATRIX);
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
384 /* In case of RTL the widgets are swapped as a whole */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
385 if (_dynlang.text_dir == TD_RTL) x = matrix_widget->current_x - x;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
386
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
387 uint xt = 0, xm = 0, ym = 0;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
388 if (this->type == VEH_TRAIN) {
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
389 xm = x;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
390 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
391 xt = x / this->resize.step_width;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
392 xm = x % this->resize.step_width;
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
393 if (xt >= this->num_columns) return MODE_ERROR;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
394 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
395 ym = y % this->resize.step_height;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
396
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
397 uint row = y / this->resize.step_height;
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
398 if (row >= this->vscroll->GetCapacity()) return MODE_ERROR;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
399
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
400 uint boxes_in_each_row = GB(matrix_widget->widget_data, MAT_COL_START, MAT_COL_BITS);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
401 uint pos = ((row + this->vscroll->GetPosition()) * boxes_in_each_row) + xt;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
402
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
403 if (this->vehicle_list.Length() + this->wagon_list.Length() <= pos) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
404 /* Clicking on 'line' / 'block' without a vehicle */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
405 if (this->type == VEH_TRAIN) {
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
406 /* End the dragging */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
407 d->head = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
408 d->wagon = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
409 return MODE_DRAG_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
410 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
411 return MODE_ERROR; // empty block, so no vehicle is selected
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
412 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
413 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
414
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
415 bool wagon = false;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
416 if (this->vehicle_list.Length() > pos) {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
417 *veh = this->vehicle_list[pos];
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
418 /* Skip vehicles that are scrolled off the list */
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
419 if (this->type == VEH_TRAIN) x += this->hscroll->GetPosition();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
420 } else {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
421 pos -= this->vehicle_list.Length();
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
422 *veh = this->wagon_list[pos];
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
423 /* free wagons don't have an initial loco. */
12433
c3588e7cb8f6 (svn r16867) -Feature(ette): Turn variable 0E/8E (vertical offset for trains in depot) and variable 1E/9E bit 3 (wagon width in depot) into grf-local variables.
frosch <frosch@openttd.org>
parents: 12411
diff changeset
424 x -= VEHICLEINFO_FULL_VEHICLE_WIDTH;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
425 wagon = true;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
426 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
427
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
428 const Train *v = NULL;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
429 if (this->type == VEH_TRAIN) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
430 v = Train::From(*veh);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
431 d->head = d->wagon = v;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
432 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
433
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
434 if (xm <= this->header_width) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
435 switch (this->type) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
436 case VEH_TRAIN:
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
437 if (wagon) return MODE_ERROR;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
438 case VEH_ROAD:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
439 if (xm <= this->flag_width) return MODE_START_STOP;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
440 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
441
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
442 case VEH_SHIP:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
443 case VEH_AIRCRAFT:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
444 if (xm <= this->flag_width && ym >= (uint)(FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL)) return MODE_START_STOP;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
445 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
446
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
447 default: NOT_REACHED();
12387
ebf5d196267b (svn r16817) -Codechange: Scroll depots horizontally in pixels instead of 1/8 vehicle length.
frosch <frosch@openttd.org>
parents: 12374
diff changeset
448 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
449 return MODE_SHOW_VEHICLE;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
450 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
451
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
452 if (this->type != VEH_TRAIN) return MODE_DRAG_VEHICLE;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
453
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
454 /* Clicking on the counter */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
455 if (xm >= matrix_widget->current_x - this->count_width) return wagon ? MODE_ERROR : MODE_SHOW_VEHICLE;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
456
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
457 /* Account for the header */
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
458 x -= this->header_width;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
459
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
460 /* find the vehicle in this row that was clicked */
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
461 for (; v != NULL; v = v->Next()) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
462 x -= v->GetDisplayImageWidth();
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
463 if (x < 0) break;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
464 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
465
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
466 d->wagon = (v != NULL ? v->GetFirstEnginePart() : NULL);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
467
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
468 return MODE_DRAG_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
469 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
470
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
471 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
472 * Handle click in the depot matrix.
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
473 * @param x Horizontal position in the matrix widget in pixels.
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
474 * @param y Vertical position in the matrix widget in pixels.
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
475 */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
476 void DepotClick(int x, int y)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
477 {
9213
d288bb9876c7 (svn r13079) -Fix: certain compilers give false warning about uninitialized variable
smatz <smatz@openttd.org>
parents: 9203
diff changeset
478 GetDepotVehiclePtData gdvp = { NULL, NULL };
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
479 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
480 DepotGUIAction mode = this->GetVehicleFromDepotWndPt(x, y, &v, &gdvp);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
481
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
482 /* share / copy orders */
11702
cdaad565efe5 (svn r16088) -Codechange: merge HighLightStyle and ViewportHighlightMode as they are basically the same thing
rubidium <rubidium@openttd.org>
parents: 11524
diff changeset
483 if (_thd.place_mode != HT_NONE && mode != MODE_ERROR) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
484 _place_clicked_vehicle = (this->type == VEH_TRAIN ? gdvp.head : v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
485 return;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
486 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
487
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
488 if (this->type == VEH_TRAIN) v = gdvp.wagon;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
489
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
490 switch (mode) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
491 case MODE_ERROR: // invalid
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
492 return;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
493
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
494 case MODE_DRAG_VEHICLE: { // start dragging of vehicle
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
495 VehicleID sel = this->sel;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
496
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
497 if (this->type == VEH_TRAIN && sel != INVALID_VEHICLE) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
498 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
499 TrainDepotMoveVehicle(v, sel, gdvp.head);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
500 } else if (v != NULL) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
501 int image = v->GetImage(DIR_W);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
502
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
503 this->sel = v->index;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
504 this->SetDirty();
11702
cdaad565efe5 (svn r16088) -Codechange: merge HighLightStyle and ViewportHighlightMode as they are basically the same thing
rubidium <rubidium@openttd.org>
parents: 11524
diff changeset
505 SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this);
9670
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
506
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
507 switch (v->type) {
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
508 case VEH_TRAIN:
12114
f020ec6be498 (svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check
smatz <smatz@openttd.org>
parents: 12027
diff changeset
509 _cursor.short_vehicle_offset = 16 - Train::From(v)->tcache.cached_veh_length * 2;
9670
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
510 break;
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
511
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
512 case VEH_ROAD:
12114
f020ec6be498 (svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check
smatz <smatz@openttd.org>
parents: 12027
diff changeset
513 _cursor.short_vehicle_offset = 16 - RoadVehicle::From(v)->rcache.cached_veh_length * 2;
9670
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
514 break;
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
515
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
516 default:
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
517 _cursor.short_vehicle_offset = 0;
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
518 break;
cbf60a2ecf07 (svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
rubidium <rubidium@openttd.org>
parents: 9396
diff changeset
519 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
520 _cursor.vehchain = _ctrl_pressed;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
521 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
522 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
523 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
524
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
525 case MODE_SHOW_VEHICLE: // show info window
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
526 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
527 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
528
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
529 case MODE_START_STOP: // click start/stop flag
15088
a63b4234140f (svn r19714) -Feature: ctrl+click on a vehicle to start/stop it
smatz <smatz@openttd.org>
parents: 15084
diff changeset
530 StartStopVehicle(v, false);
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
531 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
532
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
533 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
534 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
535 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
536
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
537 /**
11361
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11084
diff changeset
538 * Clones a vehicle
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11084
diff changeset
539 * @param *v is the original vehicle to clone
02313cc6114e (svn r15711) -Codechange: lots of whitespace cleanup/fixes
rubidium <rubidium@openttd.org>
parents: 11084
diff changeset
540 */
12390
cca34a3de96e (svn r16820) -Codechange: remove unused parameter in HandleCloneVehClick()
smatz <smatz@openttd.org>
parents: 12387
diff changeset
541 void HandleCloneVehClick(const Vehicle *v)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
542 {
12483
84df0c285bc4 (svn r16920) -Codechange: shuffle some strings around to simplify looking up vehicle type specific strings for a specific message
rubidium <rubidium@openttd.org>
parents: 12482
diff changeset
543 if (v == NULL || !IsCompanyBuildableVehicleType(v)) 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
544
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
545 if (!v->IsPrimaryVehicle()) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
546 v = v->First();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
547 /* Do nothing when clicking on a train in depot with no loc attached */
12300
7ec79afe8c18 (svn r16717) -Codechange: make IsFrontEngine() member of Train
smatz <smatz@openttd.org>
parents: 12263
diff changeset
548 if (v->type == VEH_TRAIN && !Train::From(v)->IsFrontEngine()) return;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
549 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
550
12953
045a6264ea5b (svn r17446) -Codechange: rename BUILD with BUY for strings that are about building (in the future buying) vehicles.
rubidium <rubidium@openttd.org>
parents: 12877
diff changeset
551 DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
552
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
553 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
554 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
555
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
556 /* Function to set up vehicle specific widgets (mainly sprites and strings).
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
557 * Only use this if it's the same widget, that's used for more than one vehicle type and it needs different text/sprites
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
558 * Vehicle specific text/sprites, that's in a widget, that's only shown for one vehicle type (like sell whole train) is set in the nested widget array
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
559 */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
560 void SetupWidgetData(VehicleType type)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
561 {
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
562 if (type != VEH_TRAIN) this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_CHAIN)->fill_y = 0; // Disable vertical filling of chain-sell widget for non-train windows.
12483
84df0c285bc4 (svn r16920) -Codechange: shuffle some strings around to simplify looking up vehicle type specific strings for a specific message
rubidium <rubidium@openttd.org>
parents: 12482
diff changeset
563
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
564 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_STOP_ALL)->tool_tip = STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP + type;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
565 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_START_ALL)->tool_tip = STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP + type;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
566 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->tool_tip = STR_DEPOT_TRAIN_SELL_TOOLTIP + type;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
567 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_ALL)->tool_tip = STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP + type;
12483
84df0c285bc4 (svn r16920) -Codechange: shuffle some strings around to simplify looking up vehicle type specific strings for a specific message
rubidium <rubidium@openttd.org>
parents: 12482
diff changeset
568
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
569 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_BUILD)->SetDataTip(STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON + type, STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP + type);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
570 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_CLONE)->SetDataTip(STR_DEPOT_CLONE_TRAIN + type, STR_DEPOT_CLONE_TRAIN_DEPOT_INFO + type);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
571
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
572 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_LOCATION)->tool_tip = STR_DEPOT_TRAIN_LOCATION_TOOLTIP + type;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
573 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_VEHICLE_LIST)->tool_tip = STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP + type;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
574 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_AUTOREPLACE)->tool_tip = STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP + type;
15472
b3f5f128955e (svn r20121) -Add: OnHover method for windows.
terkhen <terkhen@openttd.org>
parents: 15471
diff changeset
575 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_MATRIX)->tool_tip = STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type;
12483
84df0c285bc4 (svn r16920) -Codechange: shuffle some strings around to simplify looking up vehicle type specific strings for a specific message
rubidium <rubidium@openttd.org>
parents: 12482
diff changeset
576
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
577 switch (type) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
578 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
579
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
580 case VEH_TRAIN:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
581 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_VEHICLE_LIST)->widget_data = STR_TRAIN;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
582
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
583 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
584 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->widget_data = SPR_SELL_TRAIN;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
585 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_ALL)->widget_data = SPR_SELL_ALL_TRAIN;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
586 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_AUTOREPLACE)->widget_data = SPR_REPLACE_TRAIN;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
587 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
588
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
589 case VEH_ROAD:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
590 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_VEHICLE_LIST)->widget_data = STR_LORRY;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
591
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
592 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
593 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->widget_data = SPR_SELL_ROADVEH;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
594 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_ALL)->widget_data = SPR_SELL_ALL_ROADVEH;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
595 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_AUTOREPLACE)->widget_data = SPR_REPLACE_ROADVEH;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
596 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
597
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
598 case VEH_SHIP:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
599 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_VEHICLE_LIST)->widget_data = STR_SHIP;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
600
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
601 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
602 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->widget_data = SPR_SELL_SHIP;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
603 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_ALL)->widget_data = SPR_SELL_ALL_SHIP;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
604 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_AUTOREPLACE)->widget_data = SPR_REPLACE_SHIP;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
605 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
606
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
607 case VEH_AIRCRAFT:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
608 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_VEHICLE_LIST)->widget_data = STR_PLANE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
609
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
610 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
611 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->widget_data = SPR_SELL_AIRCRAFT;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
612 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_ALL)->widget_data = SPR_SELL_ALL_AIRCRAFT;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
613 this->GetWidget<NWidgetCore>(DEPOT_WIDGET_AUTOREPLACE)->widget_data = SPR_REPLACE_AIRCRAFT;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
614 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
615 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
616 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
617
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
618 uint count_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
619 uint header_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
620 uint flag_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
621 uint flag_height;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
622
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
623 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
624 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
625 switch (widget) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
626 case DEPOT_WIDGET_SELL_CHAIN:
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
627 case DEPOT_WIDGET_H_SCROLL:
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
628 /* Hide the 'sell chain' and the horizontal scrollbar when not a train depot. */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
629 if (this->type != VEH_TRAIN) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
630 size->height = 0;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
631 resize->height = 0;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
632 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
633 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
634
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
635 case DEPOT_WIDGET_MATRIX: {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
636 uint min_height = 0;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
637
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
638 if (this->type == VEH_TRAIN) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
639 SetDParam(0, 100);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
640 this->count_width = GetStringBoundingBox(STR_TINY_BLACK_COMA).width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
641 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
642 this->count_width = 0;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
643 }
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
644
14032
0a874c3b0514 (svn r18575) -Fix [FS#3393]: unit numbers weren't always fully shown in the depot
rubidium <rubidium@openttd.org>
parents: 13885
diff changeset
645 Dimension unumber = { GetDigitWidth() * 4, FONT_HEIGHT_NORMAL };
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
646 const Sprite *spr = GetSprite(SPR_FLAG_VEH_STOPPED, ST_NORMAL);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
647 this->flag_width = spr->width + WD_FRAMERECT_RIGHT;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
648 this->flag_height = spr->height;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
649
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
650 if (this->type == VEH_TRAIN || this->type == VEH_ROAD) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
651 min_height = max<uint>(unumber.height + WD_MATRIX_TOP, spr->height);
14032
0a874c3b0514 (svn r18575) -Fix [FS#3393]: unit numbers weren't always fully shown in the depot
rubidium <rubidium@openttd.org>
parents: 13885
diff changeset
652 this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
653 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
654 min_height = unumber.height + spr->height + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
655 this->header_width = max<uint>(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
656 }
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
657 int base_width = this->count_width + this->header_width;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
658
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
659 resize->height = max(_base_block_sizes[this->type].height, min_height);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
660 if (this->type == VEH_TRAIN) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
661 resize->width = 1;
13633
e809c4dab49d (svn r18157) -Codechange: some minor tweaks of the boundaries of strings etc. in the depot window
rubidium <rubidium@openttd.org>
parents: 13630
diff changeset
662 size->width = base_width + 2 * 29; // about 2 parts
e809c4dab49d (svn r18157) -Codechange: some minor tweaks of the boundaries of strings etc. in the depot window
rubidium <rubidium@openttd.org>
parents: 13630
diff changeset
663 size->height = resize->height * 6;
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
664 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
665 resize->width = base_width + _base_block_sizes[this->type].width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
666 size->width = resize->width * (this->type == VEH_ROAD ? 5 : 3);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
667 size->height = resize->height * (this->type == VEH_ROAD ? 5 : 3);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
668 }
13706
a15d8546fedf (svn r18231) -Fix: Enable filling of matrix widget in the depot gui.
alberth <alberth@openttd.org>
parents: 13705
diff changeset
669 fill->width = resize->width;
a15d8546fedf (svn r18231) -Fix: Enable filling of matrix widget in the depot gui.
alberth <alberth@openttd.org>
parents: 13705
diff changeset
670 fill->height = resize->height;
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
671 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
672 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
673 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
674 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
675
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
676 virtual void OnInvalidateData(int data)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
677 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
678 this->generate_list = true;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
679 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
680
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
681 virtual void OnPaint()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
682 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
683 if (this->generate_list) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
684 /* Generate the vehicle list
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
685 * It's ok to use the wagon pointers for non-trains as they will be ignored */
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
686 BuildDepotVehicleList(this->type, this->window_number, &this->vehicle_list, &this->wagon_list);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
687 this->generate_list = false;
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
688 DepotSortList(&this->vehicle_list);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
689 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
690
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
691 /* determine amount of items for scroller */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
692 if (this->type == VEH_TRAIN) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
693 uint max_width = VEHICLEINFO_FULL_VEHICLE_WIDTH;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
694 for (uint num = 0; num < this->vehicle_list.Length(); num++) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
695 uint width = 0;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
696 for (const Train *v = Train::From(this->vehicle_list[num]); v != NULL; v = v->Next()) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
697 width += v->GetDisplayImageWidth();
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
698 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
699 max_width = max(max_width, width);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
700 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
701 /* Always have 1 empty row, so people can change the setting of the train */
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
702 this->vscroll->SetCount(this->vehicle_list.Length() + this->wagon_list.Length() + 1);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
703 this->hscroll->SetCount(max_width);
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
704 } else {
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
705 this->vscroll->SetCount(CeilDiv(this->vehicle_list.Length(), this->num_columns));
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
706 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
707
13251
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
708 /* Setup disabled buttons. */
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
709 TileIndex tile = this->window_number;
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
710 this->SetWidgetsDisabledState(!IsTileOwner(tile, _local_company),
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
711 DEPOT_WIDGET_STOP_ALL,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
712 DEPOT_WIDGET_START_ALL,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
713 DEPOT_WIDGET_SELL,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
714 DEPOT_WIDGET_SELL_CHAIN,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
715 DEPOT_WIDGET_SELL_ALL,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
716 DEPOT_WIDGET_BUILD,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
717 DEPOT_WIDGET_CLONE,
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
718 DEPOT_WIDGET_RENAME,
13251
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
719 DEPOT_WIDGET_AUTOREPLACE,
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
720 WIDGET_LIST_END);
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
721
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
722 this->DrawWidgets();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
723 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
724
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14258
diff changeset
725 virtual void OnClick(Point pt, int widget, int click_count)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
726 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
727 switch (widget) {
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
728 case DEPOT_WIDGET_MATRIX: { // List
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
729 NWidgetBase *nwi = this->GetWidget<NWidgetBase>(DEPOT_WIDGET_MATRIX);
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
730 this->DepotClick(pt.x - nwi->pos_x, pt.y - nwi->pos_y);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
731 break;
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
732 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
733
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
734 case DEPOT_WIDGET_BUILD: // Build vehicle
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
735 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
736 ShowBuildVehicleWindow(this->window_number, this->type);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
737 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
738
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
739 case DEPOT_WIDGET_CLONE: // Clone button
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
740 this->SetWidgetDirty(DEPOT_WIDGET_CLONE);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
741 this->ToggleWidgetLoweredState(DEPOT_WIDGET_CLONE);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
742
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
743 if (this->IsWidgetLowered(DEPOT_WIDGET_CLONE)) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
744 static const CursorID clone_icons[] = {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
745 SPR_CURSOR_CLONE_TRAIN, SPR_CURSOR_CLONE_ROADVEH,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
746 SPR_CURSOR_CLONE_SHIP, SPR_CURSOR_CLONE_AIRPLANE
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
747 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
748
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
749 _place_clicked_vehicle = NULL;
11702
cdaad565efe5 (svn r16088) -Codechange: merge HighLightStyle and ViewportHighlightMode as they are basically the same thing
rubidium <rubidium@openttd.org>
parents: 11524
diff changeset
750 SetObjectToPlaceWnd(clone_icons[this->type], PAL_NONE, HT_RECT, this);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
751 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
752 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
753 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
754 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
755
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
756 case DEPOT_WIDGET_LOCATION:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
757 if (_ctrl_pressed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
758 ShowExtraViewPortWindow(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
759 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
760 ScrollMainWindowToTile(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
761 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
762 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
763
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
764 case DEPOT_WIDGET_RENAME: // Rename button
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
765 SetDParam(0, this->type);
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
766 SetDParam(1, Depot::GetByTile((TileIndex)this->window_number)->index);
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
767 ShowQueryString(STR_DEPOT_NAME, STR_DEPOT_RENAME_DEPOT_CAPTION, MAX_LENGTH_DEPOT_NAME_BYTES, MAX_LENGTH_DEPOT_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
768 break;
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
769
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
770 case DEPOT_WIDGET_STOP_ALL:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
771 case DEPOT_WIDGET_START_ALL:
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10208
diff changeset
772 DoCommandP(this->window_number, 0, this->type | (widget == DEPOT_WIDGET_START_ALL ? (1 << 5) : 0), CMD_MASS_START_STOP);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
773 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
774
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
775 case DEPOT_WIDGET_SELL_ALL:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
776 /* Only open the confimation window if there are anything to sell */
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
777 if (this->vehicle_list.Length() != 0 || this->wagon_list.Length() != 0) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
778 TileIndex tile = this->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
779 byte vehtype = this->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
780
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
781 SetDParam(0, vehtype);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
782 SetDParam(1, (vehtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile));
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
783 ShowQuery(
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
784 STR_DEPOT_CAPTION,
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
785 STR_DEPOT_SELL_CONFIRMATION_TEXT,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
786 this,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
787 DepotSellAllConfirmationCallback
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
788 );
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
789 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
790 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
791
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
792 case DEPOT_WIDGET_VEHICLE_LIST:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
793 ShowVehicleListWindow(GetTileOwner(this->window_number), this->type, (TileIndex)this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
794 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
795
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
796 case DEPOT_WIDGET_AUTOREPLACE:
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10208
diff changeset
797 DoCommandP(this->window_number, this->type, 0, CMD_DEPOT_MASS_AUTOREPLACE);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
798 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
799
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
800 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
801 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
802
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
803 virtual void OnQueryTextFinished(char *str)
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
804 {
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
805 if (str == NULL) return;
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
806
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
807 /* Do depot renaming */
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
808 DoCommandP(0, GetDepotIndex(this->window_number), 0, CMD_RENAME_DEPOT | CMD_MSG(STR_ERROR_CAN_T_RENAME_DEPOT), NULL, str);
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
809 }
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
810
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
811 virtual bool OnRightClick(Point pt, int widget)
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
812 {
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
813 if (widget != DEPOT_WIDGET_MATRIX) return false;
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
814
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
815 GetDepotVehiclePtData gdvp = { NULL, NULL };
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
816 const Vehicle *v = NULL;
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
817 NWidgetBase *nwi = this->GetWidget<NWidgetBase>(DEPOT_WIDGET_MATRIX);
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
818 DepotGUIAction mode = this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, &gdvp);
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
819
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
820 if (this->type == VEH_TRAIN) v = gdvp.wagon;
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
821
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
822 if (v == NULL || mode != MODE_DRAG_VEHICLE) return false;
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
823
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
824 CargoArray capacity, loaded;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
825
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
826 /* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
827 bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed);
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
828
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
829 /* loop through vehicle chain and collect cargos */
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
830 uint num = 0;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
831 for (const Vehicle *w = v; w != NULL; w = w->Next()) {
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
832 if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) {
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
833 capacity[w->cargo_type] += w->cargo_cap;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
834 loaded [w->cargo_type] += w->cargo.Count();
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
835 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
836
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
837 if (w->type == VEH_TRAIN && !Train::From(w)->HasArticulatedPart()) {
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
838 num++;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
839 if (!whole_chain) break;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
840 }
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
841 }
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
842
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
843 /* Build tooltipstring */
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
844 static char details[1024];
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
845 details[0] = '\0';
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
846 char *pos = details;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
847
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
848 for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
849 if (capacity[cargo_type] == 0) continue;
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
850
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
851 SetDParam(0, cargo_type); // {CARGO} #1
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
852 SetDParam(1, loaded[cargo_type]); // {CARGO} #2
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
853 SetDParam(2, cargo_type); // {SHORTCARGO} #1
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
854 SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
855 pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details));
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
856 }
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
857
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
858 /* Show tooltip window */
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
859 uint64 args[2];
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
860 args[0] = (whole_chain ? num : v->engine_type);
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
861 args[1] = (uint64)(size_t)details;
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
862 GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK);
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
863
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
864 return true;
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
865 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
866
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
867 virtual void OnPlaceObject(Point pt, TileIndex tile)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
868 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
869 const Vehicle *v = CheckMouseOverVehicle();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
870
12390
cca34a3de96e (svn r16820) -Codechange: remove unused parameter in HandleCloneVehClick()
smatz <smatz@openttd.org>
parents: 12387
diff changeset
871 if (v != NULL) this->HandleCloneVehClick(v);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
872 }
8585
2880bcf43f14 (svn r12166) -Fix [FS#337]: when drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated (original patch by GrimRC)
smatz <smatz@openttd.org>
parents: 8479
diff changeset
873
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
874 virtual void OnPlaceObjectAbort()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
875 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
876 /* abort clone */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
877 this->RaiseWidget(DEPOT_WIDGET_CLONE);
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
878 this->SetWidgetDirty(DEPOT_WIDGET_CLONE);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
879
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
880 /* abort drag & drop */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
881 this->sel = INVALID_VEHICLE;
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
882 this->vehicle_over = INVALID_VEHICLE;
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
883 this->SetWidgetDirty(DEPOT_WIDGET_MATRIX);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
884 };
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
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
886 /* check if a vehicle in a depot was clicked.. */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
887 virtual void OnMouseLoop()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
888 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
889 const Vehicle *v = _place_clicked_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
890
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
891 /* since OTTD checks all open depot windows, we will make sure that it triggers the one with a clicked clone button */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
892 if (v != NULL && this->IsWidgetLowered(DEPOT_WIDGET_CLONE)) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
893 _place_clicked_vehicle = NULL;
12390
cca34a3de96e (svn r16820) -Codechange: remove unused parameter in HandleCloneVehClick()
smatz <smatz@openttd.org>
parents: 12387
diff changeset
894 this->HandleCloneVehClick(v);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
895 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
896 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
897
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
898 virtual void OnMouseDrag(Point pt, int widget)
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
899 {
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
900 if (this->type != VEH_TRAIN || this->sel == INVALID_VEHICLE) return;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
901
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
902 /* A rail vehicle is dragged.. */
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
903 if (widget != DEPOT_WIDGET_MATRIX) { // ..outside of the depot matrix.
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
904 if (this->vehicle_over != INVALID_VEHICLE) {
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
905 this->vehicle_over = INVALID_VEHICLE;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
906 this->SetWidgetDirty(DEPOT_WIDGET_MATRIX);
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
907 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
908 return;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
909 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
910
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
911 NWidgetBase *matrix = this->GetWidget<NWidgetBase>(widget);
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
912 const Vehicle *v = NULL;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
913 GetDepotVehiclePtData gdvp = {NULL, NULL};
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
914
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
915 if (this->GetVehicleFromDepotWndPt(pt.x - matrix->pos_x, pt.y - matrix->pos_y, &v, &gdvp) != MODE_DRAG_VEHICLE) return;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
916
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
917 VehicleID new_vehicle_over = INVALID_VEHICLE;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
918 if (gdvp.head != NULL) {
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
919 if (gdvp.wagon == NULL && gdvp.head->Last()->index != this->sel) { // ..at the end of the train.
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
920 /* NOTE: As a wagon can't be moved at the begin of a train, head index isn't used to mark a drag-and-drop
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
921 * destination inside a train. This head index is then used to indicate that a wagon is inserted at
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
922 * the end of the train.
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
923 */
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
924 new_vehicle_over = gdvp.head->index;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
925 } else if (gdvp.wagon != NULL && gdvp.head != gdvp.wagon &&
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
926 gdvp.wagon->index != this->sel &&
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
927 gdvp.wagon->Previous()->index != this->sel) { // ..over an existing wagon.
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
928 new_vehicle_over = gdvp.wagon->index;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
929 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
930 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
931
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
932 if (this->vehicle_over == new_vehicle_over) return;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
933
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
934 this->vehicle_over = new_vehicle_over;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
935 this->SetWidgetDirty(widget);
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
936 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
937
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
938 virtual void OnDragDrop(Point pt, int widget)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
939 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
940 switch (widget) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
941 case DEPOT_WIDGET_MATRIX: {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
942 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
943 VehicleID sel = this->sel;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
944
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
945 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
946 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
947
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
948 NWidgetBase *nwi = this->GetWidget<NWidgetBase>(DEPOT_WIDGET_MATRIX);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
949 if (this->type == VEH_TRAIN) {
9225
1e40b8e2533d (svn r13091) -Fix: certain compilers give false warning about uninitialized variable
smatz <smatz@openttd.org>
parents: 9213
diff changeset
950 GetDepotVehiclePtData gdvp = { NULL, 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
951
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
952 if (this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, &gdvp) == MODE_DRAG_VEHICLE && sel != INVALID_VEHICLE) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
953 if (gdvp.wagon != NULL && gdvp.wagon->index == sel && _ctrl_pressed) {
13143
dd57dca0d7c7 (svn r17648) -Codechange: Move type initialization and widget disabling to the constructor.
alberth <alberth@openttd.org>
parents: 13142
diff changeset
954 DoCommandP(Vehicle::Get(sel)->tile, Vehicle::Get(sel)->index, true,
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
955 CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE));
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
956 } else if (gdvp.wagon == NULL || gdvp.wagon->index != sel) {
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
957 this->vehicle_over = INVALID_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
958 TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head);
12300
7ec79afe8c18 (svn r16717) -Codechange: make IsFrontEngine() member of Train
smatz <smatz@openttd.org>
parents: 12263
diff changeset
959 } else if (gdvp.head != NULL && Train::From(gdvp.head)->IsFrontEngine()) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
960 ShowVehicleViewWindow(gdvp.head);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
961 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
962 }
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
963 } else if (this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, NULL) == MODE_DRAG_VEHICLE && v != NULL && sel == v->index) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
964 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
965 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
966 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
967 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
968
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
969 case DEPOT_WIDGET_SELL: case DEPOT_WIDGET_SELL_CHAIN: {
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
970 if (this->IsWidgetDisabled(widget)) return;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
971 if (this->sel == INVALID_VEHICLE) 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
972
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
973 this->HandleButtonClick(widget);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
974
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
975 const Vehicle *v = Vehicle::Get(this->sel);
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
976 this->sel = INVALID_VEHICLE;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
977 this->SetDirty();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
978
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
979 int sell_cmd = (v->type == VEH_TRAIN && (widget == DEPOT_WIDGET_SELL_CHAIN || _ctrl_pressed)) ? 1 : 0;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
980
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
981 bool is_engine = (v->type != VEH_TRAIN || Train::From(v)->IsFrontEngine());
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
982
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
983 if (is_engine) {
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
984 _backup_orders_tile = v->tile;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
985 BackupVehicleOrders(v);
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
986 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
987
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
988 if (!DoCommandP(v->tile, v->index, sell_cmd, GetCmdSellVeh(v->type)) && is_engine) _backup_orders_tile = 0;
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
989 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
990 }
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
991
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
992 default:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
993 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
994 this->SetDirty();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
995 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
996 _cursor.vehchain = false;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
997 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
998
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
999 virtual void OnTimeout()
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1000 {
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1001 if (!this->IsWidgetDisabled(DEPOT_WIDGET_SELL)) {
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1002 this->RaiseWidget(DEPOT_WIDGET_SELL);
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
1003 this->SetWidgetDirty(DEPOT_WIDGET_SELL);
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1004 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
1005 if (this->nested_array[DEPOT_WIDGET_SELL] != NULL && !this->IsWidgetDisabled(DEPOT_WIDGET_SELL_CHAIN)) {
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1006 this->RaiseWidget(DEPOT_WIDGET_SELL_CHAIN);
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
1007 this->SetWidgetDirty(DEPOT_WIDGET_SELL_CHAIN);
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1008 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1009 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
1010
13344
04b02b2cfa2b (svn r17853) -Codechange: remove the 'delta' parameter from OnResize; it was used in ways that aren't always wanted, causing bugs and the like. Also with nested widgets most reasons for handling OnResize have gone.
rubidium <rubidium@openttd.org>
parents: 13324
diff changeset
1011 virtual void OnResize()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1012 {
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13687
diff changeset
1013 NWidgetCore *nwi = this->GetWidget<NWidgetCore>(DEPOT_WIDGET_MATRIX);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1014 this->vscroll->SetCapacityFromWidget(this, DEPOT_WIDGET_MATRIX);
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
1015 if (this->type == VEH_TRAIN) {
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1016 this->hscroll->SetCapacity(nwi->current_x - this->header_width - this->count_width);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1017 nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START);
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
1018 } else {
15789
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
1019 this->num_columns = nwi->current_x / nwi->resize_x;
9c5d4355aa5c (svn r20464) -Codechange/Fix: Do not use a scrollbar to store the number of columns for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
1020 nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (this->num_columns << MAT_COL_START);
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
1021 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1022 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1023
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9274
diff changeset
1024 virtual EventState OnCTRLStateChange()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1025 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1026 if (this->sel != INVALID_VEHICLE) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1027 _cursor.vehchain = _ctrl_pressed;
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12953
diff changeset
1028 this->SetWidgetDirty(DEPOT_WIDGET_MATRIX);
9931
3ed3b1a0c1b3 (svn r14086) -Fix (r13067): rail/road removing by CTRL didn't sometimes work when a depot window was opened
smatz <smatz@openttd.org>
parents: 9921
diff changeset
1029 return ES_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1030 }
8828
f8c143a8cd90 (svn r12576) -Feature(tte) [FS#337]: highlight vehicle chain when dragging in the group and depot GUI if appropriate
smatz <smatz@openttd.org>
parents: 8784
diff changeset
1031
9931
3ed3b1a0c1b3 (svn r14086) -Fix (r13067): rail/road removing by CTRL didn't sometimes work when a depot window was opened
smatz <smatz@openttd.org>
parents: 9921
diff changeset
1032 return ES_NOT_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1033 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1034 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1035
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1036 static void DepotSellAllConfirmationCallback(Window *win, bool confirmed)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1037 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1038 if (confirmed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1039 DepotWindow *w = (DepotWindow*)win;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1040 TileIndex tile = w->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1041 byte vehtype = w->type;
10499
45ca88a8de7d (svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
rubidium <rubidium@openttd.org>
parents: 10208
diff changeset
1042 DoCommandP(tile, vehtype, 0, CMD_DEPOT_SELL_ALL_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
1043 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1044 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1045
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1046 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1047 * Opens a depot 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
1048 * @param tile The tile where the depot/hangar is located
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1049 * @param type The type of vehicles in the depot
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1050 */
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1051 void ShowDepotWindow(TileIndex tile, VehicleType 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
1052 {
10503
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1053 if (BringWindowToFrontById(WC_VEHICLE_DEPOT, tile) != NULL) 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
1054
10503
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1055 const WindowDesc *desc;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1056 switch (type) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1057 default: NOT_REACHED();
10503
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1058 case VEH_TRAIN: desc = &_train_depot_desc; break;
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1059 case VEH_ROAD: desc = &_road_depot_desc; break;
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1060 case VEH_SHIP: desc = &_ship_depot_desc; break;
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1061 case VEH_AIRCRAFT: desc = &_aircraft_depot_desc; break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1062 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1063
10503
60daa84bb001 (svn r14758) -Fix: determine the real size of a depot before trying to place it.
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1064 new DepotWindow(desc, tile, 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
1065 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1066
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1067 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1068 * Removes the highlight of a vehicle in a depot 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
1069 * @param *v Vehicle to remove all highlights from
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1070 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1071 void DeleteDepotHighlightOfVehicle(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
1072 {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1073 DepotWindow *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
1074
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1075 /* If we haven't got any vehicles on the mouse pointer, we haven't got any highlighted in any depots either
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1076 * If that is the case, we can skip looping though the windows and save time
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1077 */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1078 if (_special_mouse_mode != WSM_DRAGDROP) return;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1079
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1080 w = dynamic_cast<DepotWindow*>(FindWindowById(WC_VEHICLE_DEPOT, v->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
1081 if (w != NULL) {
10629
4b43850f2e24 (svn r14924) -Fix (r7403): Do not unnecessarily reset the cursor, when a different vehicle is dragged.
frosch <frosch@openttd.org>
parents: 10582
diff changeset
1082 if (w->sel == v->index) ResetObjectToPlace();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1083 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1084 }