Mercurial > hg > openttd
changeset 14353:098ac3e84f3b draft
(svn r18908) -Fix [FS#3561]: on bankruptcy the company value did include the loan and as such the value at which you bought the company was too low
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sun, 24 Jan 2010 11:05:26 +0000 |
parents | 053e6a35d232 |
children | 1dd3aef4e77f |
files | src/company_base.h src/economy.cpp |
diffstat | 2 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/company_base.h +++ b/src/company_base.h @@ -107,7 +107,7 @@ #define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start) #define FOR_ALL_COMPANIES(var) FOR_ALL_COMPANIES_FROM(var, 0) -Money CalculateCompanyValue(const Company *c); +Money CalculateCompanyValue(const Company *c, bool including_loan = true); extern uint _next_competitor_start; extern uint _cur_company_tick_index;
--- a/src/economy.cpp +++ b/src/economy.cpp @@ -110,7 +110,16 @@ Money _additional_cash_required; static PriceMultipliers _price_base_multiplier; -Money CalculateCompanyValue(const Company *c) +/** + * Calculate the value of the company. That is the value of all + * assets (vehicles, stations, etc) and money minus the loan, + * except when including_loan is \c false which is useful when + * we want to calculate the value for bankruptcy. + * @param c the company to get the value of. + * @param including_loan include the loan in the company value. + * @return the value of the company. + */ +Money CalculateCompanyValue(const Company *c, bool including_loan) { Owner owner = c->index; Money value = 0; @@ -137,7 +146,7 @@ } /* Add real money value */ - value -= c->current_loan; + if (including_loan) value -= c->current_loan; value += c->money; return max(value, (Money)1); @@ -507,7 +516,7 @@ case 3: { /* Check if the company has any value.. if not, declare it bankrupt * right now */ - Money val = CalculateCompanyValue(c); + Money val = CalculateCompanyValue(c, false); if (val > 0) { c->bankrupt_value = val; c->bankrupt_asked = 1 << c->index; // Don't ask the owner