annotate src/depot_gui.cpp @ 17221:edf36d7f3f86 draft

(svn r21960) -Change: show the length of vehicles in tiles, instead of half tiles in the depot -Fix [FS#4461]: don't count the number of vehicles but the length of vehicles to (configurably) limit train length
author rubidium <rubidium@openttd.org>
date Fri, 04 Feb 2011 15:40:35 +0000 (2011-02-04)
parents ccebafd2a9ba
children e7672bafbe1c
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"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "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
14 #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
15 #include "aircraft.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
16 #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
17 #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
18 #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
19 #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
20 #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
21 #include "vehicle_gui.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
22 #include "spritecache.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
23 #include "strings_func.h"
8131
e300ac8001ae (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium <rubidium@openttd.org>
parents: 8121
diff changeset
24 #include "window_func.h"
8144
d18c8a0bb638 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium <rubidium@openttd.org>
parents: 8131
diff changeset
25 #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
26 #include "company_func.h"
9127
428852b86d4d (svn r12987) -Codechange: split viewport and tile selection.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
27 #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
28 #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
29 #include "vehiclelist.h"
15857
9a9ec79c5d25 (svn r20539) -Codechange: make order backups more self-contained.
rubidium <rubidium@openttd.org>
parents: 15851
diff changeset
30 #include "order_backup.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
31
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
32 #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
33
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
34 /*
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
35 * 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
36 * 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
37 * 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
38 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
39
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
40 /* 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
41 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
42 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
43 DEPOT_WIDGET_SELL,
15790
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
44 DEPOT_WIDGET_SHOW_SELL_CHAIN,
5584
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_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
46 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
47 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
48 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
49 DEPOT_WIDGET_V_SCROLL, ///< Vertical scrollbar
15790
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
50 DEPOT_WIDGET_SHOW_H_SCROLL,
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_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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 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
60 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
61
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
62 /** Nested widget definition for train depots. */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
63 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
64 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
65 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
66 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
67 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
68 NWidget(WWT_STICKYBOX, COLOUR_GREY),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
69 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
70 NWidget(NWID_HORIZONTAL),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
71 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
72 NWidget(WWT_MATRIX, COLOUR_GREY, DEPOT_WIDGET_MATRIX), SetDataTip(0x0, STR_NULL), SetResize(1, 1), SetScrollbar(DEPOT_WIDGET_V_SCROLL),
15790
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
73 NWidget(NWID_SELECTION, INVALID_COLOUR, DEPOT_WIDGET_SHOW_H_SCROLL),
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
74 NWidget(NWID_HSCROLLBAR, COLOUR_GREY, DEPOT_WIDGET_H_SCROLL),
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
75 EndContainer(),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
76 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
77 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
78 NWidget(WWT_IMGBTN, COLOUR_GREY, DEPOT_WIDGET_SELL), SetDataTip(0x0, STR_NULL), SetResize(0, 1), SetFill(0, 1),
15790
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
79 NWidget(NWID_SELECTION, INVALID_COLOUR, DEPOT_WIDGET_SHOW_SELL_CHAIN),
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
80 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),
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
81 EndContainer(),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
82 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
83 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
84 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
85 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
86 EndContainer(),
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
87 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
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95 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
96 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
97 NWidget(WWT_RESIZEBOX, COLOUR_GREY),
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
98 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
99 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
100
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
101 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
102 WDP_AUTO, 362, 123,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
103 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
104 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
105 _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
106 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
107
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
108 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
109 WDP_AUTO, 316, 97,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
110 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
111 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
112 _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
113 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
114
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
115 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
116 WDP_AUTO, 306, 99,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
117 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
118 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
119 _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
120 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
121
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
122 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
123 WDP_AUTO, 332, 99,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5824
diff changeset
124 WC_VEHICLE_DEPOT, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13706
diff changeset
125 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
126 _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
127 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
128
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
129 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
130
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 /**
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 * 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
133 * @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
134 * @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
135 * @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
136 * @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
137 */
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
138 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
139 {
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
140 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
141
11922
0a4b63f3f3c3 (svn r16325) -Codechange: replace GetPoolItem(index) by PoolItem::Get(index)
smatz <smatz@openttd.org>
parents: 11896
diff changeset
142 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
143
7486
1af81beda3fb (svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 7479
diff changeset
144 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
145 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
146
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
147 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
148 {
11922
0a4b63f3f3c3 (svn r16325) -Codechange: replace GetPoolItem(index) by PoolItem::Get(index)
smatz <smatz@openttd.org>
parents: 11896
diff changeset
149 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
150
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
151 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
152
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
153 if (wagon == NULL) {
12460
4acae7d6f5ed (svn r16894) -Codechange: Add [Specialised]Vehicle::Last().
frosch <frosch@openttd.org>
parents: 12450
diff changeset
154 if (head != NULL) wagon = head->Last();
12762
839af08c39fc (svn r17228) -Codechange: some coding style fixes
rubidium <rubidium@openttd.org>
parents: 12729
diff changeset
155 } 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
156 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
157 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
158 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
159
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
160 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
161
15890
52d3e250c976 (svn r20572) -Codechange: free/reserve some bits in the wagon move command to increase the vehicle pool limit
rubidium <rubidium@openttd.org>
parents: 15865
diff changeset
162 DoCommandP(v->tile, v->index | (_ctrl_pressed ? 1 : 0) << 20, wagon == NULL ? INVALID_VEHICLE : wagon->index, 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
163 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
164
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
165 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
166 * 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
167 * @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
168 */
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
169 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
170
13147
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
171 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
172 {
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
173 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
174 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
175
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
176 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
177 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
178 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
179 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
180
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
181 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
182 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
183 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
184 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
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 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
187 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
188 }
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
189
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
190 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
191 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
192 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
193 _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
194 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
195 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
196 _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
197 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
198 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
199 _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
200 }
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
201
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
202 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
203 * 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
204 * @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
205 */
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
206 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
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_TRAIN].width = 0;
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_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
210
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
211 _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
212 _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
213
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
214 InitBlocksizeForShipAircraft(VEH_SHIP);
71af1fabcf0f (svn r17652) -Codechange: Merging/renaming the depot block-size functions.
alberth <alberth@openttd.org>
parents: 13145
diff changeset
215 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
216 }
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
217
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
218 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
219 const Sprite *GetAircraftSprite(EngineID engine);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
220
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
221 struct DepotWindow : Window {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
222 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
223 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
224 VehicleType type;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
225 bool generate_list;
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
226 VehicleList vehicle_list;
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
227 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
228 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
229 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
230 Scrollbar *vscroll;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
231
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
232 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
233 {
13602
47a93be74755 (svn r18126) -Codechange: remove duplicate (since r18119) scrollbar capacity/matrix initialisation
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
234 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
235
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
236 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
237 this->vehicle_over = INVALID_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
238 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
239 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
240 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
241
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
242 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
243 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
244 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
245 /* 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
246 this->GetWidget<NWidgetStacked>(DEPOT_WIDGET_SHOW_RENAME)->SetDisplayedPlane(type == VEH_AIRCRAFT ? SZSP_NONE : 0);
15790
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
247 /* Only train depots have a horizontal scrollbar and a 'sell chain' button */
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
248 this->GetWidget<NWidgetStacked>(DEPOT_WIDGET_SHOW_H_SCROLL)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_HORIZONTAL);
68a68f0554f9 (svn r20465) -Codechange: Use NWID_SELECTION to hide horizontal scrollbar and 'sell chain' button for non-train depot windows.
frosch <frosch@openttd.org>
parents: 15789
diff changeset
249 this->GetWidget<NWidgetStacked>(DEPOT_WIDGET_SHOW_SELL_CHAIN)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_NONE);
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
250 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
251 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
252
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
253 this->owner = GetTileOwner(tile);
15857
9a9ec79c5d25 (svn r20539) -Codechange: make order backups more self-contained.
rubidium <rubidium@openttd.org>
parents: 15851
diff changeset
254 OrderBackup::Reset();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
255 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
256
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
257 ~DepotWindow()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
258 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
259 DeleteWindowById(WC_BUILD_VEHICLE, this->window_number);
15863
4e8143e1afeb (svn r20545) -Codechange: make sure an OrderBackup gets cleared when the depot it belongs to gets removed, the depot window gets closed or when another vehicle gets sold in a depot
rubidium <rubidium@openttd.org>
parents: 15857
diff changeset
260 OrderBackup::Reset(this->window_number);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
261 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
262
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
263 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
264 * 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
265 * @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
266 * @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
267 * @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
268 * @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
269 */
13621
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
270 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
271 {
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
272 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
273 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
274
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16349
diff changeset
275 bool rtl = _current_text_dir == TD_RTL;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
276 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
277 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
278
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
279 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
280 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
281 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
282 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
283
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
284 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
285 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
286 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
287
17221
edf36d7f3f86 (svn r21960) -Change: show the length of vehicles in tiles, instead of half tiles in the depot
rubidium <rubidium@openttd.org>
parents: 17185
diff changeset
288 /* Length of consist in tiles (rounded up) */
edf36d7f3f86 (svn r21960) -Change: show the length of vehicles in tiles, instead of half tiles in the depot
rubidium <rubidium@openttd.org>
parents: 17185
diff changeset
289 SetDParam(0, CeilDiv(u->gcache.cached_total_length, TILE_SIZE));
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
290 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
291 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
292 }
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
293
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
294 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
295 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
296 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
297 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
298 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
299 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
300 this->sel);
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
301 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
302 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
303 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
304 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
305
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
306 uint diff_x, diff_y;
16783
37b5683941fa (svn r21516) -Codechange: Add IsGroundVehicle function to the Vehicle class.
terkhen <terkhen@openttd.org>
parents: 16744
diff changeset
307 if (v->IsGroundVehicle()) {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
308 /* Arrange unitnumber and flag horizontally */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
309 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
310 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
311 } else {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
312 /* Arrange unitnumber and flag vertically */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
313 diff_x = WD_FRAMERECT_LEFT;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
314 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
315 }
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
316 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
317 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
318
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
319 if (free_wagon) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
320 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
321 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
322 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
323
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
324 SetDParam(0, v->unitnumber);
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
325 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
326 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
327 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
328
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
329 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
330 {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
331 if (widget != DEPOT_WIDGET_MATRIX) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
332
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16349
diff changeset
333 bool rtl = _current_text_dir == TD_RTL;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
334
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
335 /* 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
336 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
337 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
338 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
339
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
340 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
341 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
342 int y;
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
343 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
344 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
345 /* 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
346 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
347 if (boxes_in_each_row == 1) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
348 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
349 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
350 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
351 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
352 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
353 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
354 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
355
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
356 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
357
16349
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
358 /* Draw the train wagons without 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
359 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
360 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
361 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
362 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
363 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
364
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
365 void SetStringParameters(int widget) const
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
366 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
367 if (widget != DEPOT_WIDGET_CAPTION) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
368
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
369 /* 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
370 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
371 SetDParam(0, this->type);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
372 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
373 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
374
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
375 struct GetDepotVehiclePtData {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
376 const Vehicle *head;
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
377 const Vehicle *wagon;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
378 };
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 enum DepotGUIAction {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
381 MODE_ERROR,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
382 MODE_DRAG_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
383 MODE_SHOW_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
384 MODE_START_STOP,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
385 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
386
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
387 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
388 {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
389 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
390 /* In case of RTL the widgets are swapped as a whole */
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16349
diff changeset
391 if (_current_text_dir == TD_RTL) x = matrix_widget->current_x - x;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
392
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
393 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
394 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
395 xm = x;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
396 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
397 xt = x / this->resize.step_width;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
398 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
399 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
400 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
401 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
402
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
403 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
404 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
405
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
406 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
407 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
408
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
409 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
410 /* 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
411 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
412 /* End the dragging */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
413 d->head = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
414 d->wagon = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
415 return MODE_DRAG_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
416 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
417 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
418 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
419 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
420
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
421 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
422 if (this->vehicle_list.Length() > pos) {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
423 *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
424 /* 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
425 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
426 } else {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
427 pos -= this->vehicle_list.Length();
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
428 *veh = this->wagon_list[pos];
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
429 /* 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
430 x -= VEHICLEINFO_FULL_VEHICLE_WIDTH;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
431 wagon = true;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
432 }
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 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
435 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
436 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
437 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
438 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
439
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
440 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
441 switch (this->type) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
442 case VEH_TRAIN:
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
443 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
444 case VEH_ROAD:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
445 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
446 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
447
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
448 case VEH_SHIP:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
449 case VEH_AIRCRAFT:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
450 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
451 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
452
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
453 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
454 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
455 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
456 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
457
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
458 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
459
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
460 /* Clicking on the counter */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
461 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
462
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
463 /* 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
464 x -= this->header_width;
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 /* 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
467 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
468 x -= v->GetDisplayImageWidth();
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
469 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
470 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
471
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
472 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
473
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
474 return MODE_DRAG_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
475 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
476
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
477 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
478 * 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
479 * @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
480 * @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
481 */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
482 void DepotClick(int x, int y)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
483 {
9213
d288bb9876c7 (svn r13079) -Fix: certain compilers give false warning about uninitialized variable
smatz <smatz@openttd.org>
parents: 9203
diff changeset
484 GetDepotVehiclePtData gdvp = { NULL, NULL };
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
485 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
486 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
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
16060
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
495 if (v != NULL && VehicleClicked(v)) return;
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
496
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
497 VehicleID sel = this->sel;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
498
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
499 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
500 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
501 TrainDepotMoveVehicle(v, sel, gdvp.head);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
502 } else if (v != NULL) {
16515
76154e2e02c8 (svn r21241) -Fix: Display dragged vehicles in the correct orientation while using RTL languages.
terkhen <terkhen@openttd.org>
parents: 16441
diff changeset
503 int image = v->GetImage(_current_text_dir == TD_RTL ? DIR_E : DIR_W);
16060
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
504 SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
505
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
506 this->sel = v->index;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
507 this->SetDirty();
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
508
16788
efb0333e5aad (svn r21521) -Codechange: Unify some cached values that were present in both road vehicles and trains.
terkhen <terkhen@openttd.org>
parents: 16783
diff changeset
509 _cursor.short_vehicle_offset = v->IsGroundVehicle() ? 16 - v->GetGroundVehicleCache()->cached_veh_length * 2 : 0;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
510 _cursor.vehchain = _ctrl_pressed;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
511 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
512 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
513 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
514
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
515 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
516 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
517 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
518
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
519 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
520 StartStopVehicle(v, false);
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
521 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
522
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
523 default: NOT_REACHED();
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 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
526
16349
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
527 /**
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
528 * Function to set up vehicle specific widgets (mainly sprites and strings).
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
529 * Only use this function to if the widget is used for several vehicle types and each has
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
530 * different text/sprites. If the widget is only used for a single vehicle type, or the same
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
531 * text/sprites are used every time, use the nested widget array to initialize the widget.
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
532 */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
533 void SetupWidgetData(VehicleType type)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
534 {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
535 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
536 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
537 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
538 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
539
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
540 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
541 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
542
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
543 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
544 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
545 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
546 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
547
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
548 switch (type) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
549 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
550
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
551 case VEH_TRAIN:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
552 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
553
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
554 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
555 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
556 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
557 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
558 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
559
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
560 case VEH_ROAD:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
561 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
562
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
563 /* Sprites */
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_SELL)->widget_data = SPR_SELL_ROADVEH;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
565 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
566 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
567 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
568
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
569 case VEH_SHIP:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
570 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
571
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
572 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
573 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
574 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
575 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
576 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
577
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
578 case VEH_AIRCRAFT:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
579 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
580
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
581 /* Sprites */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
582 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
583 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
584 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
585 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
586 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
587 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
588
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
589 uint count_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
590 uint header_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
591 uint flag_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
592 uint flag_height;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
593
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
594 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
595 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
596 switch (widget) {
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
597 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
598 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
599
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
600 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
601 SetDParam(0, 100);
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
602 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
603 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
604 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
605 }
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
606
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
607 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
608 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
609 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
610 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
611
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
612 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
613 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
614 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
615 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
616 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
617 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
618 }
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
619 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
620
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
621 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
622 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
623 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
624 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
625 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
626 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
627 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
628 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
629 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
630 }
13706
a15d8546fedf (svn r18231) -Fix: Enable filling of matrix widget in the depot gui.
alberth <alberth@openttd.org>
parents: 13705
diff changeset
631 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
632 fill->height = resize->height;
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
633 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
634 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
635 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
636 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
637
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
638 virtual void OnInvalidateData(int data)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
639 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
640 this->generate_list = true;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
641 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
642
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
643 virtual void OnPaint()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
644 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
645 if (this->generate_list) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
646 /* Generate the vehicle list
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
647 * 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
648 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
649 this->generate_list = false;
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
650 DepotSortList(&this->vehicle_list);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
651 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
652
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
653 /* determine amount of items for scroller */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
654 if (this->type == VEH_TRAIN) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
655 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
656 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
657 uint width = 0;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
658 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
659 width += v->GetDisplayImageWidth();
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
660 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
661 max_width = max(max_width, width);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
662 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
663 /* 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
664 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
665 this->hscroll->SetCount(max_width);
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
666 } 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
667 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
668 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
669
13251
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
670 /* 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
671 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
672 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
673 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
674 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
675 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
676 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
677 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
678 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
679 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
680 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
681 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
682 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
683
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
684 this->DrawWidgets();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
685 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
686
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14258
diff changeset
687 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
688 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
689 switch (widget) {
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
690 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
691 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
692 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
693 break;
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
694 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
695
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
696 case DEPOT_WIDGET_BUILD: // Build vehicle
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
697 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
698 ShowBuildVehicleWindow(this->window_number, this->type);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
699 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
700
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
701 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
702 this->SetWidgetDirty(DEPOT_WIDGET_CLONE);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
703 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
704
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
705 if (this->IsWidgetLowered(DEPOT_WIDGET_CLONE)) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
706 static const CursorID clone_icons[] = {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
707 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
708 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
709 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
710
16060
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
711 SetObjectToPlaceWnd(clone_icons[this->type], PAL_NONE, HT_VEHICLE, this);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
712 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
713 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
714 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
715 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
716
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
717 case DEPOT_WIDGET_LOCATION:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
718 if (_ctrl_pressed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
719 ShowExtraViewPortWindow(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
720 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
721 ScrollMainWindowToTile(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
722 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
723 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
724
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
725 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
726 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
727 SetDParam(1, Depot::GetByTile((TileIndex)this->window_number)->index);
16678
b8bcbaa95eda (svn r21409) -Codechange: limit depot name by amount of characters, not bytes
rubidium <rubidium@openttd.org>
parents: 16515
diff changeset
728 ShowQueryString(STR_DEPOT_NAME, STR_DEPOT_RENAME_DEPOT_CAPTION, MAX_LENGTH_DEPOT_NAME_CHARS, MAX_LENGTH_DEPOT_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS);
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
729 break;
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
730
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
731 case DEPOT_WIDGET_STOP_ALL:
16095
c5d11fc743df (svn r20788) -Fix (r20733)[FS#4119]: start/stop all vehicles from non-train depots was broken
yexo <yexo@openttd.org>
parents: 16077
diff changeset
732 case DEPOT_WIDGET_START_ALL: {
c5d11fc743df (svn r20788) -Fix (r20733)[FS#4119]: start/stop all vehicles from non-train depots was broken
yexo <yexo@openttd.org>
parents: 16077
diff changeset
733 VehicleListIdentifier vli(VL_DEPOT_LIST, this->type, this->owner);
c5d11fc743df (svn r20788) -Fix (r20733)[FS#4119]: start/stop all vehicles from non-train depots was broken
yexo <yexo@openttd.org>
parents: 16077
diff changeset
734 DoCommandP(this->window_number, (widget == DEPOT_WIDGET_START_ALL ? (1 << 0) : 0), vli.Pack(), CMD_MASS_START_STOP);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
735 break;
16095
c5d11fc743df (svn r20788) -Fix (r20733)[FS#4119]: start/stop all vehicles from non-train depots was broken
yexo <yexo@openttd.org>
parents: 16077
diff changeset
736 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
737
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
738 case DEPOT_WIDGET_SELL_ALL:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
739 /* 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
740 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
741 TileIndex tile = this->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
742 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
743
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
744 SetDParam(0, vehtype);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
745 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
746 ShowQuery(
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
747 STR_DEPOT_CAPTION,
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
748 STR_DEPOT_SELL_CONFIRMATION_TEXT,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
749 this,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
750 DepotSellAllConfirmationCallback
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
751 );
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
752 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
753 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
754
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
755 case DEPOT_WIDGET_VEHICLE_LIST:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
756 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
757 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
758
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
759 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
760 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
761 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
762
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
763 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
764 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
765
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
766 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
767 {
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
768 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
769
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
770 /* 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
771 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
772 }
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
773
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
774 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
775 {
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
776 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
777
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
778 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
779 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
780 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
781 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
782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
783 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
784
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
785 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
786
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
787 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
788
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
789 /* 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
790 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
791
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
792 /* 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
793 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
794 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
795 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
796 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
797 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
798 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
799
17185
ccebafd2a9ba (svn r21924) -Codechange: Unify some parts of the articulated vehicle code.
terkhen <terkhen@openttd.org>
parents: 17152
diff changeset
800 if (w->type == VEH_TRAIN && !w->HasArticulatedPart()) {
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
801 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
802 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
803 }
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
804 }
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
805
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
806 /* 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
807 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
808 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
809 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
810
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 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
812 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
813
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
814 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
815 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
816 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
817 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
818 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
819 }
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
820
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
821 /* 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
822 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
823 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
824 args[1] = (uint64)(size_t)details;
16744
577cabe45b26 (svn r21477) -Fix [FS#4300]: tooltips were removed when their related window got closed
rubidium <rubidium@openttd.org>
parents: 16678
diff changeset
825 GuiShowTooltips(this, whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK);
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
826
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 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
828 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
829
16060
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
830 /**
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
831 * Clones a vehicle
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
832 * @param v the original vehicle to clone
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
833 */
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
834 virtual void OnVehicleSelect(const Vehicle *v)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
835 {
16060
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
836 if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle)) {
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
837 ResetObjectToPlace();
f814822627f3 (svn r20753) -Feature [FS#3999]: make it possible to select vehicle to clone and vehicle to clone orders from directly from vehicle lists and depot window
smatz <smatz@openttd.org>
parents: 15944
diff changeset
838 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
839 }
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
840
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
841 virtual void OnPlaceObjectAbort()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
842 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
843 /* abort clone */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
844 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
845 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
846
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
847 /* abort drag & drop */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
848 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
849 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
850 this->SetWidgetDirty(DEPOT_WIDGET_MATRIX);
17066
21cc53f6368d (svn r21803) -Cleanup: Remove unnecessary semicolons.
terkhen <terkhen@openttd.org>
parents: 16788
diff changeset
851 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
852
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
853 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
854 {
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
855 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
856
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
857 /* 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
858 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
859 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
860 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
861 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
862 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
863 return;
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
864 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
865
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
866 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
867 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
868 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
869
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
870 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
871
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
872 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
873 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
874 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
875 /* 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
876 * 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
877 * 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
878 */
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
879 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
880 } 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
881 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
882 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
883 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
884 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
885 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
886
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
887 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
888
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
889 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
890 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
891 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
892
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
893 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
894 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
895 switch (widget) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
896 case DEPOT_WIDGET_MATRIX: {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
897 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
898 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
899
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
900 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
901 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
902
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
903 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
904 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
905 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
906
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
907 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
908 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
909 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
910 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
911 } 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
912 this->vehicle_over = INVALID_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
913 TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head);
17185
ccebafd2a9ba (svn r21924) -Codechange: Unify some parts of the articulated vehicle code.
terkhen <terkhen@openttd.org>
parents: 17152
diff changeset
914 } else if (gdvp.head != NULL && gdvp.head->IsFrontEngine()) {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
915 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
916 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
917 }
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
918 } 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
919 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
920 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
921 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
922 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
923
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
924 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
925 if (this->IsWidgetDisabled(widget)) return;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
926 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
927
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
928 this->HandleButtonClick(widget);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
929
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
930 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
931 this->sel = INVALID_VEHICLE;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
932 this->SetDirty();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
933
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
934 int sell_cmd = (v->type == VEH_TRAIN && (widget == DEPOT_WIDGET_SELL_CHAIN || _ctrl_pressed)) ? 1 : 0;
15891
67b39929d6a2 (svn r20573) -Codechange: free/reserve some bits in the sell vehicle command to increase the vehicle pool limit
rubidium <rubidium@openttd.org>
parents: 15890
diff changeset
935 DoCommandP(v->tile, v->index | sell_cmd << 20 | MAKE_ORDER_BACKUP_FLAG, 0, GetCmdSellVeh(v->type));
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
936 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
937 }
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
938
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
939 default:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
940 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
941 this->SetDirty();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
942 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
943 _cursor.vehchain = false;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
944 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
945
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
946 virtual void OnTimeout()
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
947 {
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
948 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
949 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
950 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
951 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
952 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
953 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
954 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
955 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
956 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
957
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
958 virtual void OnResize()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
959 {
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13687
diff changeset
960 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
961 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
962 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
963 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
964 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
965 } 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
966 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
967 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
968 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
969 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
970
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
971 virtual EventState OnCTRLStateChange()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
972 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
973 if (this->sel != INVALID_VEHICLE) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
974 _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
975 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
976 return ES_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
977 }
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
978
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
979 return ES_NOT_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
980 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
981 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
982
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
983 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
984 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
985 if (confirmed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
986 DepotWindow *w = (DepotWindow*)win;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
987 TileIndex tile = w->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
988 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
989 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
990 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
991 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
992
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
993 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
994 * 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
995 * @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
996 * @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
997 */
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
998 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
999 {
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
1000 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
1001
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
1002 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
1003 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
1004 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
1005 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
1006 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
1007 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
1008 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
1009 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1010
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
1011 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
1012 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1013
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1014 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1015 * 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
1016 * @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
1017 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1018 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
1019 {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1020 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
1021
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1022 /* 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
1023 * 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
1024 */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1025 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
1026
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1027 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
1028 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
1029 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
1030 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1031 }