author | matthijs |
Wed, 04 May 2005 22:13:07 +0000 | |
changeset 1763 | 9e6f367ae02e |
parent 1752 | cdbfb2f23e72 |
child 1765 | f8d29d5462c9 |
permissions | -rw-r--r-- |
0 | 1 |
#ifndef VEHICLE_H |
2 |
#define VEHICLE_H |
|
3 |
||
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
4 |
#include "pool.h" |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
5 |
#include "order.h" |
577 | 6 |
|
1763
9e6f367ae02e
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
7 |
enum { |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
8 |
VEH_Train = 0x10, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
9 |
VEH_Road = 0x11, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
10 |
VEH_Ship = 0x12, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
11 |
VEH_Aircraft = 0x13, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
12 |
VEH_Special = 0x14, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
13 |
VEH_Disaster = 0x15, |
1763
9e6f367ae02e
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
14 |
} ; |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
15 |
|
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
16 |
enum VehStatus { |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
17 |
VS_HIDDEN = 1, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
18 |
VS_STOPPED = 2, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
19 |
VS_UNCLICKABLE = 4, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
20 |
VS_DEFPAL = 0x8, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
21 |
VS_TRAIN_SLOWING = 0x10, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
22 |
VS_DISASTER = 0x20, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
23 |
VS_AIRCRAFT_BROKEN = 0x40, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
24 |
VS_CRASHED = 0x80, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
25 |
}; |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
26 |
|
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
27 |
// 1 and 3 do not appear to be used |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
28 |
typedef enum TrainSubtypes { |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
29 |
TS_Front_Engine = 0, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
30 |
TS_Not_First = 2, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
31 |
TS_Free_Car = 4, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
32 |
} TrainSubtype; |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
33 |
|
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
34 |
/* Effect vehicle types */ |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
35 |
typedef enum EffectVehicle { |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
36 |
EV_CHIMNEY_SMOKE = 0, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
37 |
EV_STEAM_SMOKE = 1, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
38 |
EV_DIESEL_SMOKE = 2, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
39 |
EV_ELECTRIC_SPARK = 3, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
40 |
EV_SMOKE = 4, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
41 |
EV_EXPLOSION_LARGE = 5, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
42 |
EV_BREAKDOWN_SMOKE = 6, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
43 |
EV_EXPLOSION_SMALL = 7, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
44 |
EV_BULLDOZER = 8, |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
45 |
EV_BUBBLE = 9 |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
46 |
} EffectVehicle; |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
47 |
|
0 | 48 |
typedef struct VehicleRail { |
49 |
uint16 last_speed; // NOSAVE: only used in UI |
|
50 |
uint16 crash_anim_pos; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
51 |
uint16 days_since_order_progr; |
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
52 |
|
0 | 53 |
uint16 cached_weight; // cached power and weight for the vehicle. |
54 |
uint32 cached_power; // no need to save those, they are recomputed on load. |
|
55 |
||
56 |
// NOSAVE: for wagon override - id of the first engine in train |
|
57 |
// 0xffff == not in train |
|
58 |
uint16 first_engine; |
|
59 |
||
60 |
byte track; |
|
61 |
byte force_proceed; |
|
62 |
byte railtype; |
|
63 |
||
64 |
byte flags; |
|
65 |
} VehicleRail; |
|
66 |
||
67 |
enum { |
|
954
4d052517a993
(svn r1445) -Fix: reversing a train also reverses the UP and DOWN status for the
truelight
parents:
941
diff
changeset
|
68 |
VRF_REVERSING = 0, |
0 | 69 |
|
70 |
// used to calculate if train is going up or down |
|
954
4d052517a993
(svn r1445) -Fix: reversing a train also reverses the UP and DOWN status for the
truelight
parents:
941
diff
changeset
|
71 |
VRF_GOINGUP = 1, |
4d052517a993
(svn r1445) -Fix: reversing a train also reverses the UP and DOWN status for the
truelight
parents:
941
diff
changeset
|
72 |
VRF_GOINGDOWN = 2, |
0 | 73 |
}; |
74 |
||
75 |
typedef struct VehicleAir { |
|
76 |
uint16 crashed_counter; |
|
77 |
byte pos; |
|
78 |
byte previous_pos; |
|
817
4f9377b7fd2b
(svn r1288) -Codechange: changed _map2 to an uint16. It is still saved and loaded as
truelight
parents:
812
diff
changeset
|
79 |
uint16 targetairport; |
0 | 80 |
byte state; |
81 |
} VehicleAir; |
|
82 |
||
83 |
typedef struct VehicleRoad { |
|
84 |
byte state; |
|
85 |
byte frame; |
|
86 |
uint16 unk2; |
|
87 |
byte overtaking; |
|
88 |
byte overtaking_ctr; |
|
89 |
uint16 crashed_ctr; |
|
90 |
byte reverse_ctr; |
|
1217
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
91 |
struct RoadStop *slot; |
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
92 |
byte slotindex; |
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1174
diff
changeset
|
93 |
byte slot_age; |
0 | 94 |
} VehicleRoad; |
95 |
||
96 |
typedef struct VehicleSpecial { |
|
97 |
uint16 unk0; |
|
98 |
byte unk2; |
|
99 |
} VehicleSpecial; |
|
100 |
||
101 |
typedef struct VehicleDisaster { |
|
102 |
uint16 image_override; |
|
103 |
uint16 unk2; |
|
104 |
} VehicleDisaster; |
|
105 |
||
106 |
typedef struct VehicleShip { |
|
107 |
byte state; |
|
108 |
} VehicleShip; |
|
109 |
||
110 |
// not used ATM |
|
111 |
struct WorldSprite { |
|
112 |
struct WorldSprite *next; // next sprite in hash chain |
|
113 |
uint16 image; // sprite number for this vehicle |
|
114 |
||
115 |
// screen coordinates |
|
116 |
int16 left, top, right, bottom; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
117 |
|
0 | 118 |
// world coordinates |
119 |
int16 x; |
|
120 |
int16 y; |
|
121 |
byte z; |
|
122 |
||
123 |
int8 x_offs; // x offset for vehicle sprite |
|
124 |
int8 y_offs; // y offset for vehicle sprite |
|
125 |
||
126 |
byte width; // width of vehicle sprite |
|
127 |
byte height; // height of vehicle sprite |
|
128 |
byte depth; // depth of vehicle sprite |
|
129 |
||
130 |
byte flags; // draw flags |
|
131 |
}; |
|
132 |
||
133 |
struct Vehicle { |
|
1763
9e6f367ae02e
(svn r2267) - Codechange: Reverted the typedeffing of VehicleType (r2256), since that interfered with the saveload code.
matthijs
parents:
1752
diff
changeset
|
134 |
byte type; // type, ie roadven,train,ship,aircraft,special |
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
135 |
byte subtype; // subtype (Filled with values from EffectVehicles or TrainSubTypes)(Filled with values from EffectVehicles or TrainSubTypes) |
0 | 136 |
|
137 |
uint16 index; // NOSAVE: Index in vehicle array |
|
138 |
||
139 |
Vehicle *next; // next |
|
1601
9fd461d00287
(svn r2105) -Codechange: Added a cache for the first vehicle of a chain to increase performance, especially with many long trains
celestar
parents:
1587
diff
changeset
|
140 |
Vehicle *first; // NOSAVE: pointer to the first vehicle in the chain |
0 | 141 |
|
142 |
StringID string_id; // Displayed string |
|
143 |
||
1282
e7a73ee62d2f
(svn r1786) -Fix: unitnumber is increased to 16bit, so now you can have up to 5000
truelight
parents:
1279
diff
changeset
|
144 |
UnitID unitnumber; // unit number, for display purposes only |
0 | 145 |
byte owner; // which player owns the vehicle? |
146 |
||
147 |
TileIndex tile; // Current tile index |
|
148 |
TileIndex dest_tile; // Heading for this tile |
|
149 |
||
1174
27e386195965
(svn r1676) Increase the size of TileIndex and TileIndexDiff to 32bits and adapt the save/load data and some other parts of the code to that change
tron
parents:
1139
diff
changeset
|
150 |
int32 x_pos; // coordinates |
27e386195965
(svn r1676) Increase the size of TileIndex and TileIndexDiff to 32bits and adapt the save/load data and some other parts of the code to that change
tron
parents:
1139
diff
changeset
|
151 |
int32 y_pos; |
0 | 152 |
byte z_pos; |
153 |
byte direction; // facing |
|
154 |
||
155 |
byte spritenum; // currently displayed sprite index |
|
156 |
// 0xfd == custom sprite, 0xfe == custom second head sprite |
|
157 |
// 0xff == reserved for another custom sprite |
|
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
158 |
uint16 cur_image; // sprite number for this vehicle |
0 | 159 |
byte sprite_width;// width of vehicle sprite |
160 |
byte sprite_height;// height of vehicle sprite |
|
161 |
byte z_height; // z-height of vehicle sprite |
|
162 |
int8 x_offs; // x offset for vehicle sprite |
|
163 |
int8 y_offs; // y offset for vehicle sprite |
|
164 |
uint16 engine_type; |
|
165 |
||
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
166 |
// for randomized variational spritegroups |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
167 |
// bitmask used to resolve them; parts of it get reseeded when triggers |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
168 |
// of corresponding spritegroups get matched |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
169 |
byte random_bits; |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
170 |
byte waiting_triggers; // triggers to be yet matched |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
395
diff
changeset
|
171 |
|
0 | 172 |
uint16 max_speed; // maximum speed |
173 |
uint16 cur_speed; // current speed |
|
174 |
byte subspeed; // fractional speed |
|
175 |
byte acceleration; // used by train & aircraft |
|
176 |
byte progress; |
|
177 |
||
178 |
byte vehstatus; // Status |
|
817
4f9377b7fd2b
(svn r1288) -Codechange: changed _map2 to an uint16. It is still saved and loaded as
truelight
parents:
812
diff
changeset
|
179 |
uint16 last_station_visited; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
180 |
|
0 | 181 |
byte cargo_type; // type of cargo this vehicle is carrying |
182 |
byte cargo_days; // how many days have the pieces been in transit |
|
1266
9dc5638fe8cc
(svn r1770) -Fix: Hopefully last pieces of code that are containing a station-id
truelight
parents:
1237
diff
changeset
|
183 |
uint16 cargo_source;// source of cargo |
0 | 184 |
uint16 cargo_cap; // total capacity |
185 |
uint16 cargo_count;// how many pieces are used |
|
186 |
||
187 |
byte day_counter; // increased by one for each day |
|
188 |
byte tick_counter;// increased by one for each tick |
|
189 |
||
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
190 |
/* Begin Order-stuff */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
191 |
Order current_order; //! The current order (+ status, like: loading) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
192 |
byte cur_order_index; //! The index to the current order |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
193 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
194 |
Order *orders; //! Pointer to the first order for this vehicle |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
195 |
byte num_orders; //! How many orders there are in the list |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
196 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
197 |
Vehicle *next_shared; //! If not NULL, this points to the next vehicle that shared the order |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
198 |
Vehicle *prev_shared; //! If not NULL, this points to the prev vehicle that shared the order |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
199 |
/* End Order-stuff */ |
0 | 200 |
|
201 |
// Boundaries for the current position in the world and a next hash link. |
|
202 |
// NOSAVE: All of those can be updated with VehiclePositionChanged() |
|
849
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
203 |
int32 left_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
204 |
int32 top_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
205 |
int32 right_coord; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
842
diff
changeset
|
206 |
int32 bottom_coord; |
0 | 207 |
uint16 next_hash; |
208 |
||
209 |
// Related to age and service time |
|
210 |
uint16 age; // Age in days |
|
211 |
uint16 max_age; // Maximum age |
|
212 |
uint16 date_of_last_service; |
|
213 |
uint16 service_interval; |
|
214 |
uint16 reliability; |
|
215 |
uint16 reliability_spd_dec; |
|
216 |
byte breakdown_ctr; |
|
217 |
byte breakdown_delay; |
|
218 |
byte breakdowns_since_last_service; |
|
219 |
byte breakdown_chance; |
|
220 |
byte build_year; |
|
221 |
||
222 |
uint16 load_unload_time_rem; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
164
diff
changeset
|
223 |
|
0 | 224 |
int32 profit_this_year; |
225 |
int32 profit_last_year; |
|
226 |
uint32 value; |
|
227 |
||
228 |
union { |
|
229 |
VehicleRail rail; |
|
230 |
VehicleAir air; |
|
231 |
VehicleRoad road; |
|
232 |
VehicleSpecial special; |
|
233 |
VehicleDisaster disaster; |
|
234 |
VehicleShip ship; |
|
235 |
} u; |
|
236 |
}; |
|
237 |
||
238 |
#define is_custom_sprite(x) (x >= 0xfd) |
|
239 |
#define is_custom_firsthead_sprite(x) (x == 0xfd) |
|
240 |
#define is_custom_secondhead_sprite(x) (x == 0xfe) |
|
241 |
||
242 |
typedef void VehicleTickProc(Vehicle *v); |
|
243 |
typedef void *VehicleFromPosProc(Vehicle *v, void *data); |
|
244 |
||
578
86e352980acd
(svn r998) now vehicles are serviced both when entering and when leaving depots to prevent that vehicles might need service when leaving after a long stay (ln--)
bjarni
parents:
577
diff
changeset
|
245 |
void VehicleServiceInDepot(Vehicle *v); |
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
246 |
Vehicle *AllocateVehicle(void); |
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
247 |
Vehicle *ForceAllocateVehicle(void); |
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
248 |
Vehicle *ForceAllocateSpecialVehicle(void); |
0 | 249 |
void UpdateVehiclePosHash(Vehicle *v, int x, int y); |
250 |
void VehiclePositionChanged(Vehicle *v); |
|
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
251 |
void AfterLoadVehicles(void); |
0 | 252 |
Vehicle *GetLastVehicleInChain(Vehicle *v); |
1475 | 253 |
Vehicle *GetPrevVehicleInChain(const Vehicle *v); |
254 |
Vehicle *GetFirstVehicleInChain(const Vehicle *v); |
|
0 | 255 |
int CountVehiclesInChain(Vehicle *v); |
256 |
void DeleteVehicle(Vehicle *v); |
|
257 |
void DeleteVehicleChain(Vehicle *v); |
|
258 |
void *VehicleFromPos(TileIndex tile, void *data, VehicleFromPosProc *proc); |
|
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
259 |
void CallVehicleTicks(void); |
1605
c4630be67467
(svn r2109) -Fix: use FindVehicleOnTileZ(tile, 0) over FindVehicleBetween(tile, tile, 0)
truelight
parents:
1601
diff
changeset
|
260 |
Vehicle *FindVehicleOnTileZ(TileIndex tile, byte z); |
0 | 261 |
|
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1067
diff
changeset
|
262 |
void InitializeTrains(void); |
0 | 263 |
|
264 |
bool CanFillVehicle(Vehicle *v); |
|
265 |
||
266 |
void ViewportAddVehicles(DrawPixelInfo *dpi); |
|
267 |
||
268 |
void TrainEnterDepot(Vehicle *v, uint tile); |
|
269 |
||
1060
e8c44e426175
(svn r1561) Fix: autoreplacing a singleheaded engine into a dualheaded engine now adds the the rear engine
bjarni
parents:
1055
diff
changeset
|
270 |
void AddRearEngineToMultiheadedTrain(Vehicle *v, Vehicle *u, bool building) ; |
e8c44e426175
(svn r1561) Fix: autoreplacing a singleheaded engine into a dualheaded engine now adds the the rear engine
bjarni
parents:
1055
diff
changeset
|
271 |
|
0 | 272 |
/* train_cmd.h */ |
1475 | 273 |
int GetTrainImage(const Vehicle *v, byte direction); |
0 | 274 |
int GetAircraftImage(Vehicle *v, byte direction); |
275 |
int GetRoadVehImage(Vehicle *v, byte direction); |
|
276 |
int GetShipImage(Vehicle *v, byte direction); |
|
277 |
||
1359
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
278 |
Vehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicle type); |
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
279 |
Vehicle *CreateEffectVehicleAbove(int x, int y, int z, EffectVehicle type); |
8ba976aed634
(svn r1863) Give the effect vehicle type enums more descriptive names and use the enum as parameter type for CreateEffectVehicle*()
tron
parents:
1330
diff
changeset
|
280 |
Vehicle *CreateEffectVehicleRel(const Vehicle *v, int x, int y, int z, EffectVehicle type); |
0 | 281 |
|
282 |
uint32 VehicleEnterTile(Vehicle *v, uint tile, int x, int y); |
|
283 |
||
284 |
void VehicleInTheWayErrMsg(Vehicle *v); |
|
285 |
Vehicle *FindVehicleBetween(TileIndex from, TileIndex to, byte z); |
|
1587
e6bcc5a3cb86
(svn r2091) Small cleanup: uint -> TileIndex, const, don't call FindLandscapeHeightByTile()
tron
parents:
1542
diff
changeset
|
286 |
TileIndex GetVehicleOutOfTunnelTile(const Vehicle *v); |
0 | 287 |
|
288 |
bool UpdateSignalsOnSegment(uint tile, byte direction); |
|
289 |
void SetSignalsOnBothDir(uint tile, byte track); |
|
290 |
||
291 |
Vehicle *CheckClickOnVehicle(ViewPort *vp, int x, int y); |
|
292 |
//uint GetVehicleWeight(Vehicle *v); |
|
293 |
||
294 |
void DecreaseVehicleValue(Vehicle *v); |
|
295 |
void CheckVehicleBreakdown(Vehicle *v); |
|
296 |
void AgeVehicle(Vehicle *v); |
|
842 | 297 |
void MaybeReplaceVehicle(Vehicle *v); |
0 | 298 |
|
299 |
void BeginVehicleMove(Vehicle *v); |
|
300 |
void EndVehicleMove(Vehicle *v); |
|
301 |
||
302 |
bool IsAircraftHangarTile(TileIndex tile); |
|
303 |
void ShowAircraftViewWindow(Vehicle *v); |
|
304 |
||
1282
e7a73ee62d2f
(svn r1786) -Fix: unitnumber is increased to 16bit, so now you can have up to 5000
truelight
parents:
1279
diff
changeset
|
305 |
UnitID GetFreeUnitNumber(byte type); |
0 | 306 |
|
307 |
int LoadUnloadVehicle(Vehicle *v); |
|
308 |
||
309 |
void UpdateTrainAcceleration(Vehicle *v); |
|
310 |
int32 GetTrainRunningCost(Vehicle *v); |
|
311 |
||
1472
043304846688
(svn r1976) Cleanups - mostly indentation and fiddling with loops
tron
parents:
1359
diff
changeset
|
312 |
int CheckTrainStoppedInDepot(const Vehicle *v); |
0 | 313 |
|
593 | 314 |
bool VehicleNeedsService(const Vehicle *v); |
315 |
||
0 | 316 |
typedef struct GetNewVehiclePosResult { |
317 |
int x,y; |
|
318 |
uint old_tile; |
|
319 |
uint new_tile; |
|
320 |
} GetNewVehiclePosResult; |
|
321 |
||
1752
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
322 |
/** |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
323 |
* Returns the Trackdir on which the vehicle is currently located. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
324 |
* Works for trains and ships. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
325 |
* Currently works only sortof for road vehicles, since they have a fuzzy |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
326 |
* concept of being "on" a trackdir. Dunno really what it returns for a road |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
327 |
* vehicle that is halfway a tile, never really understood that part. For road |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
328 |
* vehicles that are at the beginning or end of the tile, should just return |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
329 |
* the diagonal trackdir on which they are driving. I _think_. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
330 |
* For other vehicles types, or vehicles with no clear trackdir (such as those |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
331 |
* in depots), returns 0xFF. |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
332 |
*/ |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
333 |
byte GetVehicleTrackdir(const Vehicle* v); |
cdbfb2f23e72
(svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents:
1605
diff
changeset
|
334 |
|
0 | 335 |
/* returns true if staying in the same tile */ |
336 |
bool GetNewVehiclePos(Vehicle *v, GetNewVehiclePosResult *gp); |
|
337 |
byte GetDirectionTowards(Vehicle *v, int x, int y); |
|
338 |
||
339 |
#define BEGIN_ENUM_WAGONS(v) do { |
|
340 |
#define END_ENUM_WAGONS(v) } while ( (v=v->next) != NULL); |
|
341 |
||
342 |
/* vehicle.c */ |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
849
diff
changeset
|
343 |
VARDEF SortStruct *_vehicle_sort; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
849
diff
changeset
|
344 |
|
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
345 |
extern MemoryPool _vehicle_pool; |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
346 |
|
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
347 |
/** |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
348 |
* Get the pointer to the vehicle with index 'index' |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
349 |
*/ |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
350 |
static inline Vehicle *GetVehicle(VehicleID index) |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
849
diff
changeset
|
351 |
{ |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
352 |
return (Vehicle*)GetItemFromPool(&_vehicle_pool, index); |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
849
diff
changeset
|
353 |
} |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
849
diff
changeset
|
354 |
|
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
355 |
/** |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
356 |
* Get the current size of the VehiclePool |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
357 |
*/ |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
358 |
static inline uint16 GetVehiclePoolSize(void) |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
359 |
{ |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
360 |
return _vehicle_pool.total_items; |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
361 |
} |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
362 |
|
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
363 |
#define FOR_ALL_VEHICLES_FROM(v, start) for (v = GetVehicle(start); v != NULL; v = (v->index + 1 < GetVehiclePoolSize()) ? GetVehicle(v->index + 1) : NULL) |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
364 |
#define FOR_ALL_VEHICLES(v) FOR_ALL_VEHICLES_FROM(v, 0) |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
365 |
|
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
366 |
/** |
1330
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
367 |
* Check if a Vehicle really exists. |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
368 |
*/ |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
369 |
static inline bool IsValidVehicle(Vehicle* v) |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
370 |
{ |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
371 |
return v->type != 0; |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
372 |
} |
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
373 |
|
8a67d04016ce
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1313
diff
changeset
|
374 |
/** |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
375 |
* Check if an index is a vehicle-index (so between 0 and max-vehicles) |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
376 |
* |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
377 |
* @return Returns true if the vehicle-id is in range |
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
378 |
*/ |
1237
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
379 |
static inline bool IsVehicleIndex(uint index) |
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
380 |
{ |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
381 |
if (index < GetVehiclePoolSize()) |
1237
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
382 |
return true; |
1279
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
383 |
|
4f83fbde72de
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
truelight
parents:
1266
diff
changeset
|
384 |
return false; |
1237
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
385 |
} |
0a1ce05c3d45
(svn r1741) - Fix: added IsVehicleIndex() so it's possible to protect GetVehicle() from reading an invalid vehicle index
bjarni
parents:
1217
diff
changeset
|
386 |
|
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
387 |
/* Returns order 'index' of a vehicle or NULL when it doesn't exists */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
388 |
static inline Order *GetVehicleOrder(const Vehicle *v, int index) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
389 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
390 |
Order *order = v->orders; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
391 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
392 |
if (index < 0) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
393 |
return NULL; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
394 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
395 |
while (order != NULL && index-- > 0) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
396 |
order = order->next; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
397 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
398 |
return order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
399 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
400 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
401 |
/* Returns the last order of a vehicle, or NULL if it doesn't exists */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
402 |
static inline Order *GetLastVehicleOrder(const Vehicle *v) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
403 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
404 |
Order *order = v->orders; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
405 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
406 |
if (order == NULL) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
407 |
return NULL; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
408 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
409 |
while (order->next != NULL) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
410 |
order = order->next; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
411 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
412 |
return order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
413 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
414 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
415 |
/* Get the first vehicle of a shared-list, so we only have to walk forwards */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
416 |
static inline Vehicle *GetFirstVehicleFromSharedList(Vehicle *v) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
417 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
418 |
Vehicle *u = v; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
419 |
while (u->prev_shared != NULL) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
420 |
u = u->prev_shared; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
421 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
422 |
return u; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
1020
diff
changeset
|
423 |
} |
0 | 424 |
|
425 |
// NOSAVE: Can be regenerated by inspecting the vehicles. |
|
426 |
VARDEF VehicleID _vehicle_position_hash[0x1000]; |
|
427 |
||
428 |
// NOSAVE: Return values from various commands. |
|
429 |
VARDEF VehicleID _new_train_id; |
|
430 |
VARDEF VehicleID _new_wagon_id; |
|
431 |
VARDEF VehicleID _new_aircraft_id; |
|
432 |
VARDEF VehicleID _new_ship_id; |
|
433 |
VARDEF VehicleID _new_roadveh_id; |
|
434 |
VARDEF uint16 _aircraft_refit_capacity; |
|
435 |
VARDEF byte _cmd_build_rail_veh_score; |
|
436 |
VARDEF byte _cmd_build_rail_veh_var1; |
|
437 |
||
438 |
// for each player, for each vehicle type, keep a list of the vehicles. |
|
439 |
//VARDEF Vehicle *_vehicle_arr[8][4]; |
|
440 |
||
441 |
#define INVALID_VEHICLE 0xffff |
|
442 |
||
755
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
443 |
/* A lot of code calls for the invalidation of the status bar, which is widget 5. |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
444 |
* Best is to have a virtual value for it when it needs to change again */ |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
445 |
#define STATUS_BAR 5 |
823358e83abf
(svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized
darkvater
parents:
593
diff
changeset
|
446 |
|
0 | 447 |
#endif /* VEHICLE_H */ |