summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/industry.h16
-rw-r--r--src/industry_cmd.cpp9
2 files changed, 15 insertions, 10 deletions
diff --git a/src/industry.h b/src/industry.h
index 303b31816..6cb853524 100644
--- a/src/industry.h
+++ b/src/industry.h
@@ -208,14 +208,14 @@ static inline IndustryID GetMaxIndustryIndex()
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 @@ static inline void IncIndustryTypeCount(IndustryType type)
{
assert(type < INVALID_INDUSTRYTYPE);
_industry_counts[type]++;
+ _total_industries++;
}
/** Decrement the count of industries for this type
@@ -232,6 +233,7 @@ static inline void DecIndustryTypeCount(IndustryType type)
{
assert(type < INVALID_INDUSTRYTYPE);
_industry_counts[type]--;
+ _total_industries--;
}
/** get the count of industries for this type
@@ -243,6 +245,14 @@ static inline uint8 GetIndustryTypeCount(IndustryType type)
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.
*/
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index d66158338..23fe7bd4d 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -147,7 +147,6 @@ void DestroyIndustry(Industry *i)
}
_industry_sort_dirty = true;
- _total_industries--;
DecIndustryTypeCount(i->type);
DeleteSubsidyWithIndustry(i->index);
@@ -1355,7 +1354,6 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
uint32 r;
int j;
- _total_industries++;
i->xy = tile;
i->width = i->height = 0;
i->type = type;
@@ -1857,8 +1855,7 @@ void InitializeIndustries()
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 @@ static void Load_INDY()
{
int index;
- _total_industries = 0;
+ ResetIndustryCounts();
while ((index = SlIterateArray()) != -1) {
Industry *i;
@@ -1937,8 +1934,6 @@ static void Load_INDY()
i = GetIndustry(index);
SlObject(i, _industry_desc);
IncIndustryTypeCount(i->type);
-
- _total_industries++;
}
}