equal
deleted
inserted
replaced
115 case VEH_AIRCRAFT: return STR_A015_AIRCRAFT_IN_THE_WAY; |
115 case VEH_AIRCRAFT: return STR_A015_AIRCRAFT_IN_THE_WAY; |
116 default: return STR_980E_SHIP_IN_THE_WAY; |
116 default: return STR_980E_SHIP_IN_THE_WAY; |
117 } |
117 } |
118 } |
118 } |
119 |
119 |
120 static void *EnsureNoVehicleProc(Vehicle *v, void *data) |
|
121 { |
|
122 if (v->tile != *(const TileIndex*)data || v->type == VEH_DISASTER) |
|
123 return NULL; |
|
124 |
|
125 _error_message = VehicleInTheWayErrMsg(v); |
|
126 return v; |
|
127 } |
|
128 |
|
129 bool EnsureNoVehicle(TileIndex tile) |
|
130 { |
|
131 return VehicleFromPos(tile, &tile, EnsureNoVehicleProc) == NULL; |
|
132 } |
|
133 |
|
134 static void *EnsureNoVehicleProcZ(Vehicle *v, void *data) |
120 static void *EnsureNoVehicleProcZ(Vehicle *v, void *data) |
135 { |
121 { |
136 const TileInfo *ti = (const TileInfo*)data; |
122 const TileInfo *ti = (const TileInfo*)data; |
137 |
123 |
138 if (v->tile != ti->tile || v->type == VEH_DISASTER) return NULL; |
124 if (v->tile != ti->tile || v->type == VEH_DISASTER || (v->type == VEH_AIRCRAFT && v->subtype == AIR_SHADOW)) return NULL; |
139 if (v->z_pos > ti->z) return NULL; |
125 if (v->z_pos > ti->z) return NULL; |
140 |
126 |
141 _error_message = VehicleInTheWayErrMsg(v); |
127 _error_message = VehicleInTheWayErrMsg(v); |
142 return v; |
128 return v; |
143 } |
129 } |
562 } |
548 } |
563 |
549 |
564 /** |
550 /** |
565 * Deletes all vehicles in a chain. |
551 * Deletes all vehicles in a chain. |
566 * @param v The first vehicle in the chain. |
552 * @param v The first vehicle in the chain. |
567 * |
|
568 * @warning This function is not valid for any vehicle containing articulated |
|
569 * parts. |
|
570 */ |
553 */ |
571 void DeleteVehicleChain(Vehicle *v) |
554 void DeleteVehicleChain(Vehicle *v) |
572 { |
555 { |
573 assert(v->type != VEH_TRAIN && v->type != VEH_ROAD); |
556 assert(v->First() == v); |
574 |
557 |
575 do { |
558 do { |
576 Vehicle *u = v; |
559 Vehicle *u = v; |
577 v = v->Next(); |
560 v = v->Next(); |
578 delete u; |
561 delete u; |