author | peter1138 |
Thu, 10 May 2007 06:42:43 +0000 | |
changeset 7099 | 1528b11097af |
parent 7090 | 8e4a4ac64b2d |
child 7107 | c8e507a51696 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
3 |
/** @vehicle.h */ |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
4 |
|
0 | 5 |
#ifndef VEHICLE_H |
6 |
#define VEHICLE_H |
|
7 |
||
5216
d581e4db95b6
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents:
5211
diff
changeset
|
8 |
#include "oldpool.h" |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
9 |
#include "order.h" |
1944
012fa5e69118
(svn r2450) * Codechange: Replaced all uses of the arrays in tile.h with calls to the associated wrapper functions.
matthijs
parents:
1922
diff
changeset
|
10 |
#include "rail.h" |
577 | 11 |
|
6317
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
12 |
/** The returned bits of VehicleEnterTile. */ |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
13 |
enum VehicleEnterTileStatus { |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
14 |
VETS_ENTERED_STATION = 1, ///< The vehicle entered a station |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
15 |
VETS_ENTERED_WORMHOLE = 2, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
16 |
VETS_CANNOT_ENTER = 3, ///< The vehicle cannot enter the tile |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
17 |
|
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
18 |
/** |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
19 |
* Shift the VehicleEnterTileStatus this many bits |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
20 |
* to the right to get the station ID when |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
21 |
* VETS_ENTERED_STATION is set |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
22 |
*/ |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
23 |
VETS_STATION_ID_OFFSET = 8, |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
24 |
|
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
25 |
/** Bit sets of the above specified bits */ |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
26 |
VETSB_CONTINUE = 0, ///< The vehicle can continue normally |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
27 |
VETSB_ENTERED_STATION = 1 << VETS_ENTERED_STATION, ///< The vehicle entered a station |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
28 |
VETSB_ENTERED_WORMHOLE = 1 << VETS_ENTERED_WORMHOLE, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
29 |
VETSB_CANNOT_ENTER = 1 << VETS_CANNOT_ENTER, ///< The vehicle cannot enter the tile |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
30 |
}; |
c73bda71ac16
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
6206
diff
changeset
|
31 |
|
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
32 |
/** Road vehicle states */ |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
33 |
enum RoadVehicleStates { |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
34 |
/* |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
35 |
* Lower 4 bits are used for vehicle track direction. (Trackdirs) |
6487
0e7285c3c059
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6479
diff
changeset
|
36 |
* When in a road stop (bit 5 or bit 6 set) these bits give the |
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
37 |
* track direction of the entry to the road stop. |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
38 |
* As the entry direction will always be a diagonal |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
39 |
* direction (X_NE, Y_SE, X_SW or Y_NW) only bits 0 and 3 |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
40 |
* are needed to hold this direction. Bit 1 is then used to show |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
41 |
* that the vehicle is using the second road stop bay. |
6487
0e7285c3c059
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6479
diff
changeset
|
42 |
* Bit 2 is then used for drive-through stops to show the vehicle |
0e7285c3c059
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6479
diff
changeset
|
43 |
* is stopping at this road stop. |
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
44 |
*/ |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
45 |
|
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
46 |
/* Numeric values */ |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
47 |
RVSB_IN_DEPOT = 0xFE, ///< The vehicle is in a depot |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
48 |
RVSB_WORMHOLE = 0xFF, ///< The vehicle is in a tunnel and/or bridge |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
49 |
|
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
50 |
/* Bit numbers */ |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
51 |
RVS_USING_SECOND_BAY = 1, ///< Only used while in a road stop |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6326
diff
changeset
|
52 |
RVS_IS_STOPPING = 2, ///< Only used for drive-through stops. Vehicle will stop here |
6487
0e7285c3c059
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6479
diff
changeset
|
53 |
RVS_DRIVE_SIDE = 4, ///< Only used when retrieving move data |
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
54 |
RVS_IN_ROAD_STOP = 5, ///< The vehicle is in a road stop |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6326
diff
changeset
|
55 |
RVS_IN_DT_ROAD_STOP = 6, ///< The vehicle is in a drive-through road stop |
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
56 |
|
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
57 |
/* Bit sets of the above specified bits */ |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
58 |
RVSB_IN_ROAD_STOP = 1 << RVS_IN_ROAD_STOP, ///< The vehicle is in a road stop |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
59 |
RVSB_IN_ROAD_STOP_END = RVSB_IN_ROAD_STOP + TRACKDIR_END, |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6326
diff
changeset
|
60 |
RVSB_IN_DT_ROAD_STOP = 1 << RVS_IN_DT_ROAD_STOP, ///< The vehicle is in a drive-through road stop |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6326
diff
changeset
|
61 |
RVSB_IN_DT_ROAD_STOP_END = RVSB_IN_DT_ROAD_STOP + TRACKDIR_END, |
6326
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
62 |
|
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
63 |
RVSB_TRACKDIR_MASK = 0x0F, ///< The mask used to extract track dirs |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
64 |
RVSB_ROAD_STOP_TRACKDIR_MASK = 0x09 ///< Only bits 0 and 3 are used to encode the trackdir for road stops |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
65 |
}; |
c904c7ea1c8d
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
6317
diff
changeset
|
66 |
|
1763
9e6f367ae02e
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
67 |
enum { |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
68 |
VEH_TRAIN, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
69 |
VEH_ROAD, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
70 |
VEH_SHIP, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
71 |
VEH_AIRCRAFT, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
72 |
VEH_SPECIAL, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
73 |
VEH_DISASTER, |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
74 |
VEH_INVALID = 0xFF, |
1763
9e6f367ae02e
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
75 |
} ; |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
76 |
|
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
77 |
enum VehStatus { |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
78 |
VS_HIDDEN = 0x01, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
79 |
VS_STOPPED = 0x02, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
80 |
VS_UNCLICKABLE = 0x04, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
81 |
VS_DEFPAL = 0x08, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
82 |
VS_TRAIN_SLOWING = 0x10, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
83 |
VS_SHADOW = 0x20, |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
84 |
VS_AIRCRAFT_BROKEN = 0x40, |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
85 |
VS_CRASHED = 0x80, |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
86 |
}; |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
87 |
|
6501
1e95e8d993ff
(svn r8945) -Codechange: Rename v->load_status to v->vehicle_flags so it can be used for more than just the gradual loading status.
maedhros
parents:
6487
diff
changeset
|
88 |
enum VehicleFlags { |
1e95e8d993ff
(svn r8945) -Codechange: Rename v->load_status to v->vehicle_flags so it can be used for more than just the gradual loading status.
maedhros
parents:
6487
diff
changeset
|
89 |
VF_LOADING_FINISHED, |
1e95e8d993ff
(svn r8945) -Codechange: Rename v->load_status to v->vehicle_flags so it can be used for more than just the gradual loading status.
maedhros
parents:
6487
diff
changeset
|
90 |
VF_CARGO_UNLOADING, |
6502
7ca154aca2b7
(svn r8946) -Feature: [NewGRF] Add support for vehicle variables 0xFE and 0xFF bit 10,
maedhros
parents:
6501
diff
changeset
|
91 |
VF_BUILT_AS_PROTOTYPE, |
5211
651c9272ad22
(svn r7326) -Feature: Add support for gradual (un)loading of vehicles (Maedhros)
peter1138
parents:
5162
diff
changeset
|
92 |
}; |
651c9272ad22
(svn r7326) -Feature: Add support for gradual (un)loading of vehicles (Maedhros)
peter1138
parents:
5162
diff
changeset
|
93 |
|
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
94 |
/* Effect vehicle types */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
95 |
enum EffectVehicle { |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
96 |
EV_CHIMNEY_SMOKE = 0, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
97 |
EV_STEAM_SMOKE = 1, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
98 |
EV_DIESEL_SMOKE = 2, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
99 |
EV_ELECTRIC_SPARK = 3, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
100 |
EV_SMOKE = 4, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
101 |
EV_EXPLOSION_LARGE = 5, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
102 |
EV_BREAKDOWN_SMOKE = 6, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
103 |
EV_EXPLOSION_SMALL = 7, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
104 |
EV_BULLDOZER = 8, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
105 |
EV_BUBBLE = 9 |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
106 |
}; |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
107 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
108 |
struct VehicleRail { |
4434
4175805666a5
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4404
diff
changeset
|
109 |
uint16 last_speed; // NOSAVE: only used in UI |
0 | 110 |
uint16 crash_anim_pos; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
111 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
112 |
/* cached values, recalculated on load and each time a vehicle is added to/removed from the consist. */ |
1905
f43d9e821deb
(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.
hackykid
parents:
1804
diff
changeset
|
113 |
uint16 cached_max_speed; // max speed of the consist. (minimum of the max speed of all vehicles in the consist) |
f43d9e821deb
(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.
hackykid
parents:
1804
diff
changeset
|
114 |
uint32 cached_power; // total power of the consist. |
1922
797081e56d13
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
115 |
uint8 cached_veh_length; // length of this vehicle in units of 1/8 of normal length, cached because this can be set by a callback |
2587
d554e2a03afa
(svn r3124) Alter train loading/unloading time to use the actual length of the train instead of the number of wagons. The actual length is cached in the first vehicle of the train.
peter1138
parents:
2579
diff
changeset
|
116 |
uint16 cached_total_length; ///< Length of the whole train, valid only for first engine. |
d554e2a03afa
(svn r3124) Alter train loading/unloading time to use the actual length of the train instead of the number of wagons. The actual length is cached in the first vehicle of the train.
peter1138
parents:
2579
diff
changeset
|
117 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
118 |
/* cached values, recalculated when the cargo on a train changes (in addition to the conditions above) */ |
5162
f1d90a883266
(svn r7268) -Codechange: change rail vehicle cached weight from 16 to 32 bit values to avoid possible overflows.
peter1138
parents:
5116
diff
changeset
|
119 |
uint32 cached_weight; // total weight of the consist. |
f1d90a883266
(svn r7268) -Codechange: change rail vehicle cached weight from 16 to 32 bit values to avoid possible overflows.
peter1138
parents:
5116
diff
changeset
|
120 |
uint32 cached_veh_weight; // weight of the vehicle. |
5588
1bcb6b4c01d8
(svn r7592) -Feature: Add support for tractive effort to 'realistic' acceleration.
peter1138
parents:
5573
diff
changeset
|
121 |
uint32 cached_max_te; // max tractive effort of consist |
2595
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
122 |
/** |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
123 |
* Position/type of visual effect. |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
124 |
* bit 0 - 3 = position of effect relative to vehicle. (0 = front, 8 = centre, 15 = rear) |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
125 |
* bit 4 - 5 = type of effect. (0 = default for engine class, 1 = steam, 2 = diesel, 3 = electric) |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
126 |
* bit 6 = disable visual effect. |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
127 |
* bit 7 = disable powered wagons. |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
128 |
*/ |
0bab25144829
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
129 |
byte cached_vis_effect; |
0 | 130 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
131 |
/* NOSAVE: for wagon override - id of the first engine in train |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
132 |
* 0xffff == not in train */ |
1796
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1790
diff
changeset
|
133 |
EngineID first_engine; |
0 | 134 |
|
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5825
diff
changeset
|
135 |
TrackBitsByte track; |
0 | 136 |
byte force_proceed; |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5825
diff
changeset
|
137 |
RailTypeByte railtype; |
3355
a653b8e47f27
(svn r4150) -Feature: Merged elrails into trunk. Thanks to Tron for lots of code and proofreading, thanks to peter1138 for another lot of code and ideas.
celestar
parents:
3347
diff
changeset
|
138 |
RailTypeMask compatible_railtypes; |
0 | 139 |
|
140 |
byte flags; |
|
2008
c9d6585c96c8
(svn r2516) - Feature: [pbs] Implement path-based-signalling. This allows multiple trains within the same signal block, provided their paths dont intersect. For this the block must have all exit and entry signals be pbs signals. Place these by ctrl-clicking 4 times on a normal signal.
hackykid
parents:
1977
diff
changeset
|
141 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
142 |
/* Link between the two ends of a multiheaded engine */ |
2676
2ba71e034d97
(svn r3218) -Feature: Multiheaded train engines will now stay in the same train
bjarni
parents:
2666
diff
changeset
|
143 |
Vehicle *other_multiheaded_part; |
7099
1528b11097af
(svn r9818) -Codechange: Cache wagon override sprite set whenever consist is changed, instead of 'recalculating' it every time it is used or just tested.
peter1138
parents:
7090
diff
changeset
|
144 |
|
1528b11097af
(svn r9818) -Codechange: Cache wagon override sprite set whenever consist is changed, instead of 'recalculating' it every time it is used or just tested.
peter1138
parents:
7090
diff
changeset
|
145 |
/* Cached wagon override spritegroup */ |
1528b11097af
(svn r9818) -Codechange: Cache wagon override sprite set whenever consist is changed, instead of 'recalculating' it every time it is used or just tested.
peter1138
parents:
7090
diff
changeset
|
146 |
const struct SpriteGroup *cached_override; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
147 |
}; |
0 | 148 |
|
149 |
enum { |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
150 |
VRF_REVERSING = 0, |
0 | 151 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
152 |
/* used to calculate if train is going up or down */ |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
153 |
VRF_GOINGUP = 1, |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
154 |
VRF_GOINGDOWN = 2, |
1908
bc48a30aba72
(svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents:
1905
diff
changeset
|
155 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
156 |
/* used to store if a wagon is powered or not */ |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
157 |
VRF_POWEREDWAGON = 3, |
3256
a23d94f568b7
(svn r3944) -Feature: it's now possible to turn a single unit in a train
bjarni
parents:
3173
diff
changeset
|
158 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
159 |
/* used to reverse the visible direction of the vehicle */ |
3256
a23d94f568b7
(svn r3944) -Feature: it's now possible to turn a single unit in a train
bjarni
parents:
3173
diff
changeset
|
160 |
VRF_REVERSE_DIRECTION = 4, |
4870
0ee22ed51ada
(svn r6800) -Feature change: [train is lost] message is now generated immediately when pathfinder can't find the path. (thanks MeusH, peter1138 and Brianetta for ideas and help).
KUDr
parents:
4734
diff
changeset
|
161 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
162 |
/* used to mark train as lost because PF can't find the route */ |
4870
0ee22ed51ada
(svn r6800) -Feature change: [train is lost] message is now generated immediately when pathfinder can't find the path. (thanks MeusH, peter1138 and Brianetta for ideas and help).
KUDr
parents:
4734
diff
changeset
|
163 |
VRF_NO_PATH_TO_DESTINATION = 5, |
5116
2a33a74925c5
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
4972
diff
changeset
|
164 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
165 |
/* used to mark that electric train engine is allowed to run on normal rail */ |
5116
2a33a74925c5
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
4972
diff
changeset
|
166 |
VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL = 6, |
0 | 167 |
}; |
168 |
||
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
169 |
struct VehicleAir { |
0 | 170 |
uint16 crashed_counter; |
6986
168d3add1f13
(svn r9671) -Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static. Vehicle max speed and train power/te/running costs are adjustable.
peter1138
parents:
6919
diff
changeset
|
171 |
uint16 cached_max_speed; |
0 | 172 |
byte pos; |
4077
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
3977
diff
changeset
|
173 |
byte previous_pos; |
3347
d5d8ace1bb13
(svn r4131) - CodeChange: Add proper semantics for StationID for such variables instead of using the general uint16-type. StationID was added for depots, waypoints and stations where necessary. We probably need to change GetDepot(), IsDepotIndex(), IsStationIndex(), GetWaypoint() and IsWaypointIndex() as well to use StationID.
Darkvater
parents:
3344
diff
changeset
|
174 |
StationID targetairport; |
0 | 175 |
byte state; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
176 |
}; |
0 | 177 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
178 |
struct VehicleRoad { |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
179 |
byte state; ///< @see RoadVehicleStates |
0 | 180 |
byte frame; |
3009
c477ab0f00b3
(svn r3589) - Rename u.road.unk2 to u.road.blocked_ctr
peter1138
parents:
3008
diff
changeset
|
181 |
uint16 blocked_ctr; |
0 | 182 |
byte overtaking; |
183 |
byte overtaking_ctr; |
|
184 |
uint16 crashed_ctr; |
|
185 |
byte reverse_ctr; |
|
1217
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
186 |
struct RoadStop *slot; |
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
187 |
byte slot_age; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
188 |
}; |
0 | 189 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
190 |
struct VehicleSpecial { |
0 | 191 |
uint16 unk0; |
192 |
byte unk2; |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
193 |
}; |
0 | 194 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
195 |
struct VehicleDisaster { |
0 | 196 |
uint16 image_override; |
197 |
uint16 unk2; |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
198 |
}; |
0 | 199 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
200 |
struct VehicleShip { |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5825
diff
changeset
|
201 |
TrackBitsByte state; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
202 |
}; |
0 | 203 |
|
204 |
||
205 |
struct Vehicle { |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
206 |
byte type; // type, ie roadven,train,ship,aircraft,special |
6105
761d393829d6
(svn r8428) -Codechange: Add proper names to aircraft subtypes instead of magic numbers and add a function IsNormalAircraft() which tells us whether the aircraft is in fact some flying device or a rotor/shadow.
Darkvater
parents:
6043
diff
changeset
|
207 |
byte subtype; // subtype (Filled with values from EffectVehicles/TrainSubTypes/AircraftSubTypes) |
0 | 208 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
209 |
VehicleID index; // NOSAVE: Index in vehicle array |
0 | 210 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
211 |
Vehicle *next; // next |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
212 |
Vehicle *first; // NOSAVE: pointer to the first vehicle in the chain |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
213 |
Vehicle *depot_list; //NOSAVE: linked list to tell what vehicles entered a depot during the last tick. Used by autoreplace |
0 | 214 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
215 |
StringID string_id; // Displayed string |
0 | 216 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
217 |
UnitID unitnumber; // unit number, for display purposes only |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
218 |
PlayerByte owner; // which player owns the vehicle? |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
219 |
|
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
220 |
TileIndex tile; // Current tile index |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
221 |
TileIndex dest_tile; // Heading for this tile |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
222 |
|
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
223 |
int32 x_pos; // coordinates |
1174
27e386195965
(svn r1676) Increase the size of TileIndex and TileIndexDiff to 32bits and adapt the save/load data and some other parts of the code to that change
tron
parents:
1139
diff
changeset
|
224 |
int32 y_pos; |
0 | 225 |
byte z_pos; |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5825
diff
changeset
|
226 |
DirectionByte direction; // facing |
0 | 227 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
228 |
byte spritenum; // currently displayed sprite index |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
229 |
// 0xfd == custom sprite, 0xfe == custom second head sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
230 |
// 0xff == reserved for another custom sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
231 |
uint16 cur_image; // sprite number for this vehicle |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
232 |
byte sprite_width; // width of vehicle sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
233 |
byte sprite_height; // height of vehicle sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
234 |
byte z_height; // z-height of vehicle sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
235 |
int8 x_offs; // x offset for vehicle sprite |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
236 |
int8 y_offs; // y offset for vehicle sprite |
1770
b6bda4dc6da2
(svn r2274) - Codechange: some comments, parentheses and EngineID typedef for engine_type
Darkvater
parents:
1765
diff
changeset
|
237 |
EngineID engine_type; |
0 | 238 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
239 |
/* for randomized variational spritegroups |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
240 |
* bitmask used to resolve them; parts of it get reseeded when triggers |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
241 |
* of corresponding spritegroups get matched */ |
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
242 |
byte random_bits; |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
243 |
byte waiting_triggers; // triggers to be yet matched |
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
244 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
245 |
uint16 max_speed; // maximum speed |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
246 |
uint16 cur_speed; // current speed |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
247 |
byte subspeed; // fractional speed |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
248 |
byte acceleration; // used by train & aircraft |
0 | 249 |
byte progress; |
4656
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
peter1138
parents:
4635
diff
changeset
|
250 |
uint32 motion_counter; |
0 | 251 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
252 |
byte vehstatus; // Status |
3347
d5d8ace1bb13
(svn r4131) - CodeChange: Add proper semantics for StationID for such variables instead of using the general uint16-type. StationID was added for depots, waypoints and stations where necessary. We probably need to change GetDepot(), IsDepotIndex(), IsStationIndex(), GetWaypoint() and IsWaypointIndex() as well to use StationID.
Darkvater
parents:
3344
diff
changeset
|
253 |
StationID last_station_visited; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
254 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
255 |
CargoID cargo_type; // type of cargo this vehicle is carrying |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
256 |
byte cargo_days; // how many days have the pieces been in transit |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
257 |
StationID cargo_source; // source of cargo |
5934
9f91cc4e2b17
(svn r8144) -Fix: [FS#163] When a station is removed, vehicles do not get excessive payment any longer, as the origin TILE is now stored as long as the origin STATION for the transported cargos. Basically this is only a temporary fix until cargopackets are implemented, but it fixes one of the oldest known bugs (Special Thanks to Darkvater for lots of testing)
celestar
parents:
5919
diff
changeset
|
258 |
TileIndex cargo_source_xy; //< stores the Tile where the source station is located, in case it is removed |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
259 |
uint16 cargo_cap; // total capacity |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
260 |
uint16 cargo_count; // how many pieces are used |
3870
766d7bd6c299
(svn r4910) - NewGRF: add and initialize cargo subtype for vehicle visual variations
peter1138
parents:
3580
diff
changeset
|
261 |
byte cargo_subtype; ///< Used for livery refits (NewGRF variations) |
0 | 262 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
263 |
byte day_counter; // increased by one for each day |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
264 |
byte tick_counter; // increased by one for each tick |
0 | 265 |
|
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
266 |
/* Begin Order-stuff */ |
3173
1b75b9a6ff71
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
267 |
Order current_order; ///< The current order (+ status, like: loading) |
4391
7bfd170bfdf5
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4384
diff
changeset
|
268 |
VehicleOrderID cur_order_index; ///< The index to the current order |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
269 |
|
3173
1b75b9a6ff71
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
270 |
Order *orders; ///< Pointer to the first order for this vehicle |
4391
7bfd170bfdf5
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4384
diff
changeset
|
271 |
VehicleOrderID num_orders; ///< How many orders there are in the list |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
272 |
|
3173
1b75b9a6ff71
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
273 |
Vehicle *next_shared; ///< If not NULL, this points to the next vehicle that shared the order |
1b75b9a6ff71
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
274 |
Vehicle *prev_shared; ///< If not NULL, this points to the prev vehicle that shared the order |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
275 |
/* End Order-stuff */ |
0 | 276 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
277 |
/* Boundaries for the current position in the world and a next hash link. |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
278 |
* NOSAVE: All of those can be updated with VehiclePositionChanged() */ |
849
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
279 |
int32 left_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
280 |
int32 top_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
281 |
int32 right_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
282 |
int32 bottom_coord; |
5825
d813480f22ac
(svn r8007) -Codechange: Change _vehicle_position_hash from VehicleID to Vehicle*. This removes the need for look ups by index. Also declare the array static.
peter1138
parents:
5726
diff
changeset
|
283 |
Vehicle *next_hash; |
0 | 284 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
285 |
/* Related to age and service time */ |
4326
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
286 |
Date age; // Age in days |
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
287 |
Date max_age; // Maximum age |
4289
ff1b2b915cab
(svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents:
4176
diff
changeset
|
288 |
Date date_of_last_service; |
ff1b2b915cab
(svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents:
4176
diff
changeset
|
289 |
Date service_interval; |
0 | 290 |
uint16 reliability; |
291 |
uint16 reliability_spd_dec; |
|
292 |
byte breakdown_ctr; |
|
293 |
byte breakdown_delay; |
|
294 |
byte breakdowns_since_last_service; |
|
295 |
byte breakdown_chance; |
|
4326
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
296 |
Year build_year; |
0 | 297 |
|
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
298 |
bool leave_depot_instantly; // NOSAVE: stores if the vehicle needs to leave the depot it just entered. Used by autoreplace |
2617
a9e1a187de99
(svn r3155) -Feature: [autoreplace] autoreplace can now remove cars from too long trains
bjarni
parents:
2602
diff
changeset
|
299 |
|
0 | 300 |
uint16 load_unload_time_rem; |
6139
e80b90da75e5
(svn r8501) -Fix (r7377) [FS#539]: Keep track of how much cargo has been paid for, so that cargo cannot be paid for more than once.
maedhros
parents:
6117
diff
changeset
|
301 |
uint16 cargo_paid_for; // How much of the cargo currently on board has been paid for. |
6501
1e95e8d993ff
(svn r8945) -Codechange: Rename v->load_status to v->vehicle_flags so it can be used for more than just the gradual loading status.
maedhros
parents:
6487
diff
changeset
|
302 |
byte vehicle_flags; // Used for gradual loading and other miscellaneous things (@see VehicleFlags enum) |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
303 |
|
0 | 304 |
int32 profit_this_year; |
305 |
int32 profit_last_year; |
|
6524 | 306 |
int32 cargo_feeder_share; ///< value of feeder pickup to be paid for on delivery of cargo |
307 |
TileIndex cargo_loaded_at_xy; ///< tile index where feeder cargo was loaded |
|
0 | 308 |
uint32 value; |
309 |
||
310 |
union { |
|
311 |
VehicleRail rail; |
|
312 |
VehicleAir air; |
|
313 |
VehicleRoad road; |
|
314 |
VehicleSpecial special; |
|
315 |
VehicleDisaster disaster; |
|
316 |
VehicleShip ship; |
|
317 |
} u; |
|
5902
906fea1535ab
(svn r8110) -Codechange: direct Vehicle::current_order.type changes (to OT_LOADING and OT_LEAVESTATION) replaced by v->BeginLoading() and v->LeaveStation() calls. This should allow easy hooking of those state transitions in order to maintain vehicle loading queue.
KUDr
parents:
5838
diff
changeset
|
318 |
|
906fea1535ab
(svn r8110) -Codechange: direct Vehicle::current_order.type changes (to OT_LOADING and OT_LEAVESTATION) replaced by v->BeginLoading() and v->LeaveStation() calls. This should allow easy hooking of those state transitions in order to maintain vehicle loading queue.
KUDr
parents:
5838
diff
changeset
|
319 |
void BeginLoading(); |
906fea1535ab
(svn r8110) -Codechange: direct Vehicle::current_order.type changes (to OT_LOADING and OT_LEAVESTATION) replaced by v->BeginLoading() and v->LeaveStation() calls. This should allow easy hooking of those state transitions in order to maintain vehicle loading queue.
KUDr
parents:
5838
diff
changeset
|
320 |
void LeaveStation(); |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
321 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
322 |
/** |
7090
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
323 |
* Handle the loading of the vehicle; when not it skips through dummy |
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
324 |
* orders and does nothing in all other cases. |
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
325 |
* @param mode is the non-first call for this vehicle in this tick? |
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
326 |
*/ |
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
327 |
void HandleLoading(bool mode = false); |
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
328 |
|
8e4a4ac64b2d
(svn r9808) -Codechange: unify the Handle<VehicleType>Loading functions.
rubidium
parents:
7089
diff
changeset
|
329 |
/** |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
330 |
* An overriden version of new, so you can use the vehicle instance |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
331 |
* instead of a newly allocated piece of memory. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
332 |
* @param size the size of the variable (unused) |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
333 |
* @param v the vehicle to use as 'storage' backend |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
334 |
* @return the memory that is 'allocated' |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
335 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
336 |
void* operator new(size_t size, Vehicle *v) { return v; } |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
337 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
338 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
339 |
* 'Free' the memory allocated by the overriden new. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
340 |
* @param p the memory to 'free' |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
341 |
* @param v the vehicle that was given to 'new' on creation. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
342 |
* @note This function isn't used (at the moment) and only added |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
343 |
* to please some compiler. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
344 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
345 |
void operator delete(void *p, Vehicle *v) {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
346 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
347 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
348 |
* 'Free' the memory allocated by the overriden new. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
349 |
* @param p the memory to 'free' |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
350 |
* @note This function isn't used (at the moment) and only added |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
351 |
* as the above function was needed to please some compiler |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
352 |
* which made it necessary to add this to please yet |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
353 |
* another compiler... |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
354 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
355 |
void operator delete(void *p) {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
356 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
357 |
/** We want to 'destruct' the right class. */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
358 |
virtual ~Vehicle() {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
359 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
360 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
361 |
* Get a string 'representation' of the vehicle type. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
362 |
* @return the string representation. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
363 |
*/ |
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
364 |
virtual const char* GetTypeString() const = 0; |
7049
01825af2ce90
(svn r9755) -Codechange: refactor some more of the begin loading stuff.
rubidium
parents:
7048
diff
changeset
|
365 |
|
01825af2ce90
(svn r9755) -Codechange: refactor some more of the begin loading stuff.
rubidium
parents:
7048
diff
changeset
|
366 |
/** |
01825af2ce90
(svn r9755) -Codechange: refactor some more of the begin loading stuff.
rubidium
parents:
7048
diff
changeset
|
367 |
* Marks the vehicles to be redrawn and updates cached variables |
01825af2ce90
(svn r9755) -Codechange: refactor some more of the begin loading stuff.
rubidium
parents:
7048
diff
changeset
|
368 |
*/ |
01825af2ce90
(svn r9755) -Codechange: refactor some more of the begin loading stuff.
rubidium
parents:
7048
diff
changeset
|
369 |
virtual void MarkDirty() {} |
7054
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
370 |
|
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
371 |
/** |
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
372 |
* Updates the x and y offsets and the size of the sprite used |
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
373 |
* for this vehicle. |
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
374 |
* @param direction the direction the vehicle is facing |
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
375 |
*/ |
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
376 |
virtual void UpdateDeltaXY(Direction direction) {} |
7058
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
377 |
|
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
378 |
/** |
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
379 |
* Sets the expense type associated to this vehicle type |
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
380 |
* @param income whether this is income or (running) expenses of the vehicle |
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
381 |
*/ |
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
382 |
virtual ExpensesType GetExpenseType(bool income) const { return EXPENSES_OTHER; } |
7058
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
383 |
|
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
384 |
/** |
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
385 |
* Invalidates the vehicle list window of this type of vehicle |
b541279ca705
(svn r9764) -Codechange: replace some lookup tables by functions.
rubidium
parents:
7054
diff
changeset
|
386 |
*/ |
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
387 |
virtual WindowClass GetVehicleListWindowClass() const { return WC_NONE; } |
7089
7230d3e22a5f
(svn r9807) -Codechange: unify playing of sound when vehicle has been loaded and leaves the station.
rubidium
parents:
7076
diff
changeset
|
388 |
|
7230d3e22a5f
(svn r9807) -Codechange: unify playing of sound when vehicle has been loaded and leaves the station.
rubidium
parents:
7076
diff
changeset
|
389 |
/** |
7230d3e22a5f
(svn r9807) -Codechange: unify playing of sound when vehicle has been loaded and leaves the station.
rubidium
parents:
7076
diff
changeset
|
390 |
* Play the sound associated with leaving the station |
7230d3e22a5f
(svn r9807) -Codechange: unify playing of sound when vehicle has been loaded and leaves the station.
rubidium
parents:
7076
diff
changeset
|
391 |
*/ |
7230d3e22a5f
(svn r9807) -Codechange: unify playing of sound when vehicle has been loaded and leaves the station.
rubidium
parents:
7076
diff
changeset
|
392 |
virtual void PlayLeaveStationSound() const {} |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
393 |
}; |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
394 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
395 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
396 |
* This class 'wraps' Vehicle; you do not actually instantiate this class. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
397 |
* You create a Vehicle using AllocateVehicle, so it is added to the pool |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
398 |
* and you reinitialize that to a Train using: |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
399 |
* v = new (v) Train(); |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
400 |
* |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
401 |
* As side-effect the vehicle type is set correctly. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
402 |
* |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
403 |
* A special vehicle is one of the following: |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
404 |
* - smoke |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
405 |
* - electric sparks for trains |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
406 |
* - explosions |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
407 |
* - bulldozer (road works) |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
408 |
* - bubbles (industry) |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
409 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
410 |
struct SpecialVehicle : public Vehicle { |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
411 |
/** Initializes the Vehicle to a special vehicle */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
412 |
SpecialVehicle() { this->type = VEH_SPECIAL; } |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
413 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
414 |
/** We want to 'destruct' the right class. */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
415 |
virtual ~SpecialVehicle() {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
416 |
|
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
417 |
const char *GetTypeString() const { return "special vehicle"; } |
7054
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
418 |
void UpdateDeltaXY(Direction direction); |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
419 |
}; |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
420 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
421 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
422 |
* This class 'wraps' Vehicle; you do not actually instantiate this class. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
423 |
* You create a Vehicle using AllocateVehicle, so it is added to the pool |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
424 |
* and you reinitialize that to a Train using: |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
425 |
* v = new (v) Train(); |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
426 |
* |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
427 |
* As side-effect the vehicle type is set correctly. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
428 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
429 |
struct DisasterVehicle : public Vehicle { |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
430 |
/** Initializes the Vehicle to a disaster vehicle */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
431 |
DisasterVehicle() { this->type = VEH_DISASTER; } |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
432 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
433 |
/** We want to 'destruct' the right class. */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
434 |
virtual ~DisasterVehicle() {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
435 |
|
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
436 |
const char *GetTypeString() const { return "disaster vehicle"; } |
7054
edbb4d7765f2
(svn r9760) -Codechange: remove the need for saving some vehicle variables.
rubidium
parents:
7049
diff
changeset
|
437 |
void UpdateDeltaXY(Direction direction); |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
438 |
}; |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
439 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
440 |
/** |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
441 |
* This class 'wraps' Vehicle; you do not actually instantiate this class. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
442 |
* You create a Vehicle using AllocateVehicle, so it is added to the pool |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
443 |
* and you reinitialize that to a Train using: |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
444 |
* v = new (v) Train(); |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
445 |
* |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
446 |
* As side-effect the vehicle type is set correctly. |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
447 |
*/ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
448 |
struct InvalidVehicle : public Vehicle { |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
449 |
/** Initializes the Vehicle to a invalid vehicle */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
450 |
InvalidVehicle() { this->type = VEH_INVALID; } |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
451 |
|
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
452 |
/** We want to 'destruct' the right class. */ |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
453 |
virtual ~InvalidVehicle() {} |
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
454 |
|
7059
3d5c57a7e729
(svn r9765) -Codechange: constify some class functions.
rubidium
parents:
7058
diff
changeset
|
455 |
const char *GetTypeString() const { return "invalid vehicle"; } |
0 | 456 |
}; |
457 |
||
1765
f8d29d5462c9
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Darkvater
parents:
1763
diff
changeset
|
458 |
#define is_custom_sprite(x) (x >= 0xFD) |
f8d29d5462c9
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Darkvater
parents:
1763
diff
changeset
|
459 |
#define IS_CUSTOM_FIRSTHEAD_SPRITE(x) (x == 0xFD) |
f8d29d5462c9
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Darkvater
parents:
1763
diff
changeset
|
460 |
#define IS_CUSTOM_SECONDHEAD_SPRITE(x) (x == 0xFE) |
0 | 461 |
|
462 |
typedef void *VehicleFromPosProc(Vehicle *v, void *data); |
|
463 |
||
578
86e352980acd
(svn r998) now vehicles are serviced both when entering and when leaving depots to prevent that vehicles might need service when leaving after a long stay (ln--)
bjarni
parents:
577
diff
changeset
|
464 |
void VehicleServiceInDepot(Vehicle *v); |
6573 | 465 |
Vehicle *AllocateVehicle(); |
2601
7c94a0e394a6
(svn r3138) -Fix: [clone vehicles] fixed assert when it was possible to allocate some vehicles to clone a train, but not for all cars
bjarni
parents:
2599
diff
changeset
|
466 |
bool AllocateVehicles(Vehicle **vl, int num); |
6573 | 467 |
Vehicle *ForceAllocateVehicle(); |
468 |
Vehicle *ForceAllocateSpecialVehicle(); |
|
0 | 469 |
void VehiclePositionChanged(Vehicle *v); |
6573 | 470 |
void AfterLoadVehicles(); |
0 | 471 |
Vehicle *GetLastVehicleInChain(Vehicle *v); |
1475 | 472 |
Vehicle *GetPrevVehicleInChain(const Vehicle *v); |
473 |
Vehicle *GetFirstVehicleInChain(const Vehicle *v); |
|
2630 | 474 |
uint CountVehiclesInChain(const Vehicle* v); |
4574
497540b4a75f
(svn r6424) -Codechange: [autoreplace] removed a loop though all vehicles from each time the window is redrawn
bjarni
parents:
4544
diff
changeset
|
475 |
bool IsEngineCountable(const Vehicle *v); |
0 | 476 |
void DeleteVehicleChain(Vehicle *v); |
477 |
void *VehicleFromPos(TileIndex tile, void *data, VehicleFromPosProc *proc); |
|
6573 | 478 |
void CallVehicleTicks(); |
1605
c4630be67467
(svn r2109) -Fix: use FindVehicleOnTileZ(tile, 0) over FindVehicleBetween(tile, tile, 0)
truelight
parents:
1601
diff
changeset
|
479 |
Vehicle *FindVehicleOnTileZ(TileIndex tile, byte z); |
0 | 480 |
|
6573 | 481 |
void InitializeTrains(); |
482 |
byte VehicleRandomBits(); |
|
483 |
void ResetVehiclePosHash(); |
|
0 | 484 |
|
2704
dc9ae68dfd74
(svn r3248) - Codechange: Change interface of CanRefitTo() to supply the engine type directly instead of getting it from a vehicle. This allows the function to be used before vehicles are involved.
peter1138
parents:
2676
diff
changeset
|
485 |
bool CanRefitTo(EngineID engine_type, CargoID cid_to); |
3973
7624a250577b
(svn r5146) - NewGRF: Support selection of aircraft default cargo type by checking its refit mask. If aircraft can be refitted to passengers, no change happens, else the first refittable type is chosen. Also use refit capacity to determine the default capacity.
peter1138
parents:
3948
diff
changeset
|
486 |
CargoID FindFirstRefittableCargo(EngineID engine_type); |
4544
b2d5ad597e4d
(svn r6376) -Codechange: [vehicle refit] moved all refit cost calculations into GetRefitCost()
bjarni
parents:
4506
diff
changeset
|
487 |
int32 GetRefitCost(EngineID engine_type); |
0 | 488 |
|
489 |
void ViewportAddVehicles(DrawPixelInfo *dpi); |
|
490 |
||
491 |
/* train_cmd.h */ |
|
3157
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
492 |
int GetTrainImage(const Vehicle* v, Direction direction); |
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
493 |
int GetAircraftImage(const Vehicle* v, Direction direction); |
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
494 |
int GetRoadVehImage(const Vehicle* v, Direction direction); |
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
495 |
int GetShipImage(const Vehicle* v, Direction direction); |
6117
b50b5ebc1c98
(svn r8448) -Codechange/Fix (r2993): Also update the helicopter's rotor when loading the game. This can solve crashes when a game is loaded with missing GRF's
Darkvater
parents:
6105
diff
changeset
|
496 |
SpriteID GetRotorImage(const Vehicle *v); |
0 | 497 |
|
1359
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
498 |
Vehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicle type); |
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
499 |
Vehicle *CreateEffectVehicleAbove(int x, int y, int z, EffectVehicle type); |
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
500 |
Vehicle *CreateEffectVehicleRel(const Vehicle *v, int x, int y, int z, EffectVehicle type); |
0 | 501 |
|
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
502 |
uint32 VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y); |
0 | 503 |
|
3881 | 504 |
StringID VehicleInTheWayErrMsg(const Vehicle* v); |
6191
12d69f54e920
(svn r8593) -Fix (FS#564): bridges do not get destroyed when the bridge head gets flooded and there is a vehicle on the bridge. Original patch by KeeperofTheSoul.
rubidium
parents:
6139
diff
changeset
|
505 |
Vehicle *FindVehicleBetween(TileIndex from, TileIndex to, byte z, bool without_crashed = false); |
0 | 506 |
|
3172
1605cb59ccd9
(svn r3803) Change the second parameter of UpdateSignalsOnSegment() from Direction to DiagDirection as that's what it really operates on
tron
parents:
3157
diff
changeset
|
507 |
bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection direction); |
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
508 |
void SetSignalsOnBothDir(TileIndex tile, byte track); |
0 | 509 |
|
2116 | 510 |
Vehicle *CheckClickOnVehicle(const ViewPort *vp, int x, int y); |
0 | 511 |
|
512 |
void DecreaseVehicleValue(Vehicle *v); |
|
513 |
void CheckVehicleBreakdown(Vehicle *v); |
|
514 |
void AgeVehicle(Vehicle *v); |
|
2574
382fd3f37604
(svn r3111) -Fix: [autoreplace] [ 1341783 ] Assertion failure in vehicle.c line 378
bjarni
parents:
2564
diff
changeset
|
515 |
void VehicleEnteredDepotThisTick(Vehicle *v); |
0 | 516 |
|
517 |
void BeginVehicleMove(Vehicle *v); |
|
518 |
void EndVehicleMove(Vehicle *v); |
|
519 |
||
2561
c78c3d248897
(svn r3098) static, const, uint -> TileIndex, indentation, bracing, unused return values, ... mostly related to the clone vehicle GUI
tron
parents:
2552
diff
changeset
|
520 |
void ShowAircraftViewWindow(const Vehicle* v); |
0 | 521 |
|
1282
e7a73ee62d2f
(svn r1786) -Fix: unitnumber is increased to 16bit, so now you can have up to 5000
truelight
parents:
1279
diff
changeset
|
522 |
UnitID GetFreeUnitNumber(byte type); |
0 | 523 |
|
7076
3bc104d72eef
(svn r9794) -Codechange: refactor the question whether a vehicle can be loaded into LoadUnloadVehicle instead of duplicating it for each vehicle.
rubidium
parents:
7069
diff
changeset
|
524 |
bool LoadUnloadVehicle(Vehicle *v); |
0 | 525 |
|
1905
f43d9e821deb
(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.
hackykid
parents:
1804
diff
changeset
|
526 |
void TrainConsistChanged(Vehicle *v); |
3355
a653b8e47f27
(svn r4150) -Feature: Merged elrails into trunk. Thanks to Tron for lots of code and proofreading, thanks to peter1138 for another lot of code and ideas.
celestar
parents:
3347
diff
changeset
|
527 |
void TrainPowerChanged(Vehicle *v); |
1790
4afb4b4e4278
(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:
1786
diff
changeset
|
528 |
int32 GetTrainRunningCost(const Vehicle *v); |
0 | 529 |
|
1472
043304846688
(svn r1976) Cleanups - mostly indentation and fiddling with loops
tron
parents:
1359
diff
changeset
|
530 |
int CheckTrainStoppedInDepot(const Vehicle *v); |
0 | 531 |
|
593 | 532 |
bool VehicleNeedsService(const Vehicle *v); |
533 |
||
5999
0de08210079a
(svn r8296) -Fix: GenerateVehicleSortList() tried to put a TileIndex into an uint16
bjarni
parents:
5998
diff
changeset
|
534 |
uint GenerateVehicleSortList(const Vehicle*** sort_list, uint16 *length_of_array, byte type, PlayerID owner, uint32 index, uint16 window_type); |
4635
b9fb2f19eb64
(svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents:
4574
diff
changeset
|
535 |
void BuildDepotVehicleList(byte type, TileIndex tile, Vehicle ***engine_list, uint16 *engine_list_length, uint16 *engine_count, Vehicle ***wagon_list, uint16 *wagon_list_length, uint16 *wagon_count); |
4506
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
536 |
int32 SendAllVehiclesToDepot(byte type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id); |
4734
20770a208a04
(svn r6646) -Codechange: [vehicle list window] Cleaned up the drawing code
bjarni
parents:
4725
diff
changeset
|
537 |
bool IsVehicleInDepot(const Vehicle *v); |
4725
f7284b86833f
(svn r6637) -Codechange: merged all (vehicle type)EnterDepot into VehicleEnterDepot()
bjarni
parents:
4681
diff
changeset
|
538 |
void VehicleEnterDepot(Vehicle *v); |
4506
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
539 |
|
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6191
diff
changeset
|
540 |
void InvalidateAutoreplaceWindow(EngineID e); |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6191
diff
changeset
|
541 |
|
6590
9bbf8fdc5e91
(svn r9073) -Codechange: moved autoreplace to a file of it's own (now autoreplace has a cmd and a gui file)
bjarni
parents:
6585
diff
changeset
|
542 |
int32 MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs); |
9bbf8fdc5e91
(svn r9073) -Codechange: moved autoreplace to a file of it's own (now autoreplace has a cmd and a gui file)
bjarni
parents:
6585
diff
changeset
|
543 |
|
4506
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
544 |
/* Flags to add to p2 for goto depot commands */ |
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
545 |
/* Note: bits 8-10 are used for VLW flags */ |
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
546 |
enum { |
6988
76eba6a9cc6f
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6986
diff
changeset
|
547 |
DEPOT_SERVICE = (1 << 0), // The vehicle will leave the depot right after arrival (serivce only) |
4506
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
548 |
DEPOT_MASS_SEND = (1 << 1), // Tells that it's a mass send to depot command (type in VLW flag) |
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
549 |
DEPOT_DONT_CANCEL = (1 << 2), // Don't cancel current goto depot command if any |
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
550 |
DEPOT_LOCATE_HANGAR = (1 << 3), // Find another airport if the target one lacks a hangar |
0d8fcc0a4e49
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
551 |
}; |
4463
3a70624c40eb
(svn r6246) -Feature: added the many times requested "send all vehicle to depot" button
bjarni
parents:
4451
diff
changeset
|
552 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
553 |
struct GetNewVehiclePosResult { |
0 | 554 |
int x,y; |
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
555 |
TileIndex old_tile; |
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
556 |
TileIndex new_tile; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
557 |
}; |
0 | 558 |
|
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
559 |
/** |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
560 |
* Returns the Trackdir on which the vehicle is currently located. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
561 |
* Works for trains and ships. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
562 |
* Currently works only sortof for road vehicles, since they have a fuzzy |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
563 |
* concept of being "on" a trackdir. Dunno really what it returns for a road |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
564 |
* vehicle that is halfway a tile, never really understood that part. For road |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
565 |
* vehicles that are at the beginning or end of the tile, should just return |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
566 |
* the diagonal trackdir on which they are driving. I _think_. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
567 |
* For other vehicles types, or vehicles with no clear trackdir (such as those |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
568 |
* in depots), returns 0xFF. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
569 |
*/ |
1944
012fa5e69118
(svn r2450) * Codechange: Replaced all uses of the arrays in tile.h with calls to the associated wrapper functions.
matthijs
parents:
1922
diff
changeset
|
570 |
Trackdir GetVehicleTrackdir(const Vehicle* v); |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
571 |
|
0 | 572 |
/* returns true if staying in the same tile */ |
6479 | 573 |
GetNewVehiclePosResult GetNewVehiclePos(const Vehicle *v); |
3157
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
574 |
Direction GetDirectionTowards(const Vehicle* v, int x, int y); |
0 | 575 |
|
576 |
#define BEGIN_ENUM_WAGONS(v) do { |
|
577 |
#define END_ENUM_WAGONS(v) } while ( (v=v->next) != NULL); |
|
578 |
||
5216
d581e4db95b6
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents:
5211
diff
changeset
|
579 |
DECLARE_OLD_POOL(Vehicle, Vehicle, 9, 125) |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
580 |
|
6573 | 581 |
static inline VehicleID GetMaxVehicleIndex() |
4354
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
582 |
{ |
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
583 |
/* TODO - This isn't the real content of the function, but |
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
584 |
* with the new pool-system this will be replaced with one that |
5247
c3eece01af11
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
585 |
* _really_ returns the highest index. Now it just returns |
4354
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
586 |
* the next safe value we are sure about everything is below. |
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
587 |
*/ |
5247
c3eece01af11
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
588 |
return GetVehiclePoolSize() - 1; |
c3eece01af11
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
589 |
} |
c3eece01af11
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
590 |
|
6573 | 591 |
static inline uint GetNumVehicles() |
5247
c3eece01af11
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
592 |
{ |
4354
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
593 |
return GetVehiclePoolSize(); |
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
594 |
} |
684ab9249dae
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
595 |
|
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
596 |
/** |
1330
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
597 |
* Check if a Vehicle really exists. |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
598 |
*/ |
1770
b6bda4dc6da2
(svn r2274) - Codechange: some comments, parentheses and EngineID typedef for engine_type
Darkvater
parents:
1765
diff
changeset
|
599 |
static inline bool IsValidVehicle(const Vehicle *v) |
1330
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
600 |
{ |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
601 |
return v->type != VEH_INVALID; |
1330
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
602 |
} |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
603 |
|
4404
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
604 |
void DestroyVehicle(Vehicle *v); |
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
605 |
|
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
606 |
static inline void DeleteVehicle(Vehicle *v) |
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
607 |
{ |
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
608 |
DestroyVehicle(v); |
7048
06b931095b26
(svn r9754) -Codechange: make classes for all vehicle types, so we can make nicer/better maintainable code, i.e. virtual methods instead of switches.
rubidium
parents:
7012
diff
changeset
|
609 |
v = new (v) InvalidVehicle(); |
4404
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
610 |
} |
484c76b14294
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
611 |
|
6026
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
612 |
static inline bool IsPlayerBuildableVehicleType(byte type) |
5997
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
613 |
{ |
6026
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
614 |
switch (type) { |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
615 |
case VEH_TRAIN: |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
616 |
case VEH_ROAD: |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
617 |
case VEH_SHIP: |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6574
diff
changeset
|
618 |
case VEH_AIRCRAFT: |
5997
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
619 |
return true; |
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
620 |
} |
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
621 |
return false; |
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
622 |
} |
11e028b7f507
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5934
diff
changeset
|
623 |
|
6026
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
624 |
static inline bool IsPlayerBuildableVehicleType(const Vehicle *v) |
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
625 |
{ |
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
626 |
return IsPlayerBuildableVehicleType(v->type); |
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
627 |
} |
96b4b02774e5
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5999
diff
changeset
|
628 |
|
4972 | 629 |
#define FOR_ALL_VEHICLES_FROM(v, start) for (v = GetVehicle(start); v != NULL; v = (v->index + 1U < GetVehiclePoolSize()) ? GetVehicle(v->index + 1) : NULL) if (IsValidVehicle(v)) |
4346
3f00094f2670
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents:
4344
diff
changeset
|
630 |
#define FOR_ALL_VEHICLES(v) FOR_ALL_VEHICLES_FROM(v, 0) |
3f00094f2670
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents:
4344
diff
changeset
|
631 |
|
1330
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
632 |
/** |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
633 |
* Check if an index is a vehicle-index (so between 0 and max-vehicles) |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
634 |
* @param index of the vehicle to query |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
635 |
* @return Returns true if the vehicle-id is in range |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
636 |
*/ |
4352
8ddb01bc6075
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
truelight
parents:
4346
diff
changeset
|
637 |
static inline bool IsValidVehicleID(uint index) |
1237
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
638 |
{ |
4352
8ddb01bc6075
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
truelight
parents:
4346
diff
changeset
|
639 |
return index < GetVehiclePoolSize() && IsValidVehicle(GetVehicle(index)); |
1237
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
640 |
} |
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
641 |
|
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
642 |
/* Returns order 'index' of a vehicle or NULL when it doesn't exists */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
643 |
static inline Order *GetVehicleOrder(const Vehicle *v, int index) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
644 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
645 |
Order *order = v->orders; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
646 |
|
1765
f8d29d5462c9
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Darkvater
parents:
1763
diff
changeset
|
647 |
if (index < 0) return NULL; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
648 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
649 |
while (order != NULL && index-- > 0) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
650 |
order = order->next; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
651 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
652 |
return order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
653 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
654 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
655 |
/** |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
656 |
* Returns the last order of a vehicle, or NULL if it doesn't exists |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
657 |
* @param v Vehicle to query |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
658 |
* @return last order of a vehicle, if available |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
659 |
*/ |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
660 |
static inline Order *GetLastVehicleOrder(const Vehicle *v) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
661 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
662 |
Order *order = v->orders; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
663 |
|
1765
f8d29d5462c9
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Darkvater
parents:
1763
diff
changeset
|
664 |
if (order == NULL) return NULL; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
665 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
666 |
while (order->next != NULL) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
667 |
order = order->next; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
668 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
669 |
return order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
670 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
671 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
672 |
/** Get the first vehicle of a shared-list, so we only have to walk forwards |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
673 |
* @param v Vehicle to query |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
674 |
* @return first vehicle of a shared-list |
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
675 |
*/ |
4494
15b8ae6bd860
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
676 |
static inline Vehicle *GetFirstVehicleFromSharedList(const Vehicle *v) |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
677 |
{ |
4494
15b8ae6bd860
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
678 |
Vehicle *u = (Vehicle *)v; |
15b8ae6bd860
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
679 |
while (u->prev_shared != NULL) u = u->prev_shared; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
680 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
681 |
return u; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
682 |
} |
0 | 683 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6590
diff
changeset
|
684 |
/* NOSAVE: Return values from various commands. */ |
2564 | 685 |
VARDEF VehicleID _new_vehicle_id; |
3008
7b519db78ce2
(svn r3588) - Refit: Use only one global to return the refit capacity rather than one per vehicle type.
peter1138
parents:
2916
diff
changeset
|
686 |
VARDEF uint16 _returned_refit_capacity; |
0 | 687 |
|
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5825
diff
changeset
|
688 |
static const VehicleID INVALID_VEHICLE = 0xFFFF; |
0 | 689 |
|
7012
f20d04170833
(svn r9702) -Codechange: Add livery support to newgrf vehicle var 43
peter1138
parents:
6988
diff
changeset
|
690 |
const struct Livery *GetEngineLivery(EngineID engine_type, PlayerID player, EngineID parent_engine_type, const Vehicle *v); |
f20d04170833
(svn r9702) -Codechange: Add livery support to newgrf vehicle var 43
peter1138
parents:
6988
diff
changeset
|
691 |
|
3105
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
692 |
/** |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
693 |
* Get the colour map for an engine. This used for unbuilt engines in the user interface. |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
694 |
* @param engine_type ID of engine |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
695 |
* @param player ID of player |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
696 |
* @return A ready-to-use palette modifier |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
697 |
*/ |
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5902
diff
changeset
|
698 |
SpriteID GetEnginePalette(EngineID engine_type, PlayerID player); |
3040
c3473d1fb81f
(svn r3620) - 2cc: Replace use of macro to determine colour map with a function call for drawing of vehicles.
peter1138
parents:
3022
diff
changeset
|
699 |
|
3105
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
700 |
/** |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
701 |
* Get the colour map for a vehicle. |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
702 |
* @param v Vehicle to get colour map for |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
703 |
* @return A ready-to-use palette modifier |
4a6514d7a8ba
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
704 |
*/ |
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5902
diff
changeset
|
705 |
SpriteID GetVehiclePalette(const Vehicle *v); |
3040
c3473d1fb81f
(svn r3620) - 2cc: Replace use of macro to determine colour map with a function call for drawing of vehicles.
peter1138
parents:
3022
diff
changeset
|
706 |
|
755
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
707 |
/* A lot of code calls for the invalidation of the status bar, which is widget 5. |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
708 |
* Best is to have a virtual value for it when it needs to change again */ |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
709 |
#define STATUS_BAR 5 |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
710 |
|
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
711 |
extern const uint32 _veh_build_proc_table[]; |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
712 |
extern const uint32 _veh_sell_proc_table[]; |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
713 |
extern const uint32 _veh_refit_proc_table[]; |
4494
15b8ae6bd860
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
714 |
extern const uint32 _send_to_depot_proc_table[]; |
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
715 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
716 |
/* Functions to find the right command for certain vehicle type */ |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
717 |
static inline uint32 GetCmdBuildVeh(byte type) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
718 |
{ |
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
719 |
return _veh_build_proc_table[type]; |
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
720 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
721 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
722 |
static inline uint32 GetCmdBuildVeh(const Vehicle *v) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
723 |
{ |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
724 |
return GetCmdBuildVeh(v->type); |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
725 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
726 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
727 |
static inline uint32 GetCmdSellVeh(byte type) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
728 |
{ |
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
729 |
return _veh_sell_proc_table[type]; |
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
730 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
731 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
732 |
static inline uint32 GetCmdSellVeh(const Vehicle *v) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
733 |
{ |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
734 |
return GetCmdSellVeh(v->type); |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
735 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
736 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
737 |
static inline uint32 GetCmdRefitVeh(byte type) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
738 |
{ |
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
739 |
return _veh_refit_proc_table[type]; |
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
740 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
741 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
742 |
static inline uint32 GetCmdRefitVeh(const Vehicle *v) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
743 |
{ |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
744 |
return GetCmdRefitVeh(v->type); |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
745 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
746 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
747 |
static inline uint32 GetCmdSendToDepot(byte type) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
748 |
{ |
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
749 |
return _send_to_depot_proc_table[type]; |
6043
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
750 |
} |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
751 |
|
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
752 |
static inline uint32 GetCmdSendToDepot(const Vehicle *v) |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
753 |
{ |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
754 |
return GetCmdSendToDepot(v->type); |
99c8fb13658b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
6040
diff
changeset
|
755 |
} |
4451
66603f0f732e
(svn r6229) -Feature: Shared order lists now got a "goto depot" button
bjarni
parents:
4434
diff
changeset
|
756 |
|
0 | 757 |
#endif /* VEHICLE_H */ |