# HG changeset patch # User yexo # Date 1281009973 0 # Node ID 49e7443561b29d1bb8ca6d882912b42a1b2c9d85 # Parent 3cc7d0c81fc376a6cc5fddced412939e03b19431 (svn r20374) -Codechange: add persistant storage for airports diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -263,6 +263,9 @@ } 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 @@ 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; diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -338,6 +338,7 @@ 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), diff --git a/src/station_base.h b/src/station_base.h --- a/src/station_base.h +++ b/src/station_base.h @@ -17,6 +17,7 @@ #include "newgrf_airport.h" #include "cargopacket.h" #include "industry_type.h" +#include "newgrf_storage.h" typedef Pool StationPool; extern StationPool _station_pool; @@ -47,12 +48,15 @@ /** All airport-related information. Only valid if tile != INVALID_TILE. */ struct Airport : public TileArea { + typedef PersistentStorageArray 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