author | rubidium |
Fri, 21 Dec 2007 19:49:27 +0000 | |
changeset 8114 | dd6d21dc99c1 |
parent 8107 | bb7deea89175 |
child 8116 | 8da76dcb3287 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
3 |
/** @file train_gui.cpp */ |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1891
862800791170
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1820
diff
changeset
|
6 |
#include "openttd.h" |
1299
39c06aba09aa
(svn r1803) Move debugging stuff into files of it's own
tron
parents:
1294
diff
changeset
|
7 |
#include "debug.h" |
2163
b17b313113a0
(svn r2673) Include functions.h directly, not globally via openttd.h
tron
parents:
2147
diff
changeset
|
8 |
#include "functions.h" |
1922
bda6f85eefaa
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
9 |
#include "table/sprites.h" |
507
04b5403aaf6b
(svn r815) Include strings.h only in the files which need it.
tron
parents:
460
diff
changeset
|
10 |
#include "table/strings.h" |
0 | 11 |
#include "gui.h" |
8107
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
12 |
#include "window_gui.h" |
0 | 13 |
#include "vehicle.h" |
14 |
#include "viewport.h" |
|
15 |
#include "command.h" |
|
588 | 16 |
#include "vehicle_gui.h" |
1313
f1013ec3d318
(svn r1817) -Codechange: Moved depot-functions to depot.c
truelight
parents:
1299
diff
changeset
|
17 |
#include "depot.h" |
2676
59b65b4fb480
(svn r3218) -Feature: Multiheaded train engines will now stay in the same train
bjarni
parents:
2639
diff
changeset
|
18 |
#include "train.h" |
2962
f0a49b646c48
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2959
diff
changeset
|
19 |
#include "newgrf_engine.h" |
8114
dd6d21dc99c1
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8107
diff
changeset
|
20 |
#include "strings_func.h" |
0 | 21 |
|
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1962
diff
changeset
|
22 |
void CcBuildWagon(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 23 |
{ |
4171 | 24 |
Vehicle *v, *found; |
0 | 25 |
|
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4049
diff
changeset
|
26 |
if (!success) return; |
0 | 27 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
28 |
/* find a locomotive in the depot. */ |
0 | 29 |
found = NULL; |
30 |
FOR_ALL_VEHICLES(v) { |
|
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6198
diff
changeset
|
31 |
if (v->type == VEH_TRAIN && IsFrontEngine(v) && |
0 | 32 |
v->tile == tile && |
5993
956d341d930e
(svn r8701) -Codechange: replace magic numbers with enums for u.rail.track.
rubidium
parents:
5893
diff
changeset
|
33 |
v->u.rail.track == TRACK_BIT_DEPOT) { |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4049
diff
changeset
|
34 |
if (found != NULL) return; // must be exactly one. |
0 | 35 |
found = v; |
36 |
} |
|
37 |
} |
|
38 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
39 |
/* if we found a loco, */ |
0 | 40 |
if (found != NULL) { |
41 |
found = GetLastVehicleInChain(found); |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
42 |
/* put the new wagon at the end of the loco. */ |
3948
a09379beffd5
(svn r5094) Remove _new_{aircraft,roadveh,ship,train,wagon}_id. _new_vehicle_id is enough.
tron
parents:
3919
diff
changeset
|
43 |
DoCommandP(0, _new_vehicle_id | (found->index << 16), 0, NULL, CMD_MOVE_RAIL_VEHICLE); |
588 | 44 |
RebuildVehicleLists(); |
0 | 45 |
} |
46 |
} |
|
47 |
||
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1962
diff
changeset
|
48 |
void CcBuildLoco(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 49 |
{ |
4171 | 50 |
const Vehicle *v; |
0 | 51 |
|
2639 | 52 |
if (!success) return; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
53 |
|
3948
a09379beffd5
(svn r5094) Remove _new_{aircraft,roadveh,ship,train,wagon}_id. _new_vehicle_id is enough.
tron
parents:
3919
diff
changeset
|
54 |
v = GetVehicle(_new_vehicle_id); |
0 | 55 |
if (tile == _backup_orders_tile) { |
56 |
_backup_orders_tile = 0; |
|
7653
dd252420d9c2
(svn r11184) -Codechange: cleanup the code related to backup orders.
rubidium
parents:
7530
diff
changeset
|
57 |
RestoreVehicleOrders(v); |
0 | 58 |
} |
7486
bf6a94009823
(svn r10997) -Codechange: unify the vehicle view window. Patch by PhilSophus.
rubidium
parents:
7484
diff
changeset
|
59 |
ShowVehicleViewWindow(v); |
0 | 60 |
} |
61 |
||
2593
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
62 |
/** |
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
63 |
* Get the number of pixels for the given wagon length. |
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
64 |
* @param len Length measured in 1/8ths of a standard wagon. |
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
65 |
* @return Number of pixels across. |
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
66 |
*/ |
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7266
diff
changeset
|
67 |
int WagonLengthToPixels(int len) |
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7266
diff
changeset
|
68 |
{ |
3845
af6eb0103fed
(svn r4869) - NewGRF: support setting train list vehicle width to 32 instead of 29 pixels, for sets which use 32 pixel long engines/wagons.
peter1138
parents:
3844
diff
changeset
|
69 |
return (len * _traininfo_vehicle_width) / 8; |
2593
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
70 |
} |
ccb101f0439c
(svn r3130) Calculate shorter wagon lengths more precisely in train depot window. This affects wagon position, the scroll bar, and the train length counter. No trial and error is required to get the correct length now.
peter1138
parents:
2570
diff
changeset
|
71 |
|
4442
9f8bb348d58f
(svn r6215) -Codechange: [vehicle list windows] unified Player(vehicle)WndProc into PlayerVehWndProc
bjarni
parents:
4434
diff
changeset
|
72 |
void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip, VehicleID selection) |
0 | 73 |
{ |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
74 |
DrawPixelInfo tmp_dpi, *old_dpi; |
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
75 |
int dx = -(skip * 8) / _traininfo_vehicle_width; |
4049
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
76 |
/* Position of highlight box */ |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
77 |
int highlight_l = 0; |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
78 |
int highlight_r = 0; |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
79 |
|
4429
b4eb6d97996f
(svn r6184) Remove the unused (because it was NULL in all callers) second parameter of FillDrawPixelInfo() and simplify some expressions
tron
parents:
4426
diff
changeset
|
80 |
if (!FillDrawPixelInfo(&tmp_dpi, x - 2, y - 1, count + 1, 14)) return; |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
81 |
|
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
82 |
count = (count * 8) / _traininfo_vehicle_width; |
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
83 |
|
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
84 |
old_dpi = _cur_dpi; |
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
85 |
_cur_dpi = &tmp_dpi; |
1922
bda6f85eefaa
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
86 |
|
0 | 87 |
do { |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
88 |
int width = v->u.rail.cached_veh_length; |
1922
bda6f85eefaa
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
89 |
|
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
90 |
if (dx + width > 0) { |
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
91 |
if (dx <= count) { |
5668
36b39f4a9032
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5601
diff
changeset
|
92 |
SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); |
7134
5b2d47128d05
(svn r10408) -Codechange: make GetImage a class method of Vehicle instead of Get(Aircraft|RoadVeh|Ship|Train)Image.
rubidium
parents:
7063
diff
changeset
|
93 |
DrawSprite(v->GetImage(DIR_W), pal, 16 + WagonLengthToPixels(dx), 7 + (is_custom_sprite(RailVehInfo(v->engine_type)->image_index) ? _traininfo_vehicle_pitch : 0)); |
4049
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
94 |
if (v->index == selection) { |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
95 |
/* Set the highlight position */ |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
96 |
highlight_l = WagonLengthToPixels(dx) + 1; |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
97 |
highlight_r = WagonLengthToPixels(dx + width) + 1; |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
98 |
} |
1922
bda6f85eefaa
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
99 |
} |
0 | 100 |
} |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
101 |
dx += width; |
0 | 102 |
|
7492
35acee076719
(svn r11003) -Codechange: replace Vehicle->next to Vehicle->Next() and Vehicle->SetNext() so we can trap instances that change a next pointer and (in the future) update the first/previous pointers based on that.
rubidium
parents:
7488
diff
changeset
|
103 |
v = v->Next(); |
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
104 |
} while (dx < count && v != NULL); |
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
105 |
|
4049
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
106 |
if (highlight_l != highlight_r) { |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
107 |
/* Draw the highlight. Now done after drawing all the engines, as |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
108 |
* the next engine after the highlight could overlap it. */ |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
109 |
DrawFrameRect(highlight_l, 0, highlight_r, 13, 15, FR_BORDERONLY); |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
110 |
} |
d65bf8f154bc
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
peter1138
parents:
4041
diff
changeset
|
111 |
|
3919
b64f70fcca85
(svn r5046) - Implement smooth horizontal depot scrolling by setting up a clipping area to draw the train image. This fixes a couple of usability issues when shorter wagons are used in the depot; shorter wagons scrolled at a different speed, and not all wagons were visible sometimes.
peter1138
parents:
3887
diff
changeset
|
112 |
_cur_dpi = old_dpi; |
0 | 113 |
} |
114 |
||
1790
47963a0cfca3
(svn r2294) - CodeChange: check the service interval settings when changing of all vehicle-types. To simplify things introduce GetServiceIntervalClamped() that returns the same or clamped value of the new service interval. There were some inconsistencies in the gui files so I had to change those, and const correctness kicked in, so it's a bit messy at certain points.
Darkvater
parents:
1658
diff
changeset
|
115 |
static void TrainDetailsCargoTab(const Vehicle *v, int x, int y) |
0 | 116 |
{ |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
117 |
if (v->cargo_cap != 0) { |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
118 |
StringID str = STR_8812_EMPTY; |
0 | 119 |
|
7010
6f0d9f03180d
(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
parents:
7002
diff
changeset
|
120 |
if (!v->cargo.Empty()) { |
534
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
524
diff
changeset
|
121 |
SetDParam(0, v->cargo_type); |
7010
6f0d9f03180d
(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
parents:
7002
diff
changeset
|
122 |
SetDParam(1, v->cargo.Count()); |
6f0d9f03180d
(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
parents:
7002
diff
changeset
|
123 |
SetDParam(2, v->cargo.Source()); |
5163
459b243f8413
(svn r7269) -Feature: Add freight trains patch option. This option is a multiplier for the weight of cargo on freight trains, to simulate longer heavier trains. The default value of 1 behaves as before.
peter1138
parents:
5124
diff
changeset
|
124 |
SetDParam(3, _patches.freight_trains); |
5316
27fa85736f8a
(svn r7473) -Fix (r7269): Pass a cargo type to determine the freight weight
peter1138
parents:
5273
diff
changeset
|
125 |
str = FreightWagonMult(v->cargo_type) > 1 ? STR_FROM_MULT : STR_8813_FROM; |
0 | 126 |
} |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
127 |
DrawString(x, y, str, TC_FROMSTRING); |
0 | 128 |
} |
129 |
} |
|
130 |
||
1790
47963a0cfca3
(svn r2294) - CodeChange: check the service interval settings when changing of all vehicle-types. To simplify things introduce GetServiceIntervalClamped() that returns the same or clamped value of the new service interval. There were some inconsistencies in the gui files so I had to change those, and const correctness kicked in, so it's a bit messy at certain points.
Darkvater
parents:
1658
diff
changeset
|
131 |
static void TrainDetailsInfoTab(const Vehicle *v, int x, int y) |
0 | 132 |
{ |
5868
94430141c189
(svn r8455) -Codechange: Give a more meaningful name (railveh_type)to member flags of RailVehInfo, as well as changing the code to reflect the fact that it was not a flag but rather a one value only variable. Doing so, some evaluations have been simplified.
belugas
parents:
5824
diff
changeset
|
133 |
if (RailVehInfo(v->engine_type)->railveh_type == RAILVEH_WAGON) { |
7059
c6d12e3de0dc
(svn r10324) -Codechange: reference engine names by index
peter1138
parents:
7049
diff
changeset
|
134 |
SetDParam(0, v->engine_type); |
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6991
diff
changeset
|
135 |
SetDParam(1, v->value); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
136 |
DrawString(x, y, STR_882D_VALUE, TC_BLACK); |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
137 |
} else { |
7059
c6d12e3de0dc
(svn r10324) -Codechange: reference engine names by index
peter1138
parents:
7049
diff
changeset
|
138 |
SetDParam(0, v->engine_type); |
4329
0e6e689f66e7
(svn r6002) -Cleanup: remove the now redundant BASE_YEAR constant.
rubidium
parents:
4299
diff
changeset
|
139 |
SetDParam(1, v->build_year); |
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6991
diff
changeset
|
140 |
SetDParam(2, v->value); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
141 |
DrawString(x, y, STR_882C_BUILT_VALUE, TC_BLACK); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
142 |
} |
0 | 143 |
} |
144 |
||
1790
47963a0cfca3
(svn r2294) - CodeChange: check the service interval settings when changing of all vehicle-types. To simplify things introduce GetServiceIntervalClamped() that returns the same or clamped value of the new service interval. There were some inconsistencies in the gui files so I had to change those, and const correctness kicked in, so it's a bit messy at certain points.
Darkvater
parents:
1658
diff
changeset
|
145 |
static void TrainDetailsCapacityTab(const Vehicle *v, int x, int y) |
0 | 146 |
{ |
147 |
if (v->cargo_cap != 0) { |
|
4896
f86350aaaaa5
(svn r6855) - Codechange: When displaying a "quantity of cargo" string, use the {CARGO} command and supply the cargo type and quantity, instead of manually looking up the cargo type's string.
peter1138
parents:
4871
diff
changeset
|
148 |
SetDParam(0, v->cargo_type); |
534
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
524
diff
changeset
|
149 |
SetDParam(1, v->cargo_cap); |
5163
459b243f8413
(svn r7269) -Feature: Add freight trains patch option. This option is a multiplier for the weight of cargo on freight trains, to simulate longer heavier trains. The default value of 1 behaves as before.
peter1138
parents:
5124
diff
changeset
|
150 |
SetDParam(2, _patches.freight_trains); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
151 |
DrawString(x, y, FreightWagonMult(v->cargo_type) > 1 ? STR_CAPACITY_MULT : STR_013F_CAPACITY, TC_FROMSTRING); |
0 | 152 |
} |
153 |
} |
|
154 |
||
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
155 |
int GetTrainDetailsWndVScroll(VehicleID veh_id, byte det_tab) |
0 | 156 |
{ |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
157 |
AcceptedCargo act_cargo; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
158 |
AcceptedCargo max_cargo; |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
159 |
int num = 0; |
0 | 160 |
|
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
161 |
if (det_tab == 3) { // Total cargo tab |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
162 |
memset(max_cargo, 0, sizeof(max_cargo)); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
163 |
memset(act_cargo, 0, sizeof(act_cargo)); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
164 |
|
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
165 |
for (const Vehicle *v = GetVehicle(veh_id) ; v != NULL ; v = v->Next()) { |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
166 |
act_cargo[v->cargo_type] += v->cargo.Count(); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
167 |
max_cargo[v->cargo_type] += v->cargo_cap; |
0 | 168 |
} |
169 |
||
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
170 |
/* Set scroll-amount seperately from counting, as to not compute num double |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
171 |
* for more carriages of the same type |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
172 |
*/ |
6350
04b19f551aec
(svn r9388) -Codechange: variable scope and type, and standardify all CargoID loops.
peter1138
parents:
6259
diff
changeset
|
173 |
for (CargoID i = 0; i < NUM_CARGO; i++) { |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
174 |
if (max_cargo[i] > 0) num++; // only count carriages that the train has |
0 | 175 |
} |
4434
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4429
diff
changeset
|
176 |
num++; // needs one more because first line is description string |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
177 |
} else { |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
178 |
for (const Vehicle *v = GetVehicle(veh_id) ; v != NULL ; v = v->Next()) { |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
179 |
if (!IsArticulatedPart(v) || v->cargo_cap != 0) num++; |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
180 |
} |
0 | 181 |
} |
182 |
||
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
183 |
return num; |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
184 |
} |
0 | 185 |
|
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
186 |
void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vscroll_cap, byte det_tab) |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
187 |
{ |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
188 |
/* draw the first 3 details tabs */ |
0 | 189 |
if (det_tab != 3) { |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
190 |
const Vehicle *u = v; |
2822
3685b5c83c57
(svn r3370) Improve alignment of text within total cargo tab of train view window
peter1138
parents:
2819
diff
changeset
|
191 |
x = 1; |
2952 | 192 |
for (;;) { |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
193 |
if (--vscroll_pos < 0 && vscroll_pos >= -vscroll_cap) { |
2602
1a6561c9a408
(svn r3139) -NewGRF, Feature: support for articulated rail vehicles. This is used, for example, by coal tenders.
peter1138
parents:
2593
diff
changeset
|
194 |
int dx = 0; |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
195 |
int px; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
196 |
int py; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
197 |
|
2602
1a6561c9a408
(svn r3139) -NewGRF, Feature: support for articulated rail vehicles. This is used, for example, by coal tenders.
peter1138
parents:
2593
diff
changeset
|
198 |
u = v; |
1a6561c9a408
(svn r3139) -NewGRF, Feature: support for articulated rail vehicles. This is used, for example, by coal tenders.
peter1138
parents:
2593
diff
changeset
|
199 |
do { |
5668
36b39f4a9032
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5601
diff
changeset
|
200 |
SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); |
7134
5b2d47128d05
(svn r10408) -Codechange: make GetImage a class method of Vehicle instead of Get(Aircraft|RoadVeh|Ship|Train)Image.
rubidium
parents:
7063
diff
changeset
|
201 |
DrawSprite(u->GetImage(DIR_W), pal, x + WagonLengthToPixels(4 + dx), y + 6 + (is_custom_sprite(RailVehInfo(u->engine_type)->image_index) ? _traininfo_vehicle_pitch : 0)); |
2602
1a6561c9a408
(svn r3139) -NewGRF, Feature: support for articulated rail vehicles. This is used, for example, by coal tenders.
peter1138
parents:
2593
diff
changeset
|
202 |
dx += u->u.rail.cached_veh_length; |
7492
35acee076719
(svn r11003) -Codechange: replace Vehicle->next to Vehicle->Next() and Vehicle->SetNext() so we can trap instances that change a next pointer and (in the future) update the first/previous pointers based on that.
rubidium
parents:
7488
diff
changeset
|
203 |
u = u->Next(); |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
204 |
} while (u != NULL && IsArticulatedPart(u) && u->cargo_cap == 0); |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
205 |
|
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
206 |
px = x + WagonLengthToPixels(dx) + 2; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
207 |
py = y + 2; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
208 |
switch (det_tab) { |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
209 |
default: NOT_REACHED(); |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
210 |
case 0: TrainDetailsCargoTab( v, px, py); break; |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
211 |
case 1: |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
212 |
/* Only show name and value for the 'real' part */ |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
213 |
if (!IsArticulatedPart(v)) { |
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
214 |
TrainDetailsInfoTab(v, px, py); |
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
215 |
} |
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
216 |
break; |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
217 |
case 2: TrainDetailsCapacityTab(v, px, py); break; |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
218 |
} |
0 | 219 |
y += 14; |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
220 |
|
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
221 |
v = u; |
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
222 |
} else { |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
223 |
/* Move to the next line */ |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
224 |
do { |
7492
35acee076719
(svn r11003) -Codechange: replace Vehicle->next to Vehicle->Next() and Vehicle->SetNext() so we can trap instances that change a next pointer and (in the future) update the first/previous pointers based on that.
rubidium
parents:
7488
diff
changeset
|
225 |
v = v->Next(); |
4868
846811004d30
(svn r6794) - Fix: In the train detail window, split up articulated parts if they can contain cargo. This allows us to show the full cargo contents.
peter1138
parents:
4836
diff
changeset
|
226 |
} while (v != NULL && IsArticulatedPart(v) && v->cargo_cap == 0); |
0 | 227 |
} |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
228 |
if (v == NULL) return; |
0 | 229 |
} |
2959
0a9e35c5d7a3
(svn r3521) - Feature: Allow trains details view to be resized.
peter1138
parents:
2958
diff
changeset
|
230 |
} else { |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
231 |
AcceptedCargo act_cargo; |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
232 |
AcceptedCargo max_cargo; |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
233 |
|
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
234 |
memset(max_cargo, 0, sizeof(max_cargo)); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
235 |
memset(act_cargo, 0, sizeof(act_cargo)); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
236 |
|
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
237 |
for (const Vehicle *u = v; u != NULL ; u = u->Next()) { |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
238 |
act_cargo[u->cargo_type] += u->cargo.Count(); |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
239 |
max_cargo[u->cargo_type] += u->cargo_cap; |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
240 |
} |
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
241 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6350
diff
changeset
|
242 |
/* draw total cargo tab */ |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
243 |
DrawString(x, y + 2, STR_013F_TOTAL_CAPACITY_TEXT, TC_FROMSTRING); |
6350
04b19f551aec
(svn r9388) -Codechange: variable scope and type, and standardify all CargoID loops.
peter1138
parents:
6259
diff
changeset
|
244 |
for (CargoID i = 0; i < NUM_CARGO; i++) { |
7530
bfeada535347
(svn r11049) -Codechange: unify a large part of the vehicle details window. Based on a patch by nycom.
rubidium
parents:
7492
diff
changeset
|
245 |
if (max_cargo[i] > 0 && --vscroll_pos < 0 && vscroll_pos > -vscroll_cap) { |
0 | 246 |
y += 14; |
4492
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
247 |
SetDParam(0, i); // {CARGO} #1 |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
248 |
SetDParam(1, act_cargo[i]); // {CARGO} #2 |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
249 |
SetDParam(2, i); // {SHORTCARGO} #1 |
7c67249f083c
(svn r6277) Clean up the train details drawing routine
tron
parents:
4456
diff
changeset
|
250 |
SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2 |
5163
459b243f8413
(svn r7269) -Feature: Add freight trains patch option. This option is a multiplier for the weight of cargo on freight trains, to simulate longer heavier trains. The default value of 1 behaves as before.
peter1138
parents:
5124
diff
changeset
|
251 |
SetDParam(4, _patches.freight_trains); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
252 |
DrawString(x, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_013F_TOTAL_CAPACITY, TC_FROMSTRING); |
0 | 253 |
} |
2959
0a9e35c5d7a3
(svn r3521) - Feature: Allow trains details view to be resized.
peter1138
parents:
2958
diff
changeset
|
254 |
} |
7010
6f0d9f03180d
(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
parents:
7002
diff
changeset
|
255 |
SetDParam(0, v->cargo.FeederShare()); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7653
diff
changeset
|
256 |
DrawString(x, y + 15, STR_FEEDER_CARGO_VALUE, TC_FROMSTRING); |
0 | 257 |
} |
258 |
} |