# HG changeset patch # User belugas # Date 1181438721 0 # Node ID 027d2caa4646f018b2481eede032b4f02ad420b5 # Parent 438bff2ed598d99779d2cba1ffc7917995709ccf (svn r10078) -Codechange: Centralize all industry counts data and access diff -r 438bff2ed598 -r 027d2caa4646 src/industry.h --- 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. */ diff -r 438bff2ed598 -r 027d2caa4646 src/industry_cmd.cpp --- 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++; } }