(svn r20374) -Codechange: add persistant storage for airports

pull/155/head
yexo 14 years ago
parent 51fe375651
commit ccccb2c490

@ -263,6 +263,9 @@ uint32 AirportGetVariable(const ResolverObject *object, byte variable, byte para
}
switch (variable) {
/* Get a variable from the persistent storage */
case 0x7C: return st->airport.psa.Get(parameter);
case 0xF0: return st->facilities;
case 0xFA: return Clamp(st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535);
}
@ -304,7 +307,7 @@ static void NewAirportResolver(ResolverObject *res, TileIndex tile, Station *st,
res->GetVariable = AirportGetVariable;
res->ResolveReal = AirportResolveReal;
res->psa = NULL;
res->psa = st != NULL ? &st->airport.psa : NULL;
res->u.airport.st = st;
res->u.airport.airport_id = airport_id;
res->u.airport.layout = layout;

@ -338,6 +338,7 @@ static const SaveLoad _station_desc[] = {
SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION),
SLE_VAR(Station, airport.flags, SLE_UINT64),
SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION),
SLE_CONDARR(Station, airport.psa.storage, SLE_UINT32, 16, 145, SL_MAX_VERSION),
SLE_VAR(Station, indtype, SLE_UINT8),

@ -17,6 +17,7 @@
#include "newgrf_airport.h"
#include "cargopacket.h"
#include "industry_type.h"
#include "newgrf_storage.h"
typedef Pool<BaseStation, StationID, 32, 64000> StationPool;
extern StationPool _station_pool;
@ -47,12 +48,15 @@ struct GoodsEntry {
/** All airport-related information. Only valid if tile != INVALID_TILE. */
struct Airport : public TileArea {
typedef PersistentStorageArray<int32, 16> PersistentStorage;
Airport() : TileArea(INVALID_TILE, 0, 0) {}
uint64 flags; ///< stores which blocks on the airport are taken. was 16 bit earlier on, then 32
byte type; ///< Type of this airport, @see AirportTypes.
byte layout; ///< Airport layout number.
Direction rotation; ///< How this airport is rotated.
PersistentStorage psa; ///< Persistent storage for NewGRF airports
/**
* Get the AirportSpec that from the airport type of this airport. If there

Loading…
Cancel
Save