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. */