From 12be876131ad76d0fb8e7d0fbff586ea1a0a693e Mon Sep 17 00:00:00 2001 From: maedhros Date: Tue, 12 Jun 2007 22:13:49 +0000 Subject: (svn r10122) -Codechange: Add a CountBitsSet function and use it to replace some less efficient loops. --- src/economy.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'src/economy.cpp') diff --git a/src/economy.cpp b/src/economy.cpp index 64bcbe832..967373c73 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -67,10 +67,7 @@ int64 CalculateCompanyValue(const Player* p) uint num = 0; FOR_ALL_STATIONS(st) { - if (st->owner == owner) { - uint facil = st->facilities; - do num += (facil&1); while (facil >>= 1); - } + if (st->owner == owner) num += CountBitsSet(st->facilities); } value = num * _price.station_value * 25; @@ -144,10 +141,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update) const Station* st; FOR_ALL_STATIONS(st) { - if (st->owner == owner) { - int facil = st->facilities; - do num += facil&1; while (facil>>=1); - } + if (st->owner == owner) num += CountBitsSet(st->facilities); } _score_part[owner][SCORE_STATIONS] = num; } @@ -196,9 +190,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update) /* Generate score for variety of cargo */ { - uint cargo = p->cargo_types; - uint num = 0; - do num += cargo&1; while (cargo>>=1); + uint num = CountBitsSet(p->cargo_types); _score_part[owner][SCORE_CARGO] = num; if (update) p->cargo_types = 0; } -- cgit v1.2.3-54-g00ecf