mirror of https://github.com/OpenTTD/OpenTTD
(svn r19453) -Codechange: split getting the initial aircraft position to a new function
parent
eb8d35a16e
commit
89a069629e
|
@ -315,20 +315,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
||||||
|
|
||||||
_new_vehicle_id = v->index;
|
_new_vehicle_id = v->index;
|
||||||
|
|
||||||
/* When we click on hangar we know the tile it is on. By that we know
|
v->pos = GetVehiclePosOnBuild(tile);
|
||||||
* its position in the array of depots the airport has.....we can search
|
|
||||||
* layout for #th position of depot. Since layout must start with a listing
|
|
||||||
* of all depots, it is simple */
|
|
||||||
for (uint i = 0;; i++) {
|
|
||||||
const Station *st = Station::GetByTile(tile);
|
|
||||||
const AirportFTAClass *apc = st->Airport();
|
|
||||||
|
|
||||||
if (st->GetHangarTile(i) == tile) {
|
|
||||||
assert(apc->layout[i].heading == HANGAR);
|
|
||||||
v->pos = apc->layout[i].position;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
v->state = HANGAR;
|
v->state = HANGAR;
|
||||||
v->previous_pos = v->pos;
|
v->previous_pos = v->pos;
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "date_func.h"
|
#include "date_func.h"
|
||||||
#include "settings_type.h"
|
#include "settings_type.h"
|
||||||
#include "newgrf_airport.h"
|
#include "newgrf_airport.h"
|
||||||
|
#include "station_base.h"
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
#include "table/airporttile_ids.h"
|
#include "table/airporttile_ids.h"
|
||||||
|
|
||||||
|
@ -381,3 +382,25 @@ const AirportFTAClass *GetAirport(const byte airport_type)
|
||||||
if (airport_type == AT_DUMMY) return &_airportfta_dummy;
|
if (airport_type == AT_DUMMY) return &_airportfta_dummy;
|
||||||
return AirportSpec::Get(airport_type)->fsm;
|
return AirportSpec::Get(airport_type)->fsm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the vehicle position when an aircraft is build at the given tile
|
||||||
|
* @param hangar_tile The tile on which the vehicle is build
|
||||||
|
* @return The position (index in airport node array) where the aircraft ends up
|
||||||
|
*/
|
||||||
|
byte GetVehiclePosOnBuild(TileIndex hangar_tile)
|
||||||
|
{
|
||||||
|
const Station *st = Station::GetByTile(hangar_tile);
|
||||||
|
const AirportFTAClass *apc = st->Airport();
|
||||||
|
/* When we click on hangar we know the tile it is on. By that we know
|
||||||
|
* its position in the array of depots the airport has.....we can search
|
||||||
|
* layout for #th position of depot. Since layout must start with a listing
|
||||||
|
* of all depots, it is simple */
|
||||||
|
for (uint i = 0;; i++) {
|
||||||
|
if (st->GetHangarTile(i) == hangar_tile) {
|
||||||
|
assert(apc->layout[i].heading == HANGAR);
|
||||||
|
return apc->layout[i].position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#define AIRPORT_H
|
#define AIRPORT_H
|
||||||
|
|
||||||
#include "direction_type.h"
|
#include "direction_type.h"
|
||||||
|
#include "tile_type.h"
|
||||||
|
|
||||||
/** Some airport-related constants */
|
/** Some airport-related constants */
|
||||||
enum {
|
enum {
|
||||||
|
@ -186,5 +187,6 @@ struct AirportFTA {
|
||||||
};
|
};
|
||||||
|
|
||||||
const AirportFTAClass *GetAirport(const byte airport_type);
|
const AirportFTAClass *GetAirport(const byte airport_type);
|
||||||
|
byte GetVehiclePosOnBuild(TileIndex hangar_tile);
|
||||||
|
|
||||||
#endif /* AIRPORT_H */
|
#endif /* AIRPORT_H */
|
||||||
|
|
Loading…
Reference in New Issue