(svn r10078) -Codechange: Centralize all industry counts data and access
authorbelugas
Sun, 10 Jun 2007 01:25:21 +0000
changeset 6839 2cc0a04fa761
parent 6838 243a588e6a0d
child 6840 a6b64ff73787
(svn r10078) -Codechange: Centralize all industry counts data and access
src/industry.h
src/industry_cmd.cpp
--- a/src/industry.h	Sat Jun 09 18:31:04 2007 +0000
+++ b/src/industry.h	Sun Jun 10 01:25:21 2007 +0000
@@ -208,14 +208,14 @@
 	return GetIndustryPoolSize() - 1;
 }
 
+extern int _total_industries;  // general counter
+extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
+
 static inline uint GetNumIndustries()
 {
-	extern int _total_industries;  // general counter
 	return _total_industries;
 }
 
-extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
-
 /** Increment the count of industries for this type
  * @param type IndustryType to increment
  * @pre type < INVALID_INDUSTRYTYPE */
@@ -223,6 +223,7 @@
 {
 	assert(type < INVALID_INDUSTRYTYPE);
 	_industry_counts[type]++;
+	_total_industries++;
 }
 
 /** Decrement the count of industries for this type
@@ -232,6 +233,7 @@
 {
 	assert(type < INVALID_INDUSTRYTYPE);
 	_industry_counts[type]--;
+	_total_industries--;
 }
 
 /** get the count of industries for this type
@@ -243,6 +245,14 @@
 	return min(_industry_counts[type], 0xFF); // callback expects only a byte, so cut it
 }
 
+/** Resets both the total_industries and the _industry_counts
+ * This way, we centralize all counts activities */
+static inline void ResetIndustryCounts()
+{
+	_total_industries = 0;
+	memset(&_industry_counts, 0, sizeof(_industry_counts));
+}
+
 /**
  * Return a random valid industry.
  */
--- a/src/industry_cmd.cpp	Sat Jun 09 18:31:04 2007 +0000
+++ b/src/industry_cmd.cpp	Sun Jun 10 01:25:21 2007 +0000
@@ -147,7 +147,6 @@
 	}
 
 	_industry_sort_dirty = true;
-	_total_industries--;
 	DecIndustryTypeCount(i->type);
 
 	DeleteSubsidyWithIndustry(i->index);
@@ -1355,7 +1354,6 @@
 	uint32 r;
 	int j;
 
-	_total_industries++;
 	i->xy = tile;
 	i->width = i->height = 0;
 	i->type = type;
@@ -1857,8 +1855,7 @@
 	CleanPool(&_Industry_pool);
 	AddBlockToPool(&_Industry_pool);
 
-	_total_industries = 0;
-	memset(&_industry_counts, 0, sizeof(_industry_counts));
+	ResetIndustryCounts();
 	_industry_sort_dirty = true;
 	_industry_sound_tile = 0;
 }
@@ -1926,7 +1923,7 @@
 {
 	int index;
 
-	_total_industries = 0;
+	ResetIndustryCounts();
 
 	while ((index = SlIterateArray()) != -1) {
 		Industry *i;
@@ -1937,8 +1934,6 @@
 		i = GetIndustry(index);
 		SlObject(i, _industry_desc);
 		IncIndustryTypeCount(i->type);
-
-		_total_industries++;
 	}
 }