(svn r14735) -Codechange: remove a bit of bit-waste in the map array (without changing the map array) and make the CompanyIDs contiguous.

-Note: 15 should be enough for now... making it any more means adding more bytes to the map array and thus wasting more bits instead of reducing the bit waste.
This commit is contained in:
rubidium
2008-12-24 09:53:15 +00:00
parent 8a06e67067
commit bf6ec8b19f
10 changed files with 75 additions and 36 deletions

View File

@@ -28,7 +28,7 @@ struct CompanyEconomyEntry {
* otherwise more (or less) companies will be allowed to be
* created than what MAX_COMPANIES specifies!
*/
DECLARE_OLD_POOL(Company, Company, 1, MAX_COMPANIES >> 1)
DECLARE_OLD_POOL(Company, Company, 1, (MAX_COMPANIES + 1) >> 1)
struct Company : PoolItem<Company, CompanyByte, &_Company_pool> {
Company(uint16 name_1 = 0, bool is_ai = false);
@@ -86,7 +86,7 @@ struct Company : PoolItem<Company, CompanyByte, &_Company_pool> {
static inline bool IsValidCompanyID(CompanyID company)
{
return (uint)company < GetCompanyPoolSize() && GetCompany(company)->IsValid();
return company < MAX_COMPANIES && (uint)company < GetCompanyPoolSize() && GetCompany(company)->IsValid();
}
#define FOR_ALL_COMPANIES_FROM(d, start) for (d = GetCompany(start); d != NULL; d = (d->index + 1U < GetCompanyPoolSize()) ? GetCompany(d->index + 1U) : NULL) if (d->IsValid())