annotate src/depot_gui.cpp @ 17579:105b4e4eb168 draft

(svn r22343) -Change: Remove pixel limiter for query strings.
author terkhen <terkhen@openttd.org>
date Sun, 17 Apr 2011 18:42:17 +0000
parents 8d41eb448304
children 8f6022f41538
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
17541
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
288 /* Length of consist in tiles with 1 fractional digit (rounded up) */
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
289 SetDParam(0, CeilDiv(u->gcache.cached_total_length * 10, TILE_SIZE));
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
290 SetDParam(1, 1);
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
291 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_DECIMAL, 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
292 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
293 }
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
294
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
295 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
296 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
297 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
298 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
299 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
300 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
301 this->sel);
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
302 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
303 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
304 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
305 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
306
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
307 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
308 if (v->IsGroundVehicle()) {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
309 /* Arrange unitnumber and flag horizontally */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
310 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
311 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
312 } else {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
313 /* Arrange unitnumber and flag vertically */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
314 diff_x = WD_FRAMERECT_LEFT;
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
315 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
316 }
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
317 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
318 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
319
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
320 if (free_wagon) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
321 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
322 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
323 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
324
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
325 SetDParam(0, v->unitnumber);
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
326 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
327 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
328 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
329
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
330 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
331 {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
332 if (widget != DEPOT_WIDGET_MATRIX) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
333
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16349
diff changeset
334 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
335
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
336 /* 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
337 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
338 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
339 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
340
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
341 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
342 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
343 int y;
495608777888 (svn r18145) -Codechange: pass the 'proper' left and right values to DrawVehicleInDepot
rubidium <rubidium@openttd.org>
parents: 13609
diff changeset
344 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
345 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
346 /* 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
347 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
348 if (boxes_in_each_row == 1) {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
349 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
350 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
351 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
352 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
353 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
354 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
355 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
356
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
357 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
358
16349
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
359 /* 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
360 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
361 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
362 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
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
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
366 void SetStringParameters(int widget) const
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
367 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
368 if (widget != DEPOT_WIDGET_CAPTION) return;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
369
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
370 /* 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
371 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
372 SetDParam(0, this->type);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
373 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
374 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
375
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
376 struct GetDepotVehiclePtData {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
377 const Vehicle *head;
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
378 const Vehicle *wagon;
9201
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
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
381 enum DepotGUIAction {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
382 MODE_ERROR,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
383 MODE_DRAG_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
384 MODE_SHOW_VEHICLE,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
385 MODE_START_STOP,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
386 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
387
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
388 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
389 {
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
390 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
391 /* 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
392 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
393
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
394 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
395 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
396 xm = x;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
397 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
398 xt = x / this->resize.step_width;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
399 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
400 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
401 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
402 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
403
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
404 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
405 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
406
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
407 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
408 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
409
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
410 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
411 /* 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
412 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
413 /* End the dragging */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
414 d->head = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
415 d->wagon = NULL;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
416 return MODE_DRAG_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
417 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
418 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
419 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
420 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
421
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
422 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
423 if (this->vehicle_list.Length() > pos) {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
424 *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
425 /* 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
426 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
427 } else {
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
428 pos -= this->vehicle_list.Length();
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
429 *veh = this->wagon_list[pos];
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
430 /* 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
431 x -= VEHICLEINFO_FULL_VEHICLE_WIDTH;
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
432 wagon = true;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
433 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
434
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
435 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
436 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
437 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
438 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
439 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
440
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
441 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
442 switch (this->type) {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
443 case VEH_TRAIN:
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
444 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
445 case VEH_ROAD:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
446 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
447 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
448
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
449 case VEH_SHIP:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
450 case VEH_AIRCRAFT:
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
451 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
452 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
453
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
454 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
455 }
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
456 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
457 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
458
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
459 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
460
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
461 /* Clicking on the counter */
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
462 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
463
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
464 /* 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
465 x -= this->header_width;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
466
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
467 /* 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
468 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
469 x -= v->GetDisplayImageWidth();
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
470 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
471 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
472
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
473 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
474
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
475 return MODE_DRAG_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
476 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
477
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
478 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
479 * 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
480 * @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
481 * @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
482 */
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
483 void DepotClick(int x, int y)
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
484 {
9213
d288bb9876c7 (svn r13079) -Fix: certain compilers give false warning about uninitialized variable
smatz <smatz@openttd.org>
parents: 9203
diff changeset
485 GetDepotVehiclePtData gdvp = { NULL, NULL };
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
486 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
487 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
488
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
489 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
490
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
491 switch (mode) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
492 case MODE_ERROR: // invalid
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
493 return;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
494
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
495 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
496 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
497
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
498 VehicleID sel = this->sel;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
499
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
500 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
501 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
502 TrainDepotMoveVehicle(v, sel, gdvp.head);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
503 } 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
504 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
505 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
506
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
507 this->sel = v->index;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
508 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
509
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
510 _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
511 _cursor.vehchain = _ctrl_pressed;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
512 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
513 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
514 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
515
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
516 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
517 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
518 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
519
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
520 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
521 StartStopVehicle(v, false);
15084
d2731cec52ab (svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
smatz <smatz@openttd.org>
parents: 15050
diff changeset
522 break;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
523
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
524 default: NOT_REACHED();
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 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
527
16349
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
528 /**
b1fc0cfd2943 (svn r21060) -Doc: Improved wording of comments (mostly by __ln__)
alberth <alberth@openttd.org>
parents: 16095
diff changeset
529 * 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
530 * 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
531 * 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
532 * 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
533 */
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
534 void SetupWidgetData(VehicleType type)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
535 {
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
536 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
537 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
538 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
539 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
540
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
541 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
542 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
543
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
544 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
545 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
546 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
547 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
548
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
549 switch (type) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
550 default: NOT_REACHED();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
551
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
552 case VEH_TRAIN:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
553 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
554
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
555 /* Sprites */
13144
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)->widget_data = SPR_SELL_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_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
558 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
559 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
560
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
561 case VEH_ROAD:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
562 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
563
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
564 /* Sprites */
13144
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)->widget_data = SPR_SELL_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_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
567 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
568 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
569
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
570 case VEH_SHIP:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
571 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
572
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
573 /* Sprites */
13144
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)->widget_data = SPR_SELL_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_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
576 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
577 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
578
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
579 case VEH_AIRCRAFT:
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
580 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
581
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
582 /* Sprites */
13144
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)->widget_data = SPR_SELL_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_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
585 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
586 break;
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 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
589
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
590 uint count_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
591 uint header_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_width;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
593 uint flag_height;
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
594
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
595 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
596 {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
597 switch (widget) {
13630
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
598 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
599 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
600
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
601 if (this->type == VEH_TRAIN) {
17541
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
602 SetDParam(0, 1000);
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
603 SetDParam(1, 1);
8d41eb448304 (svn r22305) -Add: One digit for the fractional part of train lengths in the depot view.
frosch <frosch@openttd.org>
parents: 17492
diff changeset
604 this->count_width = GetStringBoundingBox(STR_TINY_BLACK_DECIMAL).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
605 } else {
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
606 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
607 }
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
608
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
609 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
610 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
611 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
612 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
613
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
614 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
615 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
616 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
617 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
618 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
619 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
620 }
13639
455a6f0ae773 (svn r18163) -Codechange: make the depot GUI RTL aware
rubidium <rubidium@openttd.org>
parents: 13633
diff changeset
621 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
622
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
623 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
624 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
625 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
626 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
627 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
628 } else {
40489a4d0822 (svn r18154) -Codechange: let the depot window better scale with bigger fonts
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
629 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
630 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
631 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
632 }
13706
a15d8546fedf (svn r18231) -Fix: Enable filling of matrix widget in the depot gui.
alberth <alberth@openttd.org>
parents: 13705
diff changeset
633 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
634 fill->height = resize->height;
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
635 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
636 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
637 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
638 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
639
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
640 /**
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
641 * Some data on this window has become invalid.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
642 * @param data Information about the changed data.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
643 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
644 */
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17221
diff changeset
645 virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
646 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
647 this->generate_list = true;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
648 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
649
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
650 virtual void OnPaint()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
651 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
652 if (this->generate_list) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
653 /* Generate the vehicle list
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
654 * 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
655 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
656 this->generate_list = false;
9351
feaf9bae7580 (svn r13248) -Codechange: Use VehicleList for depot GUI.
peter1138 <peter1138@openttd.org>
parents: 9344
diff changeset
657 DepotSortList(&this->vehicle_list);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
658 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
659
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
660 /* determine amount of items for scroller */
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
661 if (this->type == VEH_TRAIN) {
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
662 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
663 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
664 uint width = 0;
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
665 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
666 width += v->GetDisplayImageWidth();
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
667 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
668 max_width = max(max_width, width);
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
669 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
670 /* 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
671 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
672 this->hscroll->SetCount(max_width);
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
673 } 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
674 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
675 }
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
676
13251
7c4df1153a65 (svn r17760) -Revert (r17648): _local_company is less constant than you'd expect.
alberth <alberth@openttd.org>
parents: 13148
diff changeset
677 /* 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
678 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
679 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
680 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
681 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
682 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
683 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
684 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
685 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
686 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
687 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
688 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
689 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
690
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
691 this->DrawWidgets();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
692 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
693
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14258
diff changeset
694 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
695 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
696 switch (widget) {
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
697 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
698 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
699 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
700 break;
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
701 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
702
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
703 case DEPOT_WIDGET_BUILD: // Build vehicle
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
704 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
705 ShowBuildVehicleWindow(this->window_number, this->type);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
706 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
707
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
708 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
709 this->SetWidgetDirty(DEPOT_WIDGET_CLONE);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
710 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
711
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
712 if (this->IsWidgetLowered(DEPOT_WIDGET_CLONE)) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
713 static const CursorID clone_icons[] = {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
714 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
715 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
716 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
717
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
718 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
719 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
720 ResetObjectToPlace();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
721 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
722 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
723
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
724 case DEPOT_WIDGET_LOCATION:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
725 if (_ctrl_pressed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
726 ShowExtraViewPortWindow(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
727 } else {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
728 ScrollMainWindowToTile(this->window_number);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
729 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
730 break;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
731
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
732 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
733 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
734 SetDParam(1, Depot::GetByTile((TileIndex)this->window_number)->index);
17579
105b4e4eb168 (svn r22343) -Change: Remove pixel limiter for query strings.
terkhen <terkhen@openttd.org>
parents: 17541
diff changeset
735 ShowQueryString(STR_DEPOT_NAME, STR_DEPOT_RENAME_DEPOT_CAPTION, MAX_LENGTH_DEPOT_NAME_CHARS, 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
736 break;
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
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_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
739 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
740 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
741 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
742 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
743 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
744
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
745 case DEPOT_WIDGET_SELL_ALL:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
746 /* 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
747 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
748 TileIndex tile = this->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
749 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
750
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
751 SetDParam(0, vehtype);
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
752 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
753 ShowQuery(
15167
2ef5704286b9 (svn r19796) -Codechange: introduce and use a {DEPOT} string command
rubidium <rubidium@openttd.org>
parents: 15088
diff changeset
754 STR_DEPOT_CAPTION,
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
755 STR_DEPOT_SELL_CONFIRMATION_TEXT,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
756 this,
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
757 DepotSellAllConfirmationCallback
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
758 );
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
759 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
760 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
761
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
762 case DEPOT_WIDGET_VEHICLE_LIST:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
763 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
764 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
765
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
766 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
767 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
768 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
769
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
770 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
771 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
772
15172
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
773 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
774 {
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
775 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
776
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
777 /* 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
778 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
779 }
e9741bd69a65 (svn r19801) -Add [FS#3691]: custom naming of depots. Based on work by sbr
rubidium <rubidium@openttd.org>
parents: 15167
diff changeset
780
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
781 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
782 {
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
783 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
784
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
785 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
786 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
787 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
788 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
789
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
790 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
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 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
793
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
794 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
795
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 /* 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
797 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
798
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
799 /* 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
800 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
801 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
802 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
803 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
804 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
805 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
806
17185
ccebafd2a9ba (svn r21924) -Codechange: Unify some parts of the articulated vehicle code.
terkhen <terkhen@openttd.org>
parents: 17152
diff changeset
807 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
808 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
809 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
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 }
9782
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
812
15496
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
813 /* 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
814 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
815 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
816 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
817
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 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
819 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
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 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
822 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
823 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
824 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
825 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
826 }
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
827
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
828 /* 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
829 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
830 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
831 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
832 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
833
9df3018e209b (svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
rubidium <rubidium@openttd.org>
parents: 15472
diff changeset
834 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
835 }
93d9386b56ac (svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.
frosch <frosch@openttd.org>
parents: 9751
diff changeset
836
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
837 /**
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 * 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
839 * @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
840 */
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
841 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
842 {
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
843 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
844 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
845 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
846 }
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
847
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
848 virtual void OnPlaceObjectAbort()
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
849 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
850 /* abort clone */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
851 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
852 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
853
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
854 /* abort drag & drop */
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
855 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
856 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
857 this->SetWidgetDirty(DEPOT_WIDGET_MATRIX);
17066
21cc53f6368d (svn r21803) -Cleanup: Remove unnecessary semicolons.
terkhen <terkhen@openttd.org>
parents: 16788
diff changeset
858 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
859
15253
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
860 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
861 {
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
862 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
863
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
864 /* 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
865 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
866 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
867 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
868 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
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 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
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
873 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
874 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
875 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
876
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
877 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
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 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
880 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
881 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
882 /* 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
883 * 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
884 * 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
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 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
887 } 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
888 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
889 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
890 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
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 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
893
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
894 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
895
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
896 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
897 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
898 }
bd9b4d0ad9fe (svn r19888) -Add [FS#3705]: Add highlighting of drag destination in depot gui (sbr).
alberth <alberth@openttd.org>
parents: 15172
diff changeset
899
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
900 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
901 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
902 switch (widget) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
903 case DEPOT_WIDGET_MATRIX: {
9344
5940dd28c40d (svn r13240) -Codechange: More const-ness for GUI code.
peter1138 <peter1138@openttd.org>
parents: 9343
diff changeset
904 const Vehicle *v = NULL;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
905 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
906
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
907 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
908 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
909
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
910 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
911 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
912 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
913
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
914 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
915 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
916 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
917 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
918 } 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
919 this->vehicle_over = INVALID_VEHICLE;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
920 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
921 } 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
922 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
923 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
924 }
13324
82e58acd7cec (svn r17833) -Codechange: Depot gui should use relative widget coordinates for clicking.
alberth <alberth@openttd.org>
parents: 13321
diff changeset
925 } 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
926 ShowVehicleViewWindow(v);
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
927 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
928 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
929 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
930
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
931 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
932 if (this->IsWidgetDisabled(widget)) return;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
933 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
934
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
935 this->HandleButtonClick(widget);
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
936
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
937 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
938 this->sel = INVALID_VEHICLE;
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
939 this->SetDirty();
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
940
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
941 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
942 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
943 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15496
diff changeset
944 }
13145
101b6521230c (svn r17650) -Codechange: Checking a condition once is enough.
alberth <alberth@openttd.org>
parents: 13144
diff changeset
945
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
946 default:
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
947 this->sel = INVALID_VEHICLE;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
948 this->SetDirty();
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
949 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
950 _cursor.vehchain = false;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
951 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
952
12729
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
953 virtual void OnTimeout()
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
954 {
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
955 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
956 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
957 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
958 }
13144
99a2d7dde8ee (svn r17649) -Codechange: Depot gui uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13143
diff changeset
959 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
960 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
961 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
962 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
963 }
6a7a8e1b4bde (svn r17194) -Fix (r17175): Depot sell buttons did not raise again.
alberth <alberth@openttd.org>
parents: 12720
diff changeset
964
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
965 virtual void OnResize()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
966 {
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13687
diff changeset
967 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
968 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
969 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
970 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
971 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
972 } 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
973 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
974 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
975 }
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
976 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
977
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
978 virtual EventState OnCTRLStateChange()
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
979 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
980 if (this->sel != INVALID_VEHICLE) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
981 _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
982 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
983 return ES_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
984 }
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
985
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
986 return ES_NOT_HANDLED;
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
987 }
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
988 };
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
989
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
990 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
991 {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
992 if (confirmed) {
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
993 DepotWindow *w = (DepotWindow*)win;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
994 TileIndex tile = w->window_number;
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
995 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
996 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
997 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
998 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
999
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1000 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1001 * 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
1002 * @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
1003 * @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
1004 */
6638
5479975c4e36 (svn r9869) -Codechange: replace some bytes with VehicleType, i.e. more type strictness.
rubidium <rubidium@openttd.org>
parents: 6621
diff changeset
1005 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
1006 {
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
1007 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
1008
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
1009 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
1010 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
1011 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
1012 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
1013 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
1014 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
1015 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
1016 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1017
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
1018 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
1019 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1020
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1021 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1022 * 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
1023 * @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
1024 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1025 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
1026 {
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1027 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
1028
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1029 /* 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
1030 * 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
1031 */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1032 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
1033
9201
cbf6bd9b9c33 (svn r13067) -Codechange: make a class of the DepotWindow.
rubidium <rubidium@openttd.org>
parents: 9188
diff changeset
1034 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
1035 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
1036 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
1037 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1038 }