author | KUDr |
Fri, 20 Apr 2007 19:43:06 +0000 | |
changeset 6513 | 454347ca3dfb |
parent 6492 | 286a52449b54 |
child 6516 | 0d14650b196b |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
3 |
/** @vehicle.h */ |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
4 |
|
0 | 5 |
#ifndef VEHICLE_H |
6 |
#define VEHICLE_H |
|
7 |
||
5216
8bd14ee39af2
(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
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
9 |
#include "order.h" |
1944
dd9cba5fab2a
(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 |
|
5991
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
12 |
/** The returned bits of VehicleEnterTile. */ |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
13 |
enum VehicleEnterTileStatus { |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
14 |
VETS_ENTERED_STATION = 1, ///< The vehicle entered a station |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
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) |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
16 |
VETS_CANNOT_ENTER = 3, ///< The vehicle cannot enter the tile |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
17 |
|
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
18 |
/** |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
19 |
* Shift the VehicleEnterTileStatus this many bits |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
20 |
* to the right to get the station ID when |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
21 |
* VETS_ENTERED_STATION is set |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
22 |
*/ |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
23 |
VETS_STATION_ID_OFFSET = 8, |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
24 |
|
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
25 |
/** Bit sets of the above specified bits */ |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
26 |
VETSB_CONTINUE = 0, ///< The vehicle can continue normally |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
27 |
VETSB_ENTERED_STATION = 1 << VETS_ENTERED_STATION, ///< The vehicle entered a station |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
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) |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
29 |
VETSB_CANNOT_ENTER = 1 << VETS_CANNOT_ENTER, ///< The vehicle cannot enter the tile |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
30 |
}; |
ec2eebfe86de
(svn r8698) -Codechange: enumify the returns of VehicleEnterTile
rubidium
parents:
5955
diff
changeset
|
31 |
|
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
32 |
/** Road vehicle states */ |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
33 |
enum RoadVehicleStates { |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
34 |
/* |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
35 |
* Lower 4 bits are used for vehicle track direction. (Trackdirs) |
6161
b57d610d5eed
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6153
diff
changeset
|
36 |
* When in a road stop (bit 5 or bit 6 set) these bits give the |
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
37 |
* track direction of the entry to the road stop. |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
38 |
* As the entry direction will always be a diagonal |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
39 |
* direction (X_NE, Y_SE, X_SW or Y_NW) only bits 0 and 3 |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
40 |
* are needed to hold this direction. Bit 1 is then used to show |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
41 |
* that the vehicle is using the second road stop bay. |
6161
b57d610d5eed
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6153
diff
changeset
|
42 |
* Bit 2 is then used for drive-through stops to show the vehicle |
b57d610d5eed
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6153
diff
changeset
|
43 |
* is stopping at this road stop. |
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
44 |
*/ |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
45 |
|
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
46 |
/* Numeric values */ |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
47 |
RVSB_IN_DEPOT = 0xFE, ///< The vehicle is in a depot |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
48 |
RVSB_WORMHOLE = 0xFF, ///< The vehicle is in a tunnel and/or bridge |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
49 |
|
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
50 |
/* Bit numbers */ |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
51 |
RVS_USING_SECOND_BAY = 1, ///< Only used while in a road stop |
6012
065d7234a7a9
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6000
diff
changeset
|
52 |
RVS_IS_STOPPING = 2, ///< Only used for drive-through stops. Vehicle will stop here |
6161
b57d610d5eed
(svn r8911) -Cleanup: fixup comments about the RoadVehicleStates and remove two unused enums.
rubidium
parents:
6153
diff
changeset
|
53 |
RVS_DRIVE_SIDE = 4, ///< Only used when retrieving move data |
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
54 |
RVS_IN_ROAD_STOP = 5, ///< The vehicle is in a road stop |
6012
065d7234a7a9
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6000
diff
changeset
|
55 |
RVS_IN_DT_ROAD_STOP = 6, ///< The vehicle is in a drive-through road stop |
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
56 |
|
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
57 |
/* Bit sets of the above specified bits */ |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
58 |
RVSB_IN_ROAD_STOP = 1 << RVS_IN_ROAD_STOP, ///< The vehicle is in a road stop |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
59 |
RVSB_IN_ROAD_STOP_END = RVSB_IN_ROAD_STOP + TRACKDIR_END, |
6012
065d7234a7a9
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6000
diff
changeset
|
60 |
RVSB_IN_DT_ROAD_STOP = 1 << RVS_IN_DT_ROAD_STOP, ///< The vehicle is in a drive-through road stop |
065d7234a7a9
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6000
diff
changeset
|
61 |
RVSB_IN_DT_ROAD_STOP_END = RVSB_IN_DT_ROAD_STOP + TRACKDIR_END, |
6000
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
62 |
|
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
63 |
RVSB_TRACKDIR_MASK = 0x0F, ///< The mask used to extract track dirs |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
64 |
RVSB_ROAD_STOP_TRACKDIR_MASK = 0x09 ///< Only bits 0 and 3 are used to encode the trackdir for road stops |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
65 |
}; |
181ad2c1ab14
(svn r8715) -Codechange/cleanup: replace magic numbers related to state of road vehicles with enums. Original patch by mart3p.
rubidium
parents:
5991
diff
changeset
|
66 |
|
1763
7f71e6a1d9ed
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
67 |
enum { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
68 |
VEH_TRAIN, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
69 |
VEH_ROAD, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
70 |
VEH_SHIP, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
71 |
VEH_AIRCRAFT, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
72 |
VEH_SPECIAL, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
73 |
VEH_DISASTER, |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
74 |
VEH_INVALID = 0xFF, |
1763
7f71e6a1d9ed
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
75 |
} ; |
1752
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
76 |
|
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
77 |
enum VehStatus { |
4344
7e123fec5b0b
(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, |
7e123fec5b0b
(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, |
7e123fec5b0b
(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, |
7e123fec5b0b
(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, |
7e123fec5b0b
(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, |
7e123fec5b0b
(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
d65cd19f7117
(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
7e123fec5b0b
(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
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
86 |
}; |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
87 |
|
6175
313c2b5e7ae2
(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:
6161
diff
changeset
|
88 |
enum VehicleFlags { |
313c2b5e7ae2
(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:
6161
diff
changeset
|
89 |
VF_LOADING_FINISHED, |
313c2b5e7ae2
(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:
6161
diff
changeset
|
90 |
VF_CARGO_UNLOADING, |
6176
153f0f24dc1b
(svn r8946) -Feature: [NewGRF] Add support for vehicle variables 0xFE and 0xFF bit 10,
maedhros
parents:
6175
diff
changeset
|
91 |
VF_BUILT_AS_PROTOTYPE, |
5211
fb4dc0ca975d
(svn r7326) -Feature: Add support for gradual (un)loading of vehicles (Maedhros)
peter1138
parents:
5162
diff
changeset
|
92 |
}; |
fb4dc0ca975d
(svn r7326) -Feature: Add support for gradual (un)loading of vehicles (Maedhros)
peter1138
parents:
5162
diff
changeset
|
93 |
|
1752
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
94 |
/* Effect vehicle types */ |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
95 |
enum EffectVehicle { |
1752
d65cd19f7117
(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, |
d65cd19f7117
(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, |
d65cd19f7117
(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, |
d65cd19f7117
(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, |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
100 |
EV_SMOKE = 4, |
d65cd19f7117
(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, |
d65cd19f7117
(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, |
d65cd19f7117
(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, |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
104 |
EV_BULLDOZER = 8, |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
105 |
EV_BUBBLE = 9 |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
106 |
}; |
1752
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
107 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
108 |
struct VehicleRail { |
4434
a08cb4b5c179
(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 |
uint16 days_since_order_progr; |
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
112 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
113 |
/* cached values, recalculated on load and each time a vehicle is added to/removed from the consist. */ |
1905
c53f8d71f9b6
(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 |
uint16 cached_max_speed; // max speed of the consist. (minimum of the max speed of all vehicles in the consist) |
c53f8d71f9b6
(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.
hackykid
parents:
1804
diff
changeset
|
115 |
uint32 cached_power; // total power of the consist. |
1922
bda6f85eefaa
(svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents:
1908
diff
changeset
|
116 |
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
31647a23da0b
(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 |
uint16 cached_total_length; ///< Length of the whole train, valid only for first engine. |
31647a23da0b
(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
|
118 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
119 |
/* cached values, recalculated when the cargo on a train changes (in addition to the conditions above) */ |
5162
f8da34a35a59
(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_weight; // total weight of the consist. |
f8da34a35a59
(svn r7268) -Codechange: change rail vehicle cached weight from 16 to 32 bit values to avoid possible overflows.
peter1138
parents:
5116
diff
changeset
|
121 |
uint32 cached_veh_weight; // weight of the vehicle. |
5400
bba42ad3223b
(svn r7592) -Feature: Add support for tractive effort to 'realistic' acceleration.
peter1138
parents:
5385
diff
changeset
|
122 |
uint32 cached_max_te; // max tractive effort of consist |
2595
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
123 |
/** |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
124 |
* Position/type of visual effect. |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
125 |
* bit 0 - 3 = position of effect relative to vehicle. (0 = front, 8 = centre, 15 = rear) |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
126 |
* bit 4 - 5 = type of effect. (0 = default for engine class, 1 = steam, 2 = diesel, 3 = electric) |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
127 |
* bit 6 = disable visual effect. |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
128 |
* bit 7 = disable powered wagons. |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
129 |
*/ |
1c5db200577c
(svn r3132) -NewGRF: support positioning of rail vehicle visual effects.
peter1138
parents:
2587
diff
changeset
|
130 |
byte cached_vis_effect; |
0 | 131 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
132 |
/* NOSAVE: for wagon override - id of the first engine in train |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
133 |
* 0xffff == not in train */ |
1796
614d996f6be7
(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
|
134 |
EngineID first_engine; |
0 | 135 |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5574
diff
changeset
|
136 |
TrackBitsByte track; |
0 | 137 |
byte force_proceed; |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5574
diff
changeset
|
138 |
RailTypeByte railtype; |
3355
e414a0b104a6
(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
|
139 |
RailTypeMask compatible_railtypes; |
0 | 140 |
|
141 |
byte flags; |
|
2008
cdb444f6d43c
(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
|
142 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
143 |
/* Link between the two ends of a multiheaded engine */ |
2676
59b65b4fb480
(svn r3218) -Feature: Multiheaded train engines will now stay in the same train
bjarni
parents:
2666
diff
changeset
|
144 |
Vehicle *other_multiheaded_part; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
145 |
}; |
0 | 146 |
|
147 |
enum { |
|
4344
7e123fec5b0b
(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
|
148 |
VRF_REVERSING = 0, |
0 | 149 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
150 |
/* used to calculate if train is going up or down */ |
4344
7e123fec5b0b
(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
|
151 |
VRF_GOINGUP = 1, |
7e123fec5b0b
(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
|
152 |
VRF_GOINGDOWN = 2, |
1908
2fa391fed79a
(svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents:
1905
diff
changeset
|
153 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
154 |
/* used to store if a wagon is powered or not */ |
4344
7e123fec5b0b
(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
|
155 |
VRF_POWEREDWAGON = 3, |
3256
3ada27c81b7f
(svn r3944) -Feature: it's now possible to turn a single unit in a train
bjarni
parents:
3173
diff
changeset
|
156 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
157 |
/* used to reverse the visible direction of the vehicle */ |
3256
3ada27c81b7f
(svn r3944) -Feature: it's now possible to turn a single unit in a train
bjarni
parents:
3173
diff
changeset
|
158 |
VRF_REVERSE_DIRECTION = 4, |
4870
2d8c7ffbbac9
(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
|
159 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
160 |
/* used to mark train as lost because PF can't find the route */ |
4870
2d8c7ffbbac9
(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 |
VRF_NO_PATH_TO_DESTINATION = 5, |
5116
3c0c3da214ca
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
4972
diff
changeset
|
162 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
163 |
/* used to mark that electric train engine is allowed to run on normal rail */ |
5116
3c0c3da214ca
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
4972
diff
changeset
|
164 |
VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL = 6, |
0 | 165 |
}; |
166 |
||
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
167 |
struct VehicleAir { |
0 | 168 |
uint16 crashed_counter; |
6490
fe4443fba5e3
(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:
6423
diff
changeset
|
169 |
uint16 cached_max_speed; |
0 | 170 |
byte pos; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
3977
diff
changeset
|
171 |
byte previous_pos; |
3347
0ddacd451b81
(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
|
172 |
StationID targetairport; |
0 | 173 |
byte state; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
174 |
}; |
0 | 175 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
176 |
struct VehicleRoad { |
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
177 |
byte state; ///< @see RoadVehicleStates |
0 | 178 |
byte frame; |
3009
c75f1a8d5ff9
(svn r3589) - Rename u.road.unk2 to u.road.blocked_ctr
peter1138
parents:
3008
diff
changeset
|
179 |
uint16 blocked_ctr; |
0 | 180 |
byte overtaking; |
181 |
byte overtaking_ctr; |
|
182 |
uint16 crashed_ctr; |
|
183 |
byte reverse_ctr; |
|
1217
59c024cfaf54
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
184 |
struct RoadStop *slot; |
59c024cfaf54
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
185 |
byte slot_age; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
186 |
}; |
0 | 187 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
188 |
struct VehicleSpecial { |
0 | 189 |
uint16 unk0; |
190 |
byte unk2; |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
191 |
}; |
0 | 192 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
193 |
struct VehicleDisaster { |
0 | 194 |
uint16 image_override; |
195 |
uint16 unk2; |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
196 |
}; |
0 | 197 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
198 |
struct VehicleShip { |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5574
diff
changeset
|
199 |
TrackBitsByte state; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
200 |
}; |
0 | 201 |
|
202 |
||
203 |
struct Vehicle { |
|
4344
7e123fec5b0b
(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
|
204 |
byte type; // type, ie roadven,train,ship,aircraft,special |
5854
9eee280920f0
(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:
5792
diff
changeset
|
205 |
byte subtype; // subtype (Filled with values from EffectVehicles/TrainSubTypes/AircraftSubTypes) |
0 | 206 |
|
4344
7e123fec5b0b
(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
|
207 |
VehicleID index; // NOSAVE: Index in vehicle array |
0 | 208 |
|
4344
7e123fec5b0b
(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 |
Vehicle *next; // next |
7e123fec5b0b
(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
|
210 |
Vehicle *first; // NOSAVE: pointer to the first vehicle in the chain |
7e123fec5b0b
(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 *depot_list; //NOSAVE: linked list to tell what vehicles entered a depot during the last tick. Used by autoreplace |
0 | 212 |
|
4344
7e123fec5b0b
(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 |
StringID string_id; // Displayed string |
0 | 214 |
|
4344
7e123fec5b0b
(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 |
UnitID unitnumber; // unit number, for display purposes only |
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
216 |
PlayerByte owner; // which player owns the vehicle? |
4344
7e123fec5b0b
(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 |
|
7e123fec5b0b
(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
|
218 |
TileIndex tile; // Current tile index |
7e123fec5b0b
(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 |
TileIndex dest_tile; // Heading for this tile |
7e123fec5b0b
(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 |
|
7e123fec5b0b
(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 |
int32 x_pos; // coordinates |
1174
6a5e747f3ba6
(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
|
222 |
int32 y_pos; |
0 | 223 |
byte z_pos; |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5574
diff
changeset
|
224 |
DirectionByte direction; // facing |
0 | 225 |
|
4344
7e123fec5b0b
(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
|
226 |
byte spritenum; // currently displayed sprite index |
7e123fec5b0b
(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
|
227 |
// 0xfd == custom sprite, 0xfe == custom second head sprite |
7e123fec5b0b
(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 |
// 0xff == reserved for another custom sprite |
7e123fec5b0b
(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 |
uint16 cur_image; // sprite number for this vehicle |
7e123fec5b0b
(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 |
byte sprite_width; // width of vehicle sprite |
7e123fec5b0b
(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 |
byte sprite_height; // height of vehicle sprite |
7e123fec5b0b
(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 z_height; // z-height of vehicle sprite |
7e123fec5b0b
(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 |
int8 x_offs; // x offset for vehicle sprite |
7e123fec5b0b
(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 |
int8 y_offs; // y offset for vehicle sprite |
1770
18491bba9211
(svn r2274) - Codechange: some comments, parentheses and EngineID typedef for engine_type
Darkvater
parents:
1765
diff
changeset
|
235 |
EngineID engine_type; |
0 | 236 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
237 |
/* for randomized variational spritegroups |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
238 |
* bitmask used to resolve them; parts of it get reseeded when triggers |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
239 |
* of corresponding spritegroups get matched */ |
445
beafc0fb8f12
(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
|
240 |
byte random_bits; |
4344
7e123fec5b0b
(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
|
241 |
byte waiting_triggers; // triggers to be yet matched |
445
beafc0fb8f12
(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 |
|
4344
7e123fec5b0b
(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 |
uint16 max_speed; // maximum speed |
7e123fec5b0b
(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
|
244 |
uint16 cur_speed; // current speed |
7e123fec5b0b
(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 |
byte subspeed; // fractional speed |
7e123fec5b0b
(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 |
byte acceleration; // used by train & aircraft |
0 | 247 |
byte progress; |
4656
9c1d8c4d3e60
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
peter1138
parents:
4635
diff
changeset
|
248 |
uint32 motion_counter; |
0 | 249 |
|
4344
7e123fec5b0b
(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
|
250 |
byte vehstatus; // Status |
3347
0ddacd451b81
(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
|
251 |
StationID last_station_visited; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
252 |
|
4344
7e123fec5b0b
(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
|
253 |
CargoID cargo_type; // type of cargo this vehicle is carrying |
7e123fec5b0b
(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
|
254 |
byte cargo_days; // how many days have the pieces been in transit |
7e123fec5b0b
(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 |
StationID cargo_source; // source of cargo |
5683
b027e5d5b4cd
(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:
5668
diff
changeset
|
256 |
TileIndex cargo_source_xy; //< stores the Tile where the source station is located, in case it is removed |
4344
7e123fec5b0b
(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 |
uint16 cargo_cap; // total capacity |
7e123fec5b0b
(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
|
258 |
uint16 cargo_count; // how many pieces are used |
3870
d9ebc4ea750a
(svn r4910) - NewGRF: add and initialize cargo subtype for vehicle visual variations
peter1138
parents:
3580
diff
changeset
|
259 |
byte cargo_subtype; ///< Used for livery refits (NewGRF variations) |
0 | 260 |
|
4344
7e123fec5b0b
(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
|
261 |
byte day_counter; // increased by one for each day |
7e123fec5b0b
(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
|
262 |
byte tick_counter; // increased by one for each tick |
0 | 263 |
|
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
264 |
/* Begin Order-stuff */ |
3173
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
265 |
Order current_order; ///< The current order (+ status, like: loading) |
4391
40c1c7dd05f3
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4384
diff
changeset
|
266 |
VehicleOrderID cur_order_index; ///< The index to the current order |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
267 |
|
3173
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
268 |
Order *orders; ///< Pointer to the first order for this vehicle |
4391
40c1c7dd05f3
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4384
diff
changeset
|
269 |
VehicleOrderID num_orders; ///< How many orders there are in the list |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
270 |
|
3173
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
271 |
Vehicle *next_shared; ///< If not NULL, this points to the next vehicle that shared the order |
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3172
diff
changeset
|
272 |
Vehicle *prev_shared; ///< If not NULL, this points to the prev vehicle that shared the order |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
273 |
/* End Order-stuff */ |
0 | 274 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
275 |
/* Boundaries for the current position in the world and a next hash link. |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
276 |
* NOSAVE: All of those can be updated with VehiclePositionChanged() */ |
849
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
277 |
int32 left_coord; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
278 |
int32 top_coord; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
279 |
int32 right_coord; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
280 |
int32 bottom_coord; |
5574
2cb543714009
(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:
5475
diff
changeset
|
281 |
Vehicle *next_hash; |
0 | 282 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
283 |
/* Related to age and service time */ |
4326
2e2c9d21ed96
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
284 |
Date age; // Age in days |
2e2c9d21ed96
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
285 |
Date max_age; // Maximum age |
4289
8981ce44336d
(svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents:
4176
diff
changeset
|
286 |
Date date_of_last_service; |
8981ce44336d
(svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents:
4176
diff
changeset
|
287 |
Date service_interval; |
0 | 288 |
uint16 reliability; |
289 |
uint16 reliability_spd_dec; |
|
290 |
byte breakdown_ctr; |
|
291 |
byte breakdown_delay; |
|
292 |
byte breakdowns_since_last_service; |
|
293 |
byte breakdown_chance; |
|
4326
2e2c9d21ed96
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
rubidium
parents:
4289
diff
changeset
|
294 |
Year build_year; |
0 | 295 |
|
4344
7e123fec5b0b
(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
|
296 |
bool leave_depot_instantly; // NOSAVE: stores if the vehicle needs to leave the depot it just entered. Used by autoreplace |
2617
03120a0b1e39
(svn r3155) -Feature: [autoreplace] autoreplace can now remove cars from too long trains
bjarni
parents:
2602
diff
changeset
|
297 |
|
0 | 298 |
uint16 load_unload_time_rem; |
5888
6fb161a15a3c
(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:
5866
diff
changeset
|
299 |
uint16 cargo_paid_for; // How much of the cargo currently on board has been paid for. |
6175
313c2b5e7ae2
(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:
6161
diff
changeset
|
300 |
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
|
301 |
|
0 | 302 |
int32 profit_this_year; |
303 |
int32 profit_last_year; |
|
6198 | 304 |
int32 cargo_feeder_share; ///< value of feeder pickup to be paid for on delivery of cargo |
305 |
TileIndex cargo_loaded_at_xy; ///< tile index where feeder cargo was loaded |
|
0 | 306 |
uint32 value; |
307 |
||
308 |
union { |
|
309 |
VehicleRail rail; |
|
310 |
VehicleAir air; |
|
311 |
VehicleRoad road; |
|
312 |
VehicleSpecial special; |
|
313 |
VehicleDisaster disaster; |
|
314 |
VehicleShip ship; |
|
315 |
} u; |
|
5651
79496e6d8a56
(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:
5587
diff
changeset
|
316 |
|
79496e6d8a56
(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:
5587
diff
changeset
|
317 |
void BeginLoading(); |
79496e6d8a56
(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:
5587
diff
changeset
|
318 |
void LeaveStation(); |
0 | 319 |
}; |
320 |
||
1765
155dfdbbbc8d
(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
|
321 |
#define is_custom_sprite(x) (x >= 0xFD) |
155dfdbbbc8d
(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
|
322 |
#define IS_CUSTOM_FIRSTHEAD_SPRITE(x) (x == 0xFD) |
155dfdbbbc8d
(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
|
323 |
#define IS_CUSTOM_SECONDHEAD_SPRITE(x) (x == 0xFE) |
0 | 324 |
|
325 |
typedef void *VehicleFromPosProc(Vehicle *v, void *data); |
|
326 |
||
578
1e66514eb621
(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
|
327 |
void VehicleServiceInDepot(Vehicle *v); |
6247 | 328 |
Vehicle *AllocateVehicle(); |
2601
d1a193af01e6
(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
|
329 |
bool AllocateVehicles(Vehicle **vl, int num); |
6247 | 330 |
Vehicle *ForceAllocateVehicle(); |
331 |
Vehicle *ForceAllocateSpecialVehicle(); |
|
0 | 332 |
void VehiclePositionChanged(Vehicle *v); |
6247 | 333 |
void AfterLoadVehicles(); |
0 | 334 |
Vehicle *GetLastVehicleInChain(Vehicle *v); |
1475 | 335 |
Vehicle *GetPrevVehicleInChain(const Vehicle *v); |
336 |
Vehicle *GetFirstVehicleInChain(const Vehicle *v); |
|
2630 | 337 |
uint CountVehiclesInChain(const Vehicle* v); |
4574
61a17f80cfb9
(svn r6424) -Codechange: [autoreplace] removed a loop though all vehicles from each time the window is redrawn
bjarni
parents:
4544
diff
changeset
|
338 |
bool IsEngineCountable(const Vehicle *v); |
0 | 339 |
void DeleteVehicleChain(Vehicle *v); |
340 |
void *VehicleFromPos(TileIndex tile, void *data, VehicleFromPosProc *proc); |
|
6247 | 341 |
void CallVehicleTicks(); |
1605
279dd2265cae
(svn r2109) -Fix: use FindVehicleOnTileZ(tile, 0) over FindVehicleBetween(tile, tile, 0)
truelight
parents:
1601
diff
changeset
|
342 |
Vehicle *FindVehicleOnTileZ(TileIndex tile, byte z); |
0 | 343 |
|
6247 | 344 |
void InitializeTrains(); |
345 |
byte VehicleRandomBits(); |
|
346 |
void ResetVehiclePosHash(); |
|
0 | 347 |
|
348 |
bool CanFillVehicle(Vehicle *v); |
|
2704
bdf6ae0cb27c
(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
|
349 |
bool CanRefitTo(EngineID engine_type, CargoID cid_to); |
3973
9d3cd1ed6ac0
(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
|
350 |
CargoID FindFirstRefittableCargo(EngineID engine_type); |
4544
69f1248a2d97
(svn r6376) -Codechange: [vehicle refit] moved all refit cost calculations into GetRefitCost()
bjarni
parents:
4506
diff
changeset
|
351 |
int32 GetRefitCost(EngineID engine_type); |
0 | 352 |
|
353 |
void ViewportAddVehicles(DrawPixelInfo *dpi); |
|
354 |
||
355 |
/* train_cmd.h */ |
|
3157
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
356 |
int GetTrainImage(const Vehicle* v, Direction direction); |
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
357 |
int GetAircraftImage(const Vehicle* v, Direction direction); |
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
358 |
int GetRoadVehImage(const Vehicle* v, Direction direction); |
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
359 |
int GetShipImage(const Vehicle* v, Direction direction); |
5866
60ee9fff5c99
(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:
5854
diff
changeset
|
360 |
SpriteID GetRotorImage(const Vehicle *v); |
0 | 361 |
|
1359
52782e5cf7c9
(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
|
362 |
Vehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicle type); |
52782e5cf7c9
(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
|
363 |
Vehicle *CreateEffectVehicleAbove(int x, int y, int z, EffectVehicle type); |
52782e5cf7c9
(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
|
364 |
Vehicle *CreateEffectVehicleRel(const Vehicle *v, int x, int y, int z, EffectVehicle type); |
0 | 365 |
|
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
366 |
uint32 VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y); |
0 | 367 |
|
3881 | 368 |
StringID VehicleInTheWayErrMsg(const Vehicle* v); |
5940
3bb99a7ad58f
(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:
5888
diff
changeset
|
369 |
Vehicle *FindVehicleBetween(TileIndex from, TileIndex to, byte z, bool without_crashed = false); |
0 | 370 |
|
3172
ade284ef48ed
(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
|
371 |
bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection direction); |
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
372 |
void SetSignalsOnBothDir(TileIndex tile, byte track); |
0 | 373 |
|
2116 | 374 |
Vehicle *CheckClickOnVehicle(const ViewPort *vp, int x, int y); |
0 | 375 |
|
376 |
void DecreaseVehicleValue(Vehicle *v); |
|
377 |
void CheckVehicleBreakdown(Vehicle *v); |
|
378 |
void AgeVehicle(Vehicle *v); |
|
2574
70a4e3cb85bf
(svn r3111) -Fix: [autoreplace] [ 1341783 ] Assertion failure in vehicle.c line 378
bjarni
parents:
2564
diff
changeset
|
379 |
void VehicleEnteredDepotThisTick(Vehicle *v); |
0 | 380 |
|
381 |
void BeginVehicleMove(Vehicle *v); |
|
382 |
void EndVehicleMove(Vehicle *v); |
|
383 |
||
2561
233dafd7cf6c
(svn r3098) static, const, uint -> TileIndex, indentation, bracing, unused return values, ... mostly related to the clone vehicle GUI
tron
parents:
2552
diff
changeset
|
384 |
void ShowAircraftViewWindow(const Vehicle* v); |
0 | 385 |
|
1282
ea2ae881814c
(svn r1786) -Fix: unitnumber is increased to 16bit, so now you can have up to 5000
truelight
parents:
1279
diff
changeset
|
386 |
UnitID GetFreeUnitNumber(byte type); |
0 | 387 |
|
5211
fb4dc0ca975d
(svn r7326) -Feature: Add support for gradual (un)loading of vehicles (Maedhros)
peter1138
parents:
5162
diff
changeset
|
388 |
int LoadUnloadVehicle(Vehicle *v, bool just_arrived); |
0 | 389 |
|
1905
c53f8d71f9b6
(svn r2411) - Codechange: Have trains cache stuff like consist power/weight/max speed instead of recalculating it each time.
hackykid
parents:
1804
diff
changeset
|
390 |
void TrainConsistChanged(Vehicle *v); |
3355
e414a0b104a6
(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
|
391 |
void TrainPowerChanged(Vehicle *v); |
1790
47963a0cfca3
(svn r2294) - CodeChange: check the service interval settings when changing of all vehicle-types. To simplify things introduce GetServiceIntervalClamped() that returns the same or clamped value of the new service interval. There were some inconsistencies in the gui files so I had to change those, and const correctness kicked in, so it's a bit messy at certain points.
Darkvater
parents:
1786
diff
changeset
|
392 |
int32 GetTrainRunningCost(const Vehicle *v); |
0 | 393 |
|
1472
a2abe3b9d7a7
(svn r1976) Cleanups - mostly indentation and fiddling with loops
tron
parents:
1359
diff
changeset
|
394 |
int CheckTrainStoppedInDepot(const Vehicle *v); |
0 | 395 |
|
593 | 396 |
bool VehicleNeedsService(const Vehicle *v); |
397 |
||
5748
cf2f07fa20ca
(svn r8296) -Fix: GenerateVehicleSortList() tried to put a TileIndex into an uint16
bjarni
parents:
5747
diff
changeset
|
398 |
uint GenerateVehicleSortList(const Vehicle*** sort_list, uint16 *length_of_array, byte type, PlayerID owner, uint32 index, uint16 window_type); |
4635
1b35cdc018ee
(svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents:
4574
diff
changeset
|
399 |
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
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
400 |
int32 SendAllVehiclesToDepot(byte type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id); |
4734
24b34218c5ce
(svn r6646) -Codechange: [vehicle list window] Cleaned up the drawing code
bjarni
parents:
4725
diff
changeset
|
401 |
bool IsVehicleInDepot(const Vehicle *v); |
4725
40cccaaa042c
(svn r6637) -Codechange: merged all (vehicle type)EnterDepot into VehicleEnterDepot()
bjarni
parents:
4681
diff
changeset
|
402 |
void VehicleEnterDepot(Vehicle *v); |
4506
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
403 |
|
5944
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5940
diff
changeset
|
404 |
void InvalidateAutoreplaceWindow(EngineID e); |
6d059cc8662b
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
5940
diff
changeset
|
405 |
|
6264
c2138d65160b
(svn r9073) -Codechange: moved autoreplace to a file of it's own (now autoreplace has a cmd and a gui file)
bjarni
parents:
6259
diff
changeset
|
406 |
int32 MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs); |
c2138d65160b
(svn r9073) -Codechange: moved autoreplace to a file of it's own (now autoreplace has a cmd and a gui file)
bjarni
parents:
6259
diff
changeset
|
407 |
|
4506
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
408 |
/* Flags to add to p2 for goto depot commands */ |
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
409 |
/* Note: bits 8-10 are used for VLW flags */ |
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
410 |
enum { |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6490
diff
changeset
|
411 |
DEPOT_SERVICE = (1 << 0), // The vehicle will leave the depot right after arrival (serivce only) |
4506
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
412 |
DEPOT_MASS_SEND = (1 << 1), // Tells that it's a mass send to depot command (type in VLW flag) |
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
413 |
DEPOT_DONT_CANCEL = (1 << 2), // Don't cancel current goto depot command if any |
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
414 |
DEPOT_LOCATE_HANGAR = (1 << 3), // Find another airport if the target one lacks a hangar |
e6a56518135c
(svn r6291) -Feature: Vehicle lists from the station window now also got the goto depot button
bjarni
parents:
4497
diff
changeset
|
415 |
}; |
4463
4d67d3a36fc5
(svn r6246) -Feature: added the many times requested "send all vehicle to depot" button
bjarni
parents:
4451
diff
changeset
|
416 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
417 |
struct GetNewVehiclePosResult { |
0 | 418 |
int x,y; |
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
419 |
TileIndex old_tile; |
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1944
diff
changeset
|
420 |
TileIndex new_tile; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
421 |
}; |
0 | 422 |
|
1752
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
423 |
/** |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
424 |
* Returns the Trackdir on which the vehicle is currently located. |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
425 |
* Works for trains and ships. |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
426 |
* Currently works only sortof for road vehicles, since they have a fuzzy |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
427 |
* concept of being "on" a trackdir. Dunno really what it returns for a road |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
428 |
* vehicle that is halfway a tile, never really understood that part. For road |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
429 |
* vehicles that are at the beginning or end of the tile, should just return |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
430 |
* the diagonal trackdir on which they are driving. I _think_. |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
431 |
* For other vehicles types, or vehicles with no clear trackdir (such as those |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
432 |
* in depots), returns 0xFF. |
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
433 |
*/ |
1944
dd9cba5fab2a
(svn r2450) * Codechange: Replaced all uses of the arrays in tile.h with calls to the associated wrapper functions.
matthijs
parents:
1922
diff
changeset
|
434 |
Trackdir GetVehicleTrackdir(const Vehicle* v); |
1752
d65cd19f7117
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
435 |
|
0 | 436 |
/* returns true if staying in the same tile */ |
6153 | 437 |
GetNewVehiclePosResult GetNewVehiclePos(const Vehicle *v); |
3157
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
3153
diff
changeset
|
438 |
Direction GetDirectionTowards(const Vehicle* v, int x, int y); |
0 | 439 |
|
440 |
#define BEGIN_ENUM_WAGONS(v) do { |
|
441 |
#define END_ENUM_WAGONS(v) } while ( (v=v->next) != NULL); |
|
442 |
||
5216
8bd14ee39af2
(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
|
443 |
DECLARE_OLD_POOL(Vehicle, Vehicle, 9, 125) |
1279
bc761aad52b3
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
444 |
|
6247 | 445 |
static inline VehicleID GetMaxVehicleIndex() |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
446 |
{ |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
447 |
/* TODO - This isn't the real content of the function, but |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
448 |
* with the new pool-system this will be replaced with one that |
5247
1f982de55b88
(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
|
449 |
* _really_ returns the highest index. Now it just returns |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
450 |
* the next safe value we are sure about everything is below. |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
451 |
*/ |
5247
1f982de55b88
(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
|
452 |
return GetVehiclePoolSize() - 1; |
1f982de55b88
(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
|
453 |
} |
1f982de55b88
(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
|
454 |
|
6247 | 455 |
static inline uint GetNumVehicles() |
5247
1f982de55b88
(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
|
456 |
{ |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
457 |
return GetVehiclePoolSize(); |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
458 |
} |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
459 |
|
1279
bc761aad52b3
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
460 |
/** |
1330
5d76a0522a11
(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
|
461 |
* Check if a Vehicle really exists. |
5d76a0522a11
(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
|
462 |
*/ |
1770
18491bba9211
(svn r2274) - Codechange: some comments, parentheses and EngineID typedef for engine_type
Darkvater
parents:
1765
diff
changeset
|
463 |
static inline bool IsValidVehicle(const Vehicle *v) |
1330
5d76a0522a11
(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
|
464 |
{ |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
465 |
return v->type != VEH_INVALID; |
1330
5d76a0522a11
(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
|
466 |
} |
5d76a0522a11
(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
|
467 |
|
4404
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
468 |
void DestroyVehicle(Vehicle *v); |
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
469 |
|
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
470 |
static inline void DeleteVehicle(Vehicle *v) |
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
471 |
{ |
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
472 |
DestroyVehicle(v); |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
473 |
v->type = VEH_INVALID; |
4404
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
474 |
} |
b58b0af53da3
(svn r6157) -Codechange: DeleteVehicle removes a vehicle from the pool
truelight
parents:
4391
diff
changeset
|
475 |
|
5775
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
476 |
static inline bool IsPlayerBuildableVehicleType(byte type) |
5746
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
477 |
{ |
5775
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
478 |
switch (type) { |
6259
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
479 |
case VEH_TRAIN: |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
480 |
case VEH_ROAD: |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
481 |
case VEH_SHIP: |
471b91a4b1d8
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6248
diff
changeset
|
482 |
case VEH_AIRCRAFT: |
5746
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
483 |
return true; |
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
484 |
} |
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
485 |
return false; |
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
486 |
} |
ab94eb9bdde6
(svn r8294) -Fix: deleting a vehicle with shared orders, but no orders would fail to reset prev_shared and next_shared
bjarni
parents:
5683
diff
changeset
|
487 |
|
5775
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
488 |
static inline bool IsPlayerBuildableVehicleType(const Vehicle *v) |
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
489 |
{ |
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
490 |
return IsPlayerBuildableVehicleType(v->type); |
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
491 |
} |
12aade4ec326
(svn r8327) -Codechange: though overloading, IsPlayerBuildableVehicleType() now works with the type given as a byte as well as a vehicle pointer
bjarni
parents:
5748
diff
changeset
|
492 |
|
4972 | 493 |
#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
66105d4f6e83
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents:
4344
diff
changeset
|
494 |
#define FOR_ALL_VEHICLES(v) FOR_ALL_VEHICLES_FROM(v, 0) |
66105d4f6e83
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents:
4344
diff
changeset
|
495 |
|
1330
5d76a0522a11
(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
|
496 |
/** |
1279
bc761aad52b3
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
497 |
* Check if an index is a vehicle-index (so between 0 and max-vehicles) |
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
498 |
* @param index of the vehicle to query |
1279
bc761aad52b3
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
499 |
* @return Returns true if the vehicle-id is in range |
bc761aad52b3
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
500 |
*/ |
4352
6703cd8d39e0
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
truelight
parents:
4346
diff
changeset
|
501 |
static inline bool IsValidVehicleID(uint index) |
1237
1c7a3f9c94b9
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
502 |
{ |
4352
6703cd8d39e0
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
truelight
parents:
4346
diff
changeset
|
503 |
return index < GetVehiclePoolSize() && IsValidVehicle(GetVehicle(index)); |
1237
1c7a3f9c94b9
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
504 |
} |
1c7a3f9c94b9
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
505 |
|
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
506 |
/* Returns order 'index' of a vehicle or NULL when it doesn't exists */ |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
507 |
static inline Order *GetVehicleOrder(const Vehicle *v, int index) |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
508 |
{ |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
509 |
Order *order = v->orders; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
510 |
|
1765
155dfdbbbc8d
(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
|
511 |
if (index < 0) return NULL; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
512 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
513 |
while (order != NULL && index-- > 0) |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
514 |
order = order->next; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
515 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
516 |
return order; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
517 |
} |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
518 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
519 |
/** |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
520 |
* Returns the last order of a vehicle, or NULL if it doesn't exists |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
521 |
* @param v Vehicle to query |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
522 |
* @return last order of a vehicle, if available |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
523 |
*/ |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
524 |
static inline Order *GetLastVehicleOrder(const Vehicle *v) |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
525 |
{ |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
526 |
Order *order = v->orders; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
527 |
|
1765
155dfdbbbc8d
(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
|
528 |
if (order == NULL) return NULL; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
529 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
530 |
while (order->next != NULL) |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
531 |
order = order->next; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
532 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
533 |
return order; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
534 |
} |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
535 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
536 |
/** Get the first vehicle of a shared-list, so we only have to walk forwards |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
537 |
* @param v Vehicle to query |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
538 |
* @return first vehicle of a shared-list |
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
539 |
*/ |
4494
2bde2b22ef3a
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
540 |
static inline Vehicle *GetFirstVehicleFromSharedList(const Vehicle *v) |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
541 |
{ |
4494
2bde2b22ef3a
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
542 |
Vehicle *u = (Vehicle *)v; |
2bde2b22ef3a
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
543 |
while (u->prev_shared != NULL) u = u->prev_shared; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
544 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
545 |
return u; |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
546 |
} |
0 | 547 |
|
6423
8e10e79e0fd1
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6264
diff
changeset
|
548 |
/* NOSAVE: Return values from various commands. */ |
2564 | 549 |
VARDEF VehicleID _new_vehicle_id; |
3008
cef26520c91e
(svn r3588) - Refit: Use only one global to return the refit capacity rather than one per vehicle type.
peter1138
parents:
2916
diff
changeset
|
550 |
VARDEF uint16 _returned_refit_capacity; |
0 | 551 |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5574
diff
changeset
|
552 |
static const VehicleID INVALID_VEHICLE = 0xFFFF; |
0 | 553 |
|
3105
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
554 |
/** |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
555 |
* Get the colour map for an engine. This used for unbuilt engines in the user interface. |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
556 |
* @param engine_type ID of engine |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
557 |
* @param player ID of player |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
558 |
* @return A ready-to-use palette modifier |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
559 |
*/ |
5668
36b39f4a9032
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5651
diff
changeset
|
560 |
SpriteID GetEnginePalette(EngineID engine_type, PlayerID player); |
3040
7043c0de7c6d
(svn r3620) - 2cc: Replace use of macro to determine colour map with a function call for drawing of vehicles.
peter1138
parents:
3022
diff
changeset
|
561 |
|
3105
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
562 |
/** |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
563 |
* Get the colour map for a vehicle. |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
564 |
* @param v Vehicle to get colour map for |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
565 |
* @return A ready-to-use palette modifier |
02f849f946d0
(svn r3701) [2cc] move vehicle/engine palette functions out of header file and document the remaining definitions
peter1138
parents:
3040
diff
changeset
|
566 |
*/ |
5668
36b39f4a9032
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5651
diff
changeset
|
567 |
SpriteID GetVehiclePalette(const Vehicle *v); |
3040
7043c0de7c6d
(svn r3620) - 2cc: Replace use of macro to determine colour map with a function call for drawing of vehicles.
peter1138
parents:
3022
diff
changeset
|
568 |
|
755
80091de50044
(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
|
569 |
/* A lot of code calls for the invalidation of the status bar, which is widget 5. |
80091de50044
(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
|
570 |
* Best is to have a virtual value for it when it needs to change again */ |
80091de50044
(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
|
571 |
#define STATUS_BAR 5 |
80091de50044
(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
|
572 |
|
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
573 |
extern const uint32 _veh_build_proc_table[]; |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
574 |
extern const uint32 _veh_sell_proc_table[]; |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
575 |
extern const uint32 _veh_refit_proc_table[]; |
4494
2bde2b22ef3a
(svn r6279) -Codechange (r1525): Use proper const pointers for functions that do not change them .
Darkvater
parents:
4463
diff
changeset
|
576 |
extern const uint32 _send_to_depot_proc_table[]; |
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
577 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
578 |
/* Functions to find the right command for certain vehicle type */ |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
579 |
static inline uint32 GetCmdBuildVeh(byte type) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
580 |
{ |
5955
fe61588d5188
(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:
5944
diff
changeset
|
581 |
return _veh_build_proc_table[type]; |
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
582 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
583 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
584 |
static inline uint32 GetCmdBuildVeh(const Vehicle *v) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
585 |
{ |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
586 |
return GetCmdBuildVeh(v->type); |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
587 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
588 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
589 |
static inline uint32 GetCmdSellVeh(byte type) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
590 |
{ |
5955
fe61588d5188
(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:
5944
diff
changeset
|
591 |
return _veh_sell_proc_table[type]; |
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
592 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
593 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
594 |
static inline uint32 GetCmdSellVeh(const Vehicle *v) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
595 |
{ |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
596 |
return GetCmdSellVeh(v->type); |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
597 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
598 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
599 |
static inline uint32 GetCmdRefitVeh(byte type) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
600 |
{ |
5955
fe61588d5188
(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:
5944
diff
changeset
|
601 |
return _veh_refit_proc_table[type]; |
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
602 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
603 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
604 |
static inline uint32 GetCmdRefitVeh(const Vehicle *v) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
605 |
{ |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
606 |
return GetCmdRefitVeh(v->type); |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
607 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
608 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
609 |
static inline uint32 GetCmdSendToDepot(byte type) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
610 |
{ |
5955
fe61588d5188
(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:
5944
diff
changeset
|
611 |
return _send_to_depot_proc_table[type]; |
5792
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
612 |
} |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
613 |
|
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
614 |
static inline uint32 GetCmdSendToDepot(const Vehicle *v) |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
615 |
{ |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
616 |
return GetCmdSendToDepot(v->type); |
c4dad358b30b
(svn r8349) -Codechange: replaced CMD_REFIT_VEH() and similar defines with real static inline functions
bjarni
parents:
5789
diff
changeset
|
617 |
} |
4451
2e86da0081b5
(svn r6229) -Feature: Shared order lists now got a "goto depot" button
bjarni
parents:
4434
diff
changeset
|
618 |
|
0 | 619 |
#endif /* VEHICLE_H */ |