Mercurial > hg > openttd
annotate src/station_gui.cpp @ 9273:72a6d2e60834 draft
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 17 May 2008 12:48:06 +0000 |
parents | f7d71b69b539 |
children | add307f2e6ea |
rev | line source |
---|---|
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1 /* $Id$ */ |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
2 |
9111
d48433370037
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents:
9094
diff
changeset
|
3 /** @file station_gui.cpp The GUI for stations. */ |
6420
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6365
diff
changeset
|
4 |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
5 #include "stdafx.h" |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
6 #include "openttd.h" |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
7 #include "debug.h" |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
8 #include "gui.h" |
8107
f65cf2bc3255
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium <rubidium@openttd.org>
parents:
8106
diff
changeset
|
9 #include "window_gui.h" |
f65cf2bc3255
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium <rubidium@openttd.org>
parents:
8106
diff
changeset
|
10 #include "textbuf_gui.h" |
8785
2a8950a812dc
(svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium <rubidium@openttd.org>
parents:
8762
diff
changeset
|
11 #include "station_base.h" |
8254
7d580c9c41fb
(svn r11818) -Codechange: split player.h into smaller pieces.
rubidium <rubidium@openttd.org>
parents:
8224
diff
changeset
|
12 #include "player_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
|
13 #include "economy_func.h" |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
14 #include "town.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
|
15 #include "command_func.h" |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
16 #include "variables.h" |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
17 #include "vehicle_gui.h" |
6091
17ebeb5a2c37
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents:
5893
diff
changeset
|
18 #include "cargotype.h" |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
19 #include "station_gui.h" |
8785
2a8950a812dc
(svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium <rubidium@openttd.org>
parents:
8762
diff
changeset
|
20 #include "station_func.h" |
8114
2d6af5d7a142
(svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents:
8109
diff
changeset
|
21 #include "strings_func.h" |
8130
0586823afe39
(svn r11691) -Codechange: move+rename helpers.hpp and only include it when it is really needed.
rubidium <rubidium@openttd.org>
parents:
8121
diff
changeset
|
22 #include "core/alloc_func.hpp" |
8131
e300ac8001ae
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium <rubidium@openttd.org>
parents:
8130
diff
changeset
|
23 #include "window_func.h" |
8224
c45446125bf0
(svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents:
8179
diff
changeset
|
24 #include "viewport_func.h" |
c45446125bf0
(svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents:
8179
diff
changeset
|
25 #include "gfx_func.h" |
8284
dbb7bfe0e95c
(svn r11848) -Codechange: New class-based drop down list functionality. Lists are now dynamically generated, and can include parameters, or be extended however needed.
peter1138 <peter1138@openttd.org>
parents:
8268
diff
changeset
|
26 #include "widgets/dropdown_func.h" |
8787
ff327b646d49
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium <rubidium@openttd.org>
parents:
8785
diff
changeset
|
27 #include "newgrf_cargo.h" |
9164
2c75e77b160a
(svn r13027) -Codechange: use StrEmpty instead of arr[0] == '\0' and remove the need for WE_ON_EDIT_TEXT_CANCEL.
rubidium <rubidium@openttd.org>
parents:
9143
diff
changeset
|
28 #include "string_func.h" |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
29 |
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
|
30 #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
|
31 #include "table/sprites.h" |
2495310e220f
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents:
8254
diff
changeset
|
32 |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
33 typedef int CDECL StationSortListingTypeFunction(const void*, const void*); |
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 static StationSortListingTypeFunction StationNameSorter; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
36 static StationSortListingTypeFunction StationTypeSorter; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
37 static StationSortListingTypeFunction StationWaitingSorter; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
38 static StationSortListingTypeFunction StationRatingMaxSorter; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
39 |
8268
ab53b3bf7100
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium <rubidium@openttd.org>
parents:
8264
diff
changeset
|
40 bool _station_show_coverage; |
ab53b3bf7100
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium <rubidium@openttd.org>
parents:
8264
diff
changeset
|
41 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
42 /** |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
43 * Draw small boxes of cargo amount and ratings data at the given |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
44 * coordinates. If amount exceeds 576 units, it is shown 'full', same |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
45 * goes for the rating: at above 90% orso (224) it is also 'full' |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
46 * |
6420
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6365
diff
changeset
|
47 * @param x coordinate to draw the box at |
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6365
diff
changeset
|
48 * @param y coordinate to draw the box at |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
49 * @param type Cargo type |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
50 * @param amount Cargo amount |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
51 * @param rating ratings data for that particular cargo |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
52 * |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
53 * @note Each cargo-bar is 16 pixels wide and 6 pixels high |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
54 * @note Each rating 14 pixels wide and 1 pixel high and is 1 pixel below the cargo-bar |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
55 */ |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
56 static void StationsWndShowStationRating(int x, int y, CargoID type, uint amount, byte rating) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
57 { |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
58 static const uint units_full = 576; ///< number of units to show station as 'full' |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
59 static const uint rating_full = 224; ///< rating needed so it is shown as 'full' |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
60 |
6091
17ebeb5a2c37
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents:
5893
diff
changeset
|
61 const CargoSpec *cs = GetCargo(type); |
6122
7b95b092af6d
(svn r8858) -Codechange: Replace magic number test with class method for determining if a cargo is valid/active.
peter1138 <peter1138@openttd.org>
parents:
6091
diff
changeset
|
62 if (!cs->IsValid()) return; |
6091
17ebeb5a2c37
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents:
5893
diff
changeset
|
63 |
17ebeb5a2c37
(svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents:
5893
diff
changeset
|
64 int colour = cs->rating_colour; |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
65 uint w = (minu(amount, units_full) + 5) / 36; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
66 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
67 /* Draw total cargo (limited) on station (fits into 16 pixels) */ |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
68 if (w != 0) GfxFillRect(x, y, x + w - 1, y + 6, colour); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
69 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
70 /* Draw a one pixel-wide bar of additional cargo meter, useful |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
71 * for stations with only a small amount (<=30) */ |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
72 if (w == 0) { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
73 uint rest = amount / 5; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
74 if (rest != 0) { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
75 w += x; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
76 GfxFillRect(w, y + 6 - rest, w, y + 6, colour); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
77 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
78 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
79 |
7824
7ae5bda4e8dd
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents:
7474
diff
changeset
|
80 DrawString(x + 1, y, cs->abbrev, TC_BLACK); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
81 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
82 /* Draw green/red ratings bar (fits into 14 pixels) */ |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
83 y += 8; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
84 GfxFillRect(x + 1, y, x + 14, y, 0xB8); |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
85 rating = minu(rating, rating_full) / 16; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
86 if (rating != 0) GfxFillRect(x + 1, y, x + rating, y, 0xD0); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
87 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
88 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
89 const StringID _station_sort_listing[] = { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
90 STR_SORT_BY_DROPDOWN_NAME, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
91 STR_SORT_BY_FACILITY, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
92 STR_SORT_BY_WAITING, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
93 STR_SORT_BY_RATING_MAX, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
94 INVALID_STRING_ID |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
95 }; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
96 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
97 static char _bufcache[64]; |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
98 static const Station *_last_station; |
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 static int _internal_sort_order; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
100 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
101 static int CDECL StationNameSorter(const void *a, const void *b) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
102 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
103 const Station *st1 = *(const Station**)a; |
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
104 const Station *st2 = *(const Station**)b; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
105 char buf1[64]; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
106 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
107 SetDParam(0, st1->index); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
108 GetString(buf1, STR_STATION, lastof(buf1)); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
109 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
110 if (st2 != _last_station) { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
111 _last_station = st2; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
112 SetDParam(0, st2->index); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
113 GetString(_bufcache, STR_STATION, lastof(_bufcache)); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
114 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
115 |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
116 int r = strcmp(buf1, _bufcache); // sort by name |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
117 return (_internal_sort_order & 1) ? -r : r; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
118 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
119 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
120 static int CDECL StationTypeSorter(const void *a, const void *b) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
121 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
122 const Station *st1 = *(const Station**)a; |
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
123 const Station *st2 = *(const Station**)b; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
124 return (_internal_sort_order & 1) ? st2->facilities - st1->facilities : st1->facilities - st2->facilities; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
125 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
126 |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
127 static const uint32 _cargo_filter_max = UINT32_MAX; |
7886
6551a3580d2e
(svn r11437) -Change: when sorting stations by cargo sum, only sum the cargos that are selected in the filter. Patch by divide.
rubidium <rubidium@openttd.org>
parents:
7842
diff
changeset
|
128 static uint32 _cargo_filter = _cargo_filter_max; |
6551a3580d2e
(svn r11437) -Change: when sorting stations by cargo sum, only sum the cargos that are selected in the filter. Patch by divide.
rubidium <rubidium@openttd.org>
parents:
7842
diff
changeset
|
129 |
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 static int CDECL StationWaitingSorter(const void *a, const void *b) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
131 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
132 const Station *st1 = *(const Station**)a; |
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
133 const Station *st2 = *(const Station**)b; |
6990
a19700261804
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium <rubidium@openttd.org>
parents:
6657
diff
changeset
|
134 Money sum1 = 0, sum2 = 0; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
135 |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
136 for (CargoID j = 0; j < NUM_CARGO; j++) { |
7928
4e8dfd103163
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents:
7886
diff
changeset
|
137 if (!HasBit(_cargo_filter, j)) continue; |
7010
f0f87c5a431e
(svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents:
6990
diff
changeset
|
138 if (!st1->goods[j].cargo.Empty()) sum1 += GetTransportedGoodsIncome(st1->goods[j].cargo.Count(), 20, 50, j); |
f0f87c5a431e
(svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents:
6990
diff
changeset
|
139 if (!st2->goods[j].cargo.Empty()) sum2 += GetTransportedGoodsIncome(st2->goods[j].cargo.Count(), 20, 50, j); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
140 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
141 |
6990
a19700261804
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium <rubidium@openttd.org>
parents:
6657
diff
changeset
|
142 return (_internal_sort_order & 1) ? ClampToI32(sum2 - sum1) : ClampToI32(sum1 - sum2); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
143 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
144 |
6253
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
145 /** |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
146 * qsort-compatible version of sorting two stations by maximum rating |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
147 * @param a First object to be sorted, must be of type (const Station *) |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
148 * @param b Second object to be sorted, must be of type (const Station *) |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
149 * @return The sort order |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
150 * @retval >0 a should come before b in the list |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
151 * @retval <0 b should come before a in the list |
28e00ab69663
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
celestar <celestar@openttd.org>
parents:
6248
diff
changeset
|
152 */ |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
153 static int CDECL StationRatingMaxSorter(const void *a, const void *b) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
154 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
155 const Station *st1 = *(const Station**)a; |
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
156 const Station *st2 = *(const Station**)b; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
157 byte maxr1 = 0; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
158 byte maxr2 = 0; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
159 |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
160 for (CargoID j = 0; j < NUM_CARGO; j++) { |
7928
4e8dfd103163
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents:
7886
diff
changeset
|
161 if (HasBit(st1->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr1 = max(maxr1, st1->goods[j].rating); |
4e8dfd103163
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents:
7886
diff
changeset
|
162 if (HasBit(st2->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr2 = max(maxr2, st2->goods[j].rating); |
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 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
165 return (_internal_sort_order & 1) ? maxr2 - maxr1 : maxr1 - maxr2; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
166 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
167 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
168 typedef GUIList<const Station*> GUIStationList; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
169 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
170 /** |
8992
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
171 * Set the station sort flag for all station-list windows. |
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
172 * @param sl_flag Sort list flag to set for all station-list windows |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
173 */ |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
174 static void SetStationListsFlag(SortListFlags sl_flag) |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
175 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
176 Window *const *wz; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
177 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
178 FOR_ALL_WINDOWS(wz) { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
179 Window *w = *wz; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
180 if (w->window_class == WC_STATION_LIST) { |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
181 dynamic_cast<GUIStationList*>(w)->flags |= sl_flag; |
9116
44beb31166aa
(svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium <rubidium@openttd.org>
parents:
9111
diff
changeset
|
182 w->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
|
183 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
184 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
185 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
186 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
187 /** |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
188 * Set the 'VL_REBUILD' flag for all station lists |
8992
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
189 */ |
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
190 void RebuildStationLists() |
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
191 { |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
192 SetStationListsFlag(VL_REBUILD); |
8992
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
193 } |
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
194 |
c0e03990caf0
(svn r12787) -Documentation: add/fix documentation of some functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents:
8964
diff
changeset
|
195 /** |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
196 * Set the 'VL_RESORT' flag for all station lists |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
197 */ |
6247
57363e064324
(svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents:
6202
diff
changeset
|
198 void ResortStationLists() |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
199 { |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
200 SetStationListsFlag(VL_RESORT); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
201 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
202 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
203 /** |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
204 * Rebuild station list if the VL_REBUILD flag is set |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
205 * |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
206 * @param sl pointer to plstations_d (station list and flags) |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
207 * @param owner player whose stations are to be in list |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
208 * @param facilities types of stations of interest |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
209 * @param cargo_filter bitmap of cargo types to include |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
210 * @param include_empty whether we should include stations without waiting cargo |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
211 */ |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
212 static void BuildStationsList(GUIStationList *sl, PlayerID owner, byte facilities, uint32 cargo_filter, bool include_empty) |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
213 { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
214 uint n = 0; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
215 const Station *st; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
216 |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
217 if (!(sl->flags & VL_REBUILD)) 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
|
218 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
219 /* Create array for sorting */ |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
220 const Station **station_sort = MallocT<const Station*>(GetMaxStationIndex() + 1); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
221 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
222 DEBUG(misc, 3, "Building station list for player %d", owner); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
223 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
224 FOR_ALL_STATIONS(st) { |
8109
eaab22131e32
(svn r11670) -Feature [FS#1565]: list neutral stations where the player has service in the station list too
smatz <smatz@openttd.org>
parents:
8107
diff
changeset
|
225 if (st->owner == owner || (st->owner == OWNER_NONE && !st->IsBuoy() && HasStationInUse(st->index, owner))) { |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
226 if (facilities & st->facilities) { //only stations with selected facilities |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
227 int num_waiting_cargo = 0; |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
228 for (CargoID j = 0; j < NUM_CARGO; j++) { |
7010
f0f87c5a431e
(svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents:
6990
diff
changeset
|
229 if (!st->goods[j].cargo.Empty()) { |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
230 num_waiting_cargo++; //count number of waiting cargo |
7928
4e8dfd103163
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents:
7886
diff
changeset
|
231 if (HasBit(cargo_filter, j)) { |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
232 station_sort[n++] = st; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
233 break; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
234 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
235 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
236 } |
6420
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6365
diff
changeset
|
237 /* stations without waiting cargo */ |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
238 if (num_waiting_cargo == 0 && include_empty) { |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
239 station_sort[n++] = st; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
240 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
241 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
242 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
243 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
244 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
245 free((void*)sl->sort_list); |
5609
358c07fb3212
(svn r8066) - Codechange: MallocT(), CallocT(), ReallocT() now return the pointer to allocated memory instead of modifying the pointer given as parameter
KUDr <KUDr@openttd.org>
parents:
5608
diff
changeset
|
246 sl->sort_list = MallocT<const Station*>(n); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
247 sl->list_length = n; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
248 |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
249 for (uint i = 0; i < n; ++i) sl->sort_list[i] = station_sort[i]; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
250 |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
251 sl->flags &= ~VL_REBUILD; |
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
252 sl->flags |= VL_RESORT; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
253 free((void*)station_sort); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
254 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
255 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
256 |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
257 /** |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
258 * Sort station list if the VL_RESORT flag is set |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
259 * |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
260 * @param sl pointer to plstations_d (station list and flags) |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
261 */ |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
262 static void SortStationsList(GUIStationList *sl) |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
263 { |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
264 static StationSortListingTypeFunction *const _station_sorter[] = { |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
265 &StationNameSorter, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
266 &StationTypeSorter, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
267 &StationWaitingSorter, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
268 &StationRatingMaxSorter |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
269 }; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
270 |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
271 if (!(sl->flags & VL_RESORT)) 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
|
272 |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
273 _internal_sort_order = sl->flags & VL_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
|
274 _last_station = NULL; // used for "cache" in namesorting |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
275 qsort((void*)sl->sort_list, sl->list_length, sizeof(sl->sort_list[0]), _station_sorter[sl->sort_type]); |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
276 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
277 sl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; |
9190
99b247e82bbe
(svn r13053) -Codechange: station sorting used it's own implementation of GUIList and the associated enums, now it doesn't anymore.
rubidium <rubidium@openttd.org>
parents:
9185
diff
changeset
|
278 sl->flags &= ~VL_RESORT; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
279 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
280 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
281 /** |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
282 * The list of stations per player. |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
283 */ |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
284 struct PlayerStationsWindow : public Window, public GUIStationList |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
285 { |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
286 static Listing station_sort; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
287 static byte facilities; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
288 static bool include_empty; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
289 |
9203
375bae14ff71
(svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium <rubidium@openttd.org>
parents:
9191
diff
changeset
|
290 PlayerStationsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number) |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
291 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
292 this->caption_color = (byte)this->window_number; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
293 this->vscroll.cap = 12; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
294 this->resize.step_height = 10; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
295 this->resize.height = this->height - 10 * 7; // minimum if 5 in the list |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
296 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
297 /* Add cargo filter buttons */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
298 uint num_active = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
299 for (CargoID c = 0; c < NUM_CARGO; c++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
300 if (GetCargo(c)->IsValid()) num_active++; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
301 } |
5608
5dcef0df6a67
(svn r8065) -Feature: The station list does now remember the sort settings
celestar <celestar@openttd.org>
parents:
5587
diff
changeset
|
302 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
303 this->widget_count += num_active; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
304 this->widget = ReallocT(this->widget, this->widget_count + 1); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
305 this->widget[this->widget_count].type = WWT_LAST; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
306 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
307 uint i = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
308 for (CargoID c = 0; c < NUM_CARGO; c++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
309 if (!GetCargo(c)->IsValid()) continue; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
310 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
311 Widget *wi = &this->widget[SLW_CARGOSTART + i]; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
312 wi->type = WWT_PANEL; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
313 wi->display_flags = RESIZE_NONE; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
314 wi->color = 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
315 wi->left = 89 + i * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
316 wi->right = wi->left + 13; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
317 wi->top = 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
318 wi->bottom = 24; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
319 wi->data = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
320 wi->tooltips = STR_USE_CTRL_TO_SELECT_MORE; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
321 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
322 if (HasBit(_cargo_filter, c)) this->LowerWidget(SLW_CARGOSTART + i); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
323 i++; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
324 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
325 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
326 this->widget[SLW_NOCARGOWAITING].left += num_active * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
327 this->widget[SLW_NOCARGOWAITING].right += num_active * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
328 this->widget[SLW_CARGOALL].left += num_active * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
329 this->widget[SLW_CARGOALL].right += num_active * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
330 this->widget[SLW_PAN_RIGHT].left += num_active * 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
331 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
332 if (num_active > 15) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
333 /* Resize and fix the minimum width, if necessary */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
334 ResizeWindow(this, (num_active - 15) * 14, 0); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
335 this->resize.width = this->width; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
336 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
337 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
338 if (_cargo_filter == _cargo_filter_max) _cargo_filter = _cargo_mask; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
339 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
340 for (uint i = 0; i < 5; i++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
341 if (HasBit(facilities, i)) this->LowerWidget(i + SLW_TRAIN); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
342 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
343 this->SetWidgetLoweredState(SLW_FACILALL, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK)); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
344 this->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
345 this->SetWidgetLoweredState(SLW_NOCARGOWAITING, include_empty); |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
346 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
347 this->sort_list = NULL; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
348 this->flags = VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
349 this->sort_type = station_sort.criteria; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
350 if (station_sort.order) this->flags |= VL_DESC; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
351 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
352 /* set up resort timer */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
353 this->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
354 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
355 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
356 virtual void OnPaint() |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
357 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
358 PlayerID owner = (PlayerID)this->window_number; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
359 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
360 BuildStationsList(this, owner, facilities, _cargo_filter, include_empty); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
361 SortStationsList(this); |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
362 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
363 SetVScrollCount(this, this->list_length); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
364 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
365 /* draw widgets, with player's name in the caption */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
366 SetDParam(0, owner); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
367 SetDParam(1, this->vscroll.count); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
368 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
369 /* Set text of sort by dropdown */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
370 this->widget[SLW_SORTDROPBTN].data = _station_sort_listing[this->sort_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
|
371 |
9273
72a6d2e60834
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents:
9214
diff
changeset
|
372 this->DrawWidgets(); |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
373 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
374 /* draw arrow pointing up/down for ascending/descending sorting */ |
9273
72a6d2e60834
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents:
9214
diff
changeset
|
375 this->DrawSortButtonState(SLW_SORTBY, this->flags & VL_DESC ? SBS_DOWN : SBS_UP); |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
376 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
377 int cg_ofst; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
378 int x = 89; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
379 int y = 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
380 int xb = 2; ///< offset from left of widget |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
381 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
382 uint i = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
383 for (CargoID c = 0; c < NUM_CARGO; c++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
384 const CargoSpec *cs = GetCargo(c); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
385 if (!cs->IsValid()) continue; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
386 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
387 cg_ofst = HasBit(_cargo_filter, c) ? 2 : 1; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
388 GfxFillRect(x + cg_ofst, y + cg_ofst, x + cg_ofst + 10 , y + cg_ofst + 7, cs->rating_colour); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
389 DrawStringCentered(x + 6 + cg_ofst, y + cg_ofst, cs->abbrev, TC_BLACK); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
390 x += 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
391 i++; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
392 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
393 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
394 x += 6; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
395 cg_ofst = this->IsWidgetLowered(SLW_NOCARGOWAITING) ? 2 : 1; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
396 DrawStringCentered(x + cg_ofst, y + cg_ofst, STR_ABBREV_NONE, TC_BLACK); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
397 x += 14; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
398 cg_ofst = this->IsWidgetLowered(SLW_CARGOALL) ? 2 : 1; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
399 DrawStringCentered(x + cg_ofst, y + cg_ofst, STR_ABBREV_ALL, TC_BLACK); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
400 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
401 cg_ofst = this->IsWidgetLowered(SLW_FACILALL) ? 2 : 1; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
402 DrawString(71 + cg_ofst, y + cg_ofst, STR_ABBREV_ALL, TC_BLACK); |
8338
133b06cabee8
(svn r11904) -Codechange: use dropdown widget in 3 more windows, build vehicle, group vehicle list and station list.
peter1138 <peter1138@openttd.org>
parents:
8284
diff
changeset
|
403 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
404 if (this->vscroll.count == 0) { // player has no stations |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
405 DrawString(xb, 40, STR_304A_NONE, TC_FROMSTRING); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
406 return; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
407 } |
8338
133b06cabee8
(svn r11904) -Codechange: use dropdown widget in 3 more windows, build vehicle, group vehicle list and station list.
peter1138 <peter1138@openttd.org>
parents:
8284
diff
changeset
|
408 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
409 int max = min(this->vscroll.pos + this->vscroll.cap, this->list_length); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
410 y = 40; // start of the list-widget |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
411 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
412 for (int i = this->vscroll.pos; i < max; ++i) { // do until max number of stations of owner |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
413 const Station *st = this->sort_list[i]; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
414 int x; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
415 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
416 assert(st->xy != 0); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
417 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
418 /* Do not do the complex check HasStationInUse here, it may be even false |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
419 * when the order had been removed and the station list hasn't been removed yet */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
420 assert(st->owner == owner || (st->owner == OWNER_NONE && !st->IsBuoy())); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
421 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
422 SetDParam(0, st->index); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
423 SetDParam(1, st->facilities); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
424 x = DrawString(xb, y, STR_3049_0, TC_FROMSTRING) + 5; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
425 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
426 /* show cargo waiting and station ratings */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
427 for (CargoID j = 0; j < NUM_CARGO; j++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
428 if (!st->goods[j].cargo.Empty()) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
429 StationsWndShowStationRating(x, y, j, st->goods[j].cargo.Count(), st->goods[j].rating); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
430 x += 20; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
431 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
432 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
433 y += 10; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
434 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
435 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
436 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
437 virtual void OnClick(Point pt, int widget) |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
438 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
439 switch (widget) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
440 case SLW_LIST: { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
441 uint32 id_v = (pt.y - 41) / 10; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
442 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
443 if (id_v >= this->vscroll.cap) return; // click out of bounds |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
444 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
445 id_v += this->vscroll.pos; |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
446 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
447 if (id_v >= this->list_length) return; // click out of list bound |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
448 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
449 const Station *st = this->sort_list[id_v]; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
450 /* do not check HasStationInUse - it is slow and may be invalid */ |
9214
f7d71b69b539
(svn r13080) -Fix: warning about unused variable when compiling without asserts
smatz <smatz@openttd.org>
parents:
9203
diff
changeset
|
451 assert(st->owner == (PlayerID)this->window_number || (st->owner == OWNER_NONE && !st->IsBuoy())); |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
452 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
453 if (_ctrl_pressed) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
454 ShowExtraViewPortWindow(st->xy); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
455 } else { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
456 ScrollMainWindowToTile(st->xy); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
457 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
458 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
|
459 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
460 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
461 case SLW_TRAIN: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
462 case SLW_TRUCK: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
463 case SLW_BUS: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
464 case SLW_AIRPLANE: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
465 case SLW_SHIP: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
466 if (_ctrl_pressed) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
467 ToggleBit(facilities, widget - SLW_TRAIN); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
468 this->ToggleWidgetLoweredState(widget); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
469 } else { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
470 uint i; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
471 FOR_EACH_SET_BIT(i, facilities) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
472 this->RaiseWidget(i + SLW_TRAIN); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
473 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
474 SetBit(facilities, widget - SLW_TRAIN); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
475 this->LowerWidget(widget); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
476 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
477 this->SetWidgetLoweredState(SLW_FACILALL, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK)); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
478 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
479 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
480 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
|
481 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
482 case SLW_FACILALL: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
483 for (uint i = 0; i < 5; i++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
484 this->LowerWidget(i + SLW_TRAIN); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
485 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
486 this->LowerWidget(SLW_FACILALL); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
487 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
488 facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
489 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
490 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
491 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
|
492 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
493 case SLW_CARGOALL: { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
494 uint i = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
495 for (CargoID c = 0; c < NUM_CARGO; c++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
496 if (!GetCargo(c)->IsValid()) continue; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
497 this->LowerWidget(i + SLW_CARGOSTART); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
498 i++; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
499 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
500 this->LowerWidget(SLW_NOCARGOWAITING); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
501 this->LowerWidget(SLW_CARGOALL); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
502 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
503 _cargo_filter = _cargo_mask; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
504 include_empty = true; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
505 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
506 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
507 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
|
508 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
509 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
510 case SLW_SORTBY: // flip sorting method asc/desc |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
511 this->flags ^= VL_DESC; //DESC-flag |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
512 station_sort.order = HasBit(this->flags, 0); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
513 this->flags |= VL_RESORT; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
514 this->flags4 |= 5 << WF_TIMEOUT_SHL; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
515 this->LowerWidget(SLW_SORTBY); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
516 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
517 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
|
518 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
519 case SLW_SORTDROPBTN: // select sorting criteria dropdown menu |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
520 ShowDropDownMenu(this, _station_sort_listing, this->sort_type, SLW_SORTDROPBTN, 0, 0); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
521 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
|
522 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
523 case SLW_NOCARGOWAITING: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
524 if (_ctrl_pressed) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
525 include_empty = !include_empty; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
526 this->ToggleWidgetLoweredState(SLW_NOCARGOWAITING); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
527 } else { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
528 for (uint i = SLW_CARGOSTART; i < this->widget_count; i++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
529 this->RaiseWidget(i); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
530 } |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
531 |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
532 _cargo_filter = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
533 include_empty = true; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
534 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
535 this->LowerWidget(SLW_NOCARGOWAITING); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
536 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
537 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
538 this->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
539 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
540 break; |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
541 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
542 default: |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
543 if (widget >= SLW_CARGOSTART) { // change cargo_filter |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
544 /* Determine the selected cargo type */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
545 CargoID c; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
546 int i = 0; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
547 for (c = 0; c < NUM_CARGO; c++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
548 if (!GetCargo(c)->IsValid()) continue; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
549 if (widget - SLW_CARGOSTART == i) break; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
550 i++; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
551 } |
9094
a3f3038e9b9a
(svn r12953) -Feature: Open a new viewport when ctrl-clicking on a 'Location' button, a town/station/industry list, or some news items.
peter1138 <peter1138@openttd.org>
parents:
8992
diff
changeset
|
552 |
a3f3038e9b9a
(svn r12953) -Feature: Open a new viewport when ctrl-clicking on a 'Location' button, a town/station/industry list, or some news items.
peter1138 <peter1138@openttd.org>
parents:
8992
diff
changeset
|
553 if (_ctrl_pressed) { |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
554 ToggleBit(_cargo_filter, c); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
555 this->ToggleWidgetLoweredState(widget); |
9094
a3f3038e9b9a
(svn r12953) -Feature: Open a new viewport when ctrl-clicking on a 'Location' button, a town/station/industry list, or some news items.
peter1138 <peter1138@openttd.org>
parents:
8992
diff
changeset
|
556 } else { |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
557 for (uint i = SLW_CARGOSTART; i < this->widget_count; i++) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
558 this->RaiseWidget(i); |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
559 } |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
560 this->RaiseWidget(SLW_NOCARGOWAITING); |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
561 |
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
562 _cargo_filter = 0; |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
563 include_empty = false; |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
564 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
565 SetBit(_cargo_filter, c); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
566 this->LowerWidget(widget); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
567 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
568 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
569 this->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
570 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
571 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
572 break; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
573 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
574 } |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
575 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
576 virtual void OnDropdownSelect(int widget, int index) |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
577 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
578 if (this->sort_type != index) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
579 /* value has changed -> resort */ |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
580 this->sort_type = index; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
581 station_sort.criteria = this->sort_type; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
582 this->flags |= VL_RESORT; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
583 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
584 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
585 } |
6271
56a8bb763a87
(svn r9080) -Codechange: dynamically build cargo filter buttons in the station list window.
peter1138 <peter1138@openttd.org>
parents:
6260
diff
changeset
|
586 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
587 virtual void OnTick() |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
588 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
589 if (_pause_game != 0) return; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
590 if (--this->resort_timer == 0) { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
591 DEBUG(misc, 3, "Periodic rebuild station list player %d", this->window_number); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
592 this->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
593 this->flags |= VL_REBUILD; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
594 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
595 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
596 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
597 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
598 virtual void OnTimeout() |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
599 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
600 this->RaiseWidget(SLW_SORTBY); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
601 this->SetDirty(); |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
602 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
603 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
604 virtual void OnResize(Point new_size, Point delta) |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
605 { |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
606 this->vscroll.cap += delta.y / 10; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
607 } |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
608 }; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
609 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
610 Listing PlayerStationsWindow::station_sort = {0, 0}; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
611 byte PlayerStationsWindow::facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
612 bool PlayerStationsWindow::include_empty = true; |
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
613 |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
614 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
615 static const Widget _player_stations_widgets[] = { |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
616 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // SLW_CLOSEBOX |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
617 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 345, 0, 13, STR_3048_STATIONS, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
618 { WWT_STICKYBOX, RESIZE_LR, 14, 346, 357, 0, 13, 0x0, STR_STICKY_BUTTON}, |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
619 { WWT_PANEL, RESIZE_RB, 14, 0, 345, 37, 161, 0x0, STR_3057_STATION_NAMES_CLICK_ON}, // SLW_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
|
620 { WWT_SCROLLBAR, RESIZE_LRB, 14, 346, 357, 37, 149, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
621 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 346, 357, 150, 161, 0x0, STR_RESIZE_BUTTON}, |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
622 |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
623 { WWT_TEXTBTN, RESIZE_NONE, 14, 0, 13, 14, 24, STR_TRAIN, STR_USE_CTRL_TO_SELECT_MORE}, // SLW_TRAIN |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
624 { WWT_TEXTBTN, RESIZE_NONE, 14, 14, 27, 14, 24, STR_LORRY, STR_USE_CTRL_TO_SELECT_MORE}, // SLW_TRUCK |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
625 { WWT_TEXTBTN, RESIZE_NONE, 14, 28, 41, 14, 24, STR_BUS, STR_USE_CTRL_TO_SELECT_MORE}, // SLW_BUS |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
626 { WWT_TEXTBTN, RESIZE_NONE, 14, 42, 55, 14, 24, STR_PLANE, STR_USE_CTRL_TO_SELECT_MORE}, // SLW_AIRPLANE |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
627 { WWT_TEXTBTN, RESIZE_NONE, 14, 56, 69, 14, 24, STR_SHIP, STR_USE_CTRL_TO_SELECT_MORE}, // SLW_SHIP |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
628 { WWT_PANEL, RESIZE_NONE, 14, 70, 83, 14, 24, 0x0, STR_SELECT_ALL_FACILITIES}, // SLW_FACILALL |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
629 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
630 { WWT_PANEL, RESIZE_NONE, 14, 83, 88, 14, 24, 0x0, STR_NULL}, // SLW_PAN_BETWEEN |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
631 { WWT_PANEL, RESIZE_NONE, 14, 89, 102, 14, 24, 0x0, STR_NO_WAITING_CARGO}, // SLW_NOCARGOWAITING |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
632 { WWT_PANEL, RESIZE_NONE, 14, 103, 116, 14, 24, 0x0, STR_SELECT_ALL_TYPES}, // SLW_CARGOALL |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
633 { WWT_PANEL, RESIZE_RIGHT, 14, 117, 357, 14, 24, 0x0, STR_NULL}, // SLW_PAN_RIGHT |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
634 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
635 { WWT_TEXTBTN, RESIZE_NONE, 14, 0, 80, 25, 36, STR_SORT_BY, STR_SORT_ORDER_TIP}, // SLW_SORTBY |
8338
133b06cabee8
(svn r11904) -Codechange: use dropdown widget in 3 more windows, build vehicle, group vehicle list and station list.
peter1138 <peter1138@openttd.org>
parents:
8284
diff
changeset
|
636 { WWT_DROPDOWN, RESIZE_NONE, 14, 81, 243, 25, 36, 0x0, STR_SORT_CRITERIA_TIP}, // SLW_SORTDROPBTN |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
637 { WWT_PANEL, RESIZE_RIGHT, 14, 244, 357, 25, 36, 0x0, STR_NULL}, // SLW_PAN_SORT_RIGHT |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
638 { WIDGETS_END}, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
639 }; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
640 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
641 static const WindowDesc _player_stations_desc = { |
7341
549c757023fc
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium <rubidium@openttd.org>
parents:
7058
diff
changeset
|
642 WDP_AUTO, WDP_AUTO, 358, 162, 358, 162, |
5893
8547517ef719
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents:
5745
diff
changeset
|
643 WC_STATION_LIST, WC_NONE, |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
644 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
645 _player_stations_widgets, |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
646 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
|
647 }; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
648 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
649 /** |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
650 * Opens window with list of player's stations |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
651 * |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
652 * @param player player whose stations' list show |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
653 */ |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
654 void ShowPlayerStations(PlayerID player) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
655 { |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
656 if (!IsValidPlayer(player)) return; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
657 |
9191
b61dc40f30a4
(svn r13054) -Codechange: make a class of the PlayerStationsWindow.
rubidium <rubidium@openttd.org>
parents:
9190
diff
changeset
|
658 AllocateWindowDescFront<PlayerStationsWindow>(&_player_stations_desc, player); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
659 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
660 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
661 static const Widget _station_view_widgets[] = { |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
662 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // SVW_CLOSEBOX |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
663 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 236, 0, 13, STR_300A_0, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
664 { WWT_STICKYBOX, RESIZE_LR, 14, 237, 248, 0, 13, 0x0, STR_STICKY_BUTTON}, |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
665 { WWT_PANEL, RESIZE_RB, 14, 0, 236, 14, 65, 0x0, STR_NULL}, // SVW_WAITING |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
666 { WWT_SCROLLBAR, RESIZE_LRB, 14, 237, 248, 14, 65, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
667 { WWT_PANEL, RESIZE_RTB, 14, 0, 248, 66, 97, 0x0, STR_NULL}, // SVW_ACCEPTLIST / SVW_RATINGLIST |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
668 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 59, 98, 109, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // SVW_LOCATION |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
669 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 60, 120, 98, 109, STR_3032_RATINGS, STR_3054_SHOW_STATION_RATINGS}, // SVW_RATINGS / SVW_ACCEPTS |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
670 { WWT_PUSHTXTBTN, RESIZE_RTB, 14, 121, 180, 98, 109, STR_0130_RENAME, STR_3055_CHANGE_NAME_OF_STATION}, // SVW_RENAME |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
671 { WWT_PUSHTXTBTN, RESIZE_LRTB, 14, 181, 194, 98, 109, STR_TRAIN, STR_SCHEDULED_TRAINS_TIP }, // SVW_TRAINS |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
672 { WWT_PUSHTXTBTN, RESIZE_LRTB, 14, 195, 208, 98, 109, STR_LORRY, STR_SCHEDULED_ROAD_VEHICLES_TIP }, // SVW_ROADVEHS |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
673 { WWT_PUSHTXTBTN, RESIZE_LRTB, 14, 209, 222, 98, 109, STR_PLANE, STR_SCHEDULED_AIRCRAFT_TIP }, // SVW_PLANES |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
674 { WWT_PUSHTXTBTN, RESIZE_LRTB, 14, 223, 236, 98, 109, STR_SHIP, STR_SCHEDULED_SHIPS_TIP }, // SVW_SHIPS |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
675 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 237, 248, 98, 109, 0x0, STR_RESIZE_BUTTON}, |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
676 { WIDGETS_END}, |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
677 }; |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
678 |
8762
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
679 SpriteID GetCargoSprite(CargoID i) |
6364
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
680 { |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
681 const CargoSpec *cs = GetCargo(i); |
6365
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
682 SpriteID sprite; |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
683 |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
684 if (cs->sprite == 0xFFFF) { |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
685 /* A value of 0xFFFF indicates we should draw a custom icon */ |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
686 sprite = GetCustomCargoSprite(cs); |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
687 } else { |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
688 sprite = cs->sprite; |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
689 } |
0d8a8ec46519
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138 <peter1138@openttd.org>
parents:
6364
diff
changeset
|
690 |
6657
05dc53b3e64a
(svn r9888) -Codechange: [NewGRF] allow non-spec cargo action2s to work, and using the goods sprite if really nothing is returned.
peter1138 <peter1138@openttd.org>
parents:
6420
diff
changeset
|
691 if (sprite == 0) sprite = SPR_CARGO_GOODS; |
6364
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
692 |
8762
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
693 return sprite; |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
694 } |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
695 |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
696 /** |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
697 * Draws icons of waiting cargo in the StationView window |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
698 * |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
699 * @param i type of cargo |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
700 * @param waiting number of waiting units |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
701 * @param x x on-screen coordinate where to start with drawing icons |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
702 * @param y y coordinate |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
703 */ |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
704 static void DrawCargoIcons(CargoID i, uint waiting, int x, int y, uint width) |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
705 { |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
706 uint num = min((waiting + 5) / 10, width / 10); // maximum is width / 10 icons so it won't overflow |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
707 if (num == 0) return; |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
708 |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
709 SpriteID sprite = GetCargoSprite(i); |
dcc2194ac748
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
rubidium <rubidium@openttd.org>
parents:
8750
diff
changeset
|
710 |
6364
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
711 do { |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
712 DrawSprite(sprite, PAL_NONE, x, y); |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
713 x += 10; |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
714 } while (--num); |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
715 } |
12ef3186e753
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
peter1138 <peter1138@openttd.org>
parents:
6350
diff
changeset
|
716 |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
717 struct CargoData { |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
718 CargoID cargo; |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
719 StationID source; |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
720 uint count; |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
721 |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
722 CargoData(CargoID cargo, StationID source, uint count) : |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
723 cargo(cargo), |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
724 source(source), |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
725 count(count) |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
726 { } |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
727 }; |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
728 |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
729 typedef std::list<CargoData> CargoDataList; |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
730 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
731 /** |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
732 * The StationView window |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
733 */ |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
734 struct StationViewWindow : public Window { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
735 uint32 cargo; ///< Bitmask of cargo types to expand |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
736 uint16 cargo_rows[NUM_CARGO]; ///< Header row for each cargo type |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
737 |
9203
375bae14ff71
(svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium <rubidium@openttd.org>
parents:
9191
diff
changeset
|
738 StationViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number) |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
739 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
740 PlayerID owner = GetStation(window_number)->owner; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
741 if (owner != OWNER_NONE) this->caption_color = owner; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
742 this->vscroll.cap = 5; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
743 this->resize.step_height = 10; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
744 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
745 this->FindWindowPlacementAndResize(desc); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
746 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
747 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
748 ~StationViewWindow() |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
749 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
750 WindowNumber wno = |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
751 (this->window_number << 16) | VLW_STATION_LIST | GetStation(this->window_number)->owner; |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
752 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
753 DeleteWindowById(WC_TRAINS_LIST, wno); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
754 DeleteWindowById(WC_ROADVEH_LIST, wno); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
755 DeleteWindowById(WC_SHIPS_LIST, wno); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
756 DeleteWindowById(WC_AIRCRAFT_LIST, wno); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
757 } |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
758 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
759 virtual void OnPaint() |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
760 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
761 StationID station_id = this->window_number; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
762 const Station *st = GetStation(station_id); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
763 CargoDataList cargolist; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
764 uint32 transfers = 0; |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
765 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
766 /* count types of cargos waiting in station */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
767 for (CargoID i = 0; i < NUM_CARGO; i++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
768 if (st->goods[i].cargo.Empty()) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
769 this->cargo_rows[i] = 0; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
770 } else { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
771 /* Add an entry for total amount of cargo of this type waiting. */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
772 cargolist.push_back(CargoData(i, INVALID_STATION, st->goods[i].cargo.Count())); |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
773 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
774 /* Set the row for this cargo entry for the expand/hide button */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
775 this->cargo_rows[i] = cargolist.size(); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
776 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
777 /* Add an entry for each distinct cargo source. */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
778 const CargoList::List *packets = st->goods[i].cargo.Packets(); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
779 for (CargoList::List::const_iterator it = packets->begin(); it != packets->end(); it++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
780 const CargoPacket *cp = *it; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
781 if (cp->source != station_id) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
782 bool added = false; |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
783 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
784 /* Enable the expand/hide button for this cargo type */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
785 SetBit(transfers, i); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
786 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
787 /* Don't add cargo lines if not expanded */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
788 if (!HasBit(this->cargo, i)) break; |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
789 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
790 /* Check if we already have this source in the list */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
791 for (CargoDataList::iterator jt = cargolist.begin(); jt != cargolist.end(); jt++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
792 CargoData *cd = &(*jt); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
793 if (cd->cargo == i && cd->source == cp->source) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
794 cd->count += cp->count; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
795 added = true; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
796 break; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
797 } |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
798 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
799 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
800 if (!added) cargolist.push_back(CargoData(i, cp->source, cp->count)); |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
801 } |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
802 } |
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
803 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
804 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
805 SetVScrollCount(this, cargolist.size() + 1); // update 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
|
806 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
807 /* disable some buttons */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
808 this->SetWidgetDisabledState(SVW_RENAME, st->owner != _local_player); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
809 this->SetWidgetDisabledState(SVW_TRAINS, !(st->facilities & FACIL_TRAIN)); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
810 this->SetWidgetDisabledState(SVW_ROADVEHS, !(st->facilities & FACIL_TRUCK_STOP) && !(st->facilities & FACIL_BUS_STOP)); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
811 this->SetWidgetDisabledState(SVW_PLANES, !(st->facilities & FACIL_AIRPORT)); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
812 this->SetWidgetDisabledState(SVW_SHIPS, !(st->facilities & FACIL_DOCK)); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
813 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
814 SetDParam(0, st->index); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
815 SetDParam(1, st->facilities); |
9273
72a6d2e60834
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents:
9214
diff
changeset
|
816 this->DrawWidgets(); |
8964
ae064b8e200b
(svn r12756) -Cleanup: variable scope and coding style in station*
smatz <smatz@openttd.org>
parents:
8857
diff
changeset
|
817 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
818 int x = 2; ///< coordinates used for printing waiting/accepted/rating of cargo |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
819 int y = 15; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
820 int pos = this->vscroll.pos; ///< = this->vscroll.pos |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
821 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
822 uint width = this->widget[SVW_WAITING].right - this->widget[SVW_WAITING].left - 4; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
823 int maxrows = this->vscroll.cap; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
824 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
825 StringID str; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
826 |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
827 if (--pos < 0) { |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
828 str = STR_00D0_NOTHING; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
829 for (CargoID i = 0; i < NUM_CARGO; i++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
830 if (!st->goods[i].cargo.Empty()) str = STR_EMPTY; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
831 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
832 SetDParam(0, str); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
833 DrawString(x, y, STR_0008_WAITING, TC_FROMSTRING); |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
834 y += 10; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
835 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
836 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
837 for (CargoDataList::const_iterator it = cargolist.begin(); it != cargolist.end() && pos > -maxrows; ++it) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
838 if (--pos < 0) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
839 const CargoData *cd = &(*it); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
840 if (cd->source == INVALID_STATION) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
841 /* Heading */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
842 DrawCargoIcons(cd->cargo, cd->count, x, y, width); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
843 SetDParam(0, cd->cargo); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
844 SetDParam(1, cd->count); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
845 if (HasBit(transfers, cd->cargo)) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
846 /* This cargo has transfers waiting so show the expand or shrink 'button' */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
847 const char *sym = HasBit(this->cargo, cd->cargo) ? "-" : "+"; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
848 DrawStringRightAligned(x + width - 8, y, STR_0009, TC_FROMSTRING); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
849 DoDrawString(sym, x + width - 6, y, TC_YELLOW); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
850 } else { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
851 DrawStringRightAligned(x + width, y, STR_0009, TC_FROMSTRING); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
852 } |
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 } else { |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
854 SetDParam(0, cd->cargo); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
855 SetDParam(1, cd->count); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
856 SetDParam(2, cd->source); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
857 DrawStringRightAlignedTruncated(x + width, y, STR_EN_ROUTE_FROM, TC_FROMSTRING, width); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
858 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
859 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
860 y += 10; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
861 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
862 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
863 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
864 if (this->widget[SVW_ACCEPTS].data == STR_3032_RATINGS) { // small window with list of accepted cargo |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
865 char *b = _userstring; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
866 bool first = true; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
867 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
868 b = InlineString(b, STR_000C_ACCEPTS); |
8041
085c454f158b
(svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents:
8040
diff
changeset
|
869 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
870 for (CargoID i = 0; i < NUM_CARGO; i++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
871 if (b >= lastof(_userstring) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode() |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
872 if (HasBit(st->goods[i].acceptance_pickup, GoodsEntry::ACCEPTANCE)) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
873 if (first) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
874 first = false; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
875 } else { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
876 /* Add a comma if this is not the first item */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
877 *b++ = ','; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
878 *b++ = ' '; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
879 } |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
880 b = InlineString(b, GetCargo(i)->name); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
881 } |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
882 } |
8041
085c454f158b
(svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz <smatz@openttd.org>
parents:
8040
diff
changeset
|
883 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
884 /* If first is still true then no cargo is accepted */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
885 if (first) b = InlineString(b, STR_00D0_NOTHING); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
886 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
887 *b = '\0'; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
888 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
889 /* Make sure we detect any buffer overflow */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
890 assert(b < endof(_userstring)); |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
891 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
892 DrawStringMultiLine(2, this->widget[SVW_ACCEPTLIST].top + 1, STR_SPEC_USERSTRING, this->widget[SVW_ACCEPTLIST].right - this->widget[SVW_ACCEPTLIST].left); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
893 } else { // extended window with list of cargo ratings |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
894 y = this->widget[SVW_RATINGLIST].top + 1; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
895 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
896 DrawString(2, y, STR_3034_LOCAL_RATING_OF_TRANSPORT, TC_FROMSTRING); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
897 y += 10; |
6297
e7e15e4d1367
(svn r9127) -Codechange: Check if a cargo is valid before displaying it in a station's cargo rating list. (And duff up the block a little)
peter1138 <peter1138@openttd.org>
parents:
6285
diff
changeset
|
898 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
899 for (CargoID i = 0; i < NUM_CARGO; i++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
900 const CargoSpec *cs = GetCargo(i); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
901 if (!cs->IsValid()) continue; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
902 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
903 const GoodsEntry *ge = &st->goods[i]; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
904 if (!HasBit(ge->acceptance_pickup, GoodsEntry::PICKUP)) continue; |
6297
e7e15e4d1367
(svn r9127) -Codechange: Check if a cargo is valid before displaying it in a station's cargo rating list. (And duff up the block a little)
peter1138 <peter1138@openttd.org>
parents:
6285
diff
changeset
|
905 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
906 SetDParam(0, cs->name); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
907 SetDParam(2, ge->rating * 101 >> 8); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
908 SetDParam(1, STR_3035_APPALLING + (ge->rating >> 5)); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
909 DrawString(8, y, STR_303D, TC_FROMSTRING); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
910 y += 10; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
911 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
912 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
913 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
914 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
915 void HandleCargoWaitingClick(int row) |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
916 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
917 if (row == 0) return; |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
918 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
919 for (CargoID c = 0; c < NUM_CARGO; c++) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
920 if (this->cargo_rows[c] == row) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
921 ToggleBit(this->cargo, c); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
922 this->InvalidateWidget(SVW_WAITING); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
923 break; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
924 } |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
925 } |
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
926 } |
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
927 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
928 virtual void OnClick(Point pt, int widget) |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
929 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
930 switch (widget) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
931 case SVW_WAITING: |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
932 this->HandleCargoWaitingClick((pt.y - this->widget[SVW_WAITING].top) / 10 + this->vscroll.pos); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
933 break; |
8750
495247050dad
(svn r12446) -Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information.
peter1138 <peter1138@openttd.org>
parents:
8719
diff
changeset
|
934 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
935 case SVW_LOCATION: |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
936 if (_ctrl_pressed) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
937 ShowExtraViewPortWindow(GetStation(this->window_number)->xy); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
938 } else { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
939 ScrollMainWindowToTile(GetStation(this->window_number)->xy); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
940 } |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
941 break; |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
942 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
943 case SVW_RATINGS: |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
944 this->SetDirty(); |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
945 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
946 if (this->widget[SVW_RATINGS].data == STR_3032_RATINGS) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
947 /* Switch to ratings view */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
948 this->widget[SVW_RATINGS].data = STR_3033_ACCEPTS; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
949 this->widget[SVW_RATINGS].tooltips = STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
950 ResizeWindowForWidget(this, SVW_ACCEPTLIST, 0, 100); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
951 } else { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
952 /* Switch to accepts view */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
953 this->widget[SVW_RATINGS].data = STR_3032_RATINGS; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
954 this->widget[SVW_RATINGS].tooltips = STR_3054_SHOW_STATION_RATINGS; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
955 ResizeWindowForWidget(this, SVW_ACCEPTLIST, 0, -100); |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
956 } |
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
957 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
958 this->SetDirty(); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
959 break; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
960 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
961 case SVW_RENAME: |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
962 SetDParam(0, this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
963 ShowQueryString(STR_STATION, STR_3030_RENAME_STATION_LOADING, 31, 180, this, CS_ALPHANUMERAL); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
964 break; |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
965 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
966 case SVW_TRAINS: { // Show a list of scheduled trains to this station |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
967 const Station *st = GetStation(this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
968 ShowVehicleListWindow(st->owner, VEH_TRAIN, (StationID)this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
969 break; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
970 } |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
971 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
972 case SVW_ROADVEHS: { // Show a list of scheduled road-vehicles to this station |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
973 const Station *st = GetStation(this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
974 ShowVehicleListWindow(st->owner, VEH_ROAD, (StationID)this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
975 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
|
976 } |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
977 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
978 case SVW_PLANES: { // Show a list of scheduled aircraft to this station |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
979 const Station *st = GetStation(this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
980 /* Since oilrigs have no owners, show the scheduled aircraft of current player */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
981 PlayerID owner = (st->owner == OWNER_NONE) ? _current_player : st->owner; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
982 ShowVehicleListWindow(owner, VEH_AIRCRAFT, (StationID)this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
983 break; |
6202
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
984 } |
eb0fdb88a922
(svn r8988) -Fix: Indenting, variable scope, variable type and minor duffage
peter1138 <peter1138@openttd.org>
parents:
6122
diff
changeset
|
985 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
986 case SVW_SHIPS: { // Show a list of scheduled ships to this station |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
987 const Station *st = GetStation(this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
988 /* Since oilrigs/bouys have no owners, show the scheduled ships of current player */ |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
989 PlayerID owner = (st->owner == OWNER_NONE) ? _current_player : st->owner; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
990 ShowVehicleListWindow(owner, VEH_SHIP, (StationID)this->window_number); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
991 break; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
992 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
993 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
994 } |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
995 |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
996 virtual void OnQueryTextFinished(char *str) |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
997 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
998 if (!StrEmpty(str)) { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
999 _cmd_text = str; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1000 DoCommandP(0, this->window_number, 0, NULL, |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1001 CMD_RENAME_STATION | CMD_MSG(STR_3031_CAN_T_RENAME_STATION)); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1002 } |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1003 } |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1004 |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1005 virtual void OnResize(Point new_size, Point delta) |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1006 { |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1007 if (delta.x != 0) ResizeButtons(this, SVW_LOCATION, SVW_RENAME); |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1008 this->vscroll.cap += delta.y / (int)this->resize.step_height; |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1009 } |
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1010 }; |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1011 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1012 |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1013 static const WindowDesc _station_view_desc = { |
7341
549c757023fc
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium <rubidium@openttd.org>
parents:
7058
diff
changeset
|
1014 WDP_AUTO, WDP_AUTO, 249, 110, 249, 110, |
5893
8547517ef719
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents:
5745
diff
changeset
|
1015 WC_STATION_VIEW, WC_NONE, |
8420
370ea805f591
(svn r11990) -Codechange: Show all cargo sources (en-route from) in the station view
peter1138 <peter1138@openttd.org>
parents:
8349
diff
changeset
|
1016 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1017 _station_view_widgets, |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1018 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
|
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 |
8016
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
1021 /** |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
1022 * Opens StationViewWindow for given station |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
1023 * |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
1024 * @param station station which window should be opened |
f60addd19e1a
(svn r11576) -Codechange: enumerize and comment station GUI
smatz <smatz@openttd.org>
parents:
8005
diff
changeset
|
1025 */ |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1026 void ShowStationViewWindow(StationID station) |
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1027 { |
9185
227f376591eb
(svn r13048) -Codechange: make a class of the StationViewWindow.
rubidium <rubidium@openttd.org>
parents:
9164
diff
changeset
|
1028 AllocateWindowDescFront<StationViewWindow>(&_station_view_desc, station); |
5584
4b26bd55bd24
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff
changeset
|
1029 } |