Changeset - r8890:02179c54681e
[Not reviewed]
master
0 9 0
rubidium - 17 years ago 2008-04-11 08:14:43
rubidium@openttd.org
(svn r12657) -Codechange: add 'FindClosestDepot' to the vehicle class.
9 files changed with 73 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/aircraft.h
Show inline comments
 
@@ -127,6 +127,7 @@ struct Aircraft : public Vehicle {
 
	void Tick();
 
	void OnNewDay();
 
	TileIndex GetOrderStationLocation(StationID station);
 
	bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse);
 
};
 

	
 
#endif /* AIRCRAFT_H */
src/aircraft_cmd.cpp
Show inline comments
 
@@ -546,6 +546,25 @@ CommandCost CmdStartStopAircraft(TileInd
 
	return CommandCost();
 
}
 

	
 
bool Aircraft::FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse)
 
{
 
	const Station *st = GetStation(this->u.air.targetairport);
 
	/* If the station is not a valid airport or if it has no hangars */
 
	if (!st->IsValid() || st->airport_tile == 0 || st->Airport()->nof_depots == 0) {
 
		/* the aircraft has to search for a hangar on its own */
 
		StationID station = FindNearestHangar(this);
 

	
 
		if (station == INVALID_STATION) return false;
 

	
 
		st = GetStation(station);
 
	}
 

	
 
	if (location    != NULL) *location    = st->xy;
 
	if (destination != NULL) *destination = st->index;
 

	
 
	return true;
 
}
 

	
 
/** Send an aircraft to the hangar.
 
 * @param tile unused
 
 * @param flags for command type
src/roadveh.h
Show inline comments
 
@@ -47,6 +47,10 @@ static inline bool RoadVehHasArticPart(c
 

	
 
void CcBuildRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2);
 

	
 
byte GetRoadVehLength(const Vehicle *v);
 

	
 
void RoadVehUpdateCache(Vehicle *v);
 

	
 

	
 
/**
 
 * This class 'wraps' Vehicle; you do not actually instantiate this class.
 
@@ -77,10 +81,7 @@ struct RoadVehicle : public Vehicle {
 
	void Tick();
 
	void OnNewDay();
 
	TileIndex GetOrderStationLocation(StationID station);
 
	bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse);
 
};
 

	
 
byte GetRoadVehLength(const Vehicle *v);
 

	
 
void RoadVehUpdateCache(Vehicle *v);
 

	
 
#endif /* ROADVEH_H */
src/roadveh_cmd.cpp
Show inline comments
 
@@ -446,6 +446,18 @@ static const Depot* FindClosestRoadDepot
 
	return NULL; /* Target not found */
 
}
 

	
 
bool RoadVehicle::FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse)
 
{
 
	const Depot *depot = FindClosestRoadDepot(this);
 

	
 
	if (depot == NULL) return false;
 

	
 
	if (location    != NULL) *location    = depot->xy;
 
	if (destination != NULL) *destination = depot->index;
 

	
 
	return true;
 
}
 

	
 
/** Send a road vehicle to the depot.
 
 * @param tile unused
 
 * @param flags operation to perform
src/ship.h
Show inline comments
 
@@ -43,6 +43,7 @@ struct Ship: public Vehicle {
 
	void Tick();
 
	void OnNewDay();
 
	TileIndex GetOrderStationLocation(StationID station);
 
	bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse);
 
};
 

	
 
#endif /* SHIP_H */
src/ship_cmd.cpp
Show inline comments
 
@@ -912,6 +912,18 @@ CommandCost CmdStartStopShip(TileIndex t
 
	return CommandCost();
 
}
 

	
 
bool Ship::FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse)
 
{
 
	const Depot *depot = FindClosestShipDepot(this);
 

	
 
	if (depot == NULL) return false;
 

	
 
	if (location    != NULL) *location    = depot->xy;
 
	if (destination != NULL) *destination = depot->index;
 

	
 
	return true;
 
}
 

	
 
/** Send a ship to the depot.
 
 * @param tile unused
 
 * @param flags type of operation
src/train.h
Show inline comments
 
@@ -305,6 +305,7 @@ struct Train : public Vehicle {
 
	void Tick();
 
	void OnNewDay();
 
	TileIndex GetOrderStationLocation(StationID station);
 
	bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse);
 
};
 

	
 
#endif /* TRAIN_H */
src/train_cmd.cpp
Show inline comments
 
@@ -2084,6 +2084,18 @@ static TrainFindDepotData FindClosestTra
 
	return tfdd;
 
}
 

	
 
bool Train::FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse)
 
{
 
	TrainFindDepotData tfdd = FindClosestTrainDepot(this, 0);
 
	if (tfdd.best_length == (uint)-1) return false;
 

	
 
	if (location    != NULL) *location    = tfdd.tile;
 
	if (destination != NULL) *destination = GetDepotByTile(tfdd.tile)->index;
 
	if (reverse     != NULL) *reverse     = tfdd.reverse;
 

	
 
	return true;
 
}
 

	
 
/** Send a train to a depot
 
 * @param tile unused
 
 * @param flags type of operation
src/vehicle_base.h
Show inline comments
 
@@ -512,6 +512,16 @@ public:
 
	 * @return the location (tile) to aim for.
 
	 */
 
	virtual TileIndex GetOrderStationLocation(StationID station) { return INVALID_TILE; }
 

	
 
	/**
 
	 * Find the closest depot for this vehicle and tell us the location,
 
	 * DestinationID and whether we should reverse.
 
	 * @param location    where do we go to?
 
	 * @param destination what hangar do we go to?
 
	 * @param reverse     should the vehicle be reversed?
 
	 * @return true if a depot could be found.
 
	 */
 
	virtual bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse) { return false; }
 
};
 

	
 
/**
0 comments (0 inline, 0 general)