Mercurial > hg > openttd
changeset 17783:1719e5568a82 draft
(svn r22568) -Change: Add a list of persistent storages to the Town class.
author | terkhen <terkhen@openttd.org> |
---|---|
date | Sun, 12 Jun 2011 20:49:07 +0000 |
parents | 043b87d0dbec |
children | ebbbd5ad03d2 |
files | src/saveload/town_sl.cpp src/town.h |
diffstat | 2 files changed, 21 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -171,6 +171,8 @@ SLE_CONDVAR(Town, larger_town, SLE_BOOL, 56, SL_MAX_VERSION), SLE_CONDVAR(Town, layout, SLE_UINT8, 113, SL_MAX_VERSION), + SLE_CONDLST(Town, psa_list, REF_STORAGE, 161, SL_MAX_VERSION), + /* reserve extra space in savegame here. (currently 30 bytes) */ SLE_CONDNULL(30, 2, SL_MAX_VERSION), @@ -207,7 +209,20 @@ } } +/** Fix pointers when loading town data. */ +static void Ptrs_TOWN() +{ + /* Don't run when savegame version lower than 161. */ + if (IsSavegameVersionBefore(161)) return; + + Town *t; + FOR_ALL_TOWNS(t) { + SlObject(t, _town_desc); + } +} + +/** Chunk handler for towns. */ extern const ChunkHandler _town_chunk_handlers[] = { - { 'HIDS', Save_HIDS, Load_HIDS, NULL, NULL, CH_ARRAY }, - { 'CITY', Save_TOWN, Load_TOWN, NULL, NULL, CH_ARRAY | CH_LAST}, + { 'HIDS', Save_HIDS, Load_HIDS, NULL, NULL, CH_ARRAY }, + { 'CITY', Save_TOWN, Load_TOWN, Ptrs_TOWN, NULL, CH_ARRAY | CH_LAST}, };
--- a/src/town.h +++ b/src/town.h @@ -17,6 +17,8 @@ #include "command_type.h" #include "town_map.h" #include "subsidy_type.h" +#include "newgrf_storage.h" +#include <list> template <typename T> struct BuildingCounts { @@ -105,6 +107,8 @@ bool larger_town; TownLayoutByte layout; ///< town specific road layout + std::list<PersistentStorage *> psa_list; + PartOfSubsidyByte part_of_subsidy; ///< NOSAVE: is this town a source/destination of a subsidy? /* NOSAVE: UpdateTownRadius updates this given the house count. */