1
0
Fork 0

Codechange: Improve performance when calculating company value (#9901)

pull/8895/head
SamuXarick 2022-11-08 11:11:24 +00:00 committed by GitHub
parent 8c4a70e05e
commit b7abaa55a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 11 deletions

View File

@ -101,6 +101,8 @@ Economy _economy;
Prices _price;
static PriceMultipliers _price_base_multiplier;
extern int GetAmountOwnedBy(const Company *c, Owner owner);
/**
* Calculate the value of the company. That is the value of all
* assets (vehicles, stations, shares) and money minus the loan,
@ -115,18 +117,12 @@ Money CalculateCompanyValue(const Company *c, bool including_loan)
Money owned_shares_value = 0;
for (const Company *co : Company::Iterate()) {
uint8 shares_owned = 0;
int shares_owned = GetAmountOwnedBy(co, c->index);
for (uint8 i = 0; i < 4; i++) {
if (co->share_owners[i] == c->index) {
shares_owned++;
}
}
owned_shares_value += (CalculateCompanyValueExcludingShares(co) / 4) * shares_owned;
if (shares_owned > 0) owned_shares_value += (CalculateCompanyValueExcludingShares(co) / 4) * shares_owned;
}
return std::max<Money>(owned_shares_value + CalculateCompanyValueExcludingShares(c), 1);
return owned_shares_value + CalculateCompanyValueExcludingShares(c);
}
Money CalculateCompanyValueExcludingShares(const Company *c, bool including_loan)
@ -2018,8 +2014,6 @@ static void DoAcquireCompany(Company *c)
delete c;
}
extern int GetAmountOwnedBy(const Company *c, Owner owner);
/**
* Acquire shares in an opposing company.
* @param flags type of operation