changeset 5298:f032b319aa52 draft

(svn r7451) -Fix (7372): GetNum(Towns|Industries) should return the actual number of towns and industries. -Fix (6055): GetMax(Town|Industry)Index should not return the number of towns or industries - 1, but the size of the pool - 1.
author rubidium <rubidium@openttd.org>
date Sat, 09 Dec 2006 14:14:51 +0000
parents 091fbb250727
children db18dfecfb7c
files industry.h industry_cmd.c town.h town_cmd.c
diffstat 4 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/industry.h
+++ b/industry.h
@@ -99,7 +99,7 @@
 	 *  _really_ returns the highest index. Now it just returns
 	 *  the next safe value we are sure about everything is below.
 	 */
-	return _total_industries - 1;
+	return GetIndustryPoolSize() - 1;
 }
 
 static inline uint GetNumIndustries(void)
--- a/industry_cmd.c
+++ b/industry_cmd.c
@@ -110,6 +110,7 @@
 	}
 
 	_industry_sort_dirty = true;
+	_total_industries--;
 	DeleteSubsidyWithIndustry(i->index);
 	DeleteWindowById(WC_INDUSTRY_VIEW, i->index);
 	InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
@@ -1361,7 +1362,7 @@
 
 		if (IsValidIndustry(i)) continue;
 
-		if (i->index >= _total_industries) _total_industries = i->index + 1;
+		_total_industries++;
 
 		memset(i, 0, sizeof(*i));
 		i->index = index;
@@ -1917,7 +1918,7 @@
 		i = GetIndustry(index);
 		SlObject(i, _industry_desc);
 
-		if (index >= _total_industries) _total_industries = index + 1;
+		_total_industries++;
 	}
 }
 
--- a/town.h
+++ b/town.h
@@ -171,7 +171,7 @@
 	 *  _really_ returns the highest index. Now it just returns
 	 *  the next safe value we are sure about everything is below.
 	 */
-	return _total_towns - 1;
+	return GetTownPoolSize() - 1;
 }
 
 static inline uint GetNumTowns(void)
--- a/town_cmd.c
+++ b/town_cmd.c
@@ -54,6 +54,7 @@
 	 * and remove from list of sorted towns */
 	DeleteWindowById(WC_TOWN_VIEW, t->index);
 	_town_sort_dirty = true;
+	_total_towns--;
 
 	/* Delete all industries belonging to the town */
 	FOR_ALL_INDUSTRIES(i) if (i->town == t) DeleteIndustry(i);
@@ -983,7 +984,7 @@
 		if (!IsValidTown(t)) {
 			TownID index = t->index;
 
-			if (t->index >= _total_towns) _total_towns = t->index + 1;
+			_total_towns++;
 
 			memset(t, 0, sizeof(Town));
 			t->index = index;
@@ -1932,7 +1933,7 @@
 		t = GetTown(index);
 		SlObject(t, _town_desc);
 
-		if ((uint)index >= _total_towns) _total_towns = index + 1;
+		_total_towns++;
 	}
 
 	/* This is to ensure all pointers are within the limits of