|
@@ -92,13 +92,13 @@ const ScoreInfo _score_info[] = {
|
|
|
{ 8, 50}, // SCORE_CARGO
|
|
|
{10000000, 50}, // SCORE_MONEY
|
|
|
{ 250000, 50}, // SCORE_LOAN
|
|
|
{ 0, 0} // SCORE_TOTAL
|
|
|
};
|
|
|
|
|
|
int _score_part[MAX_COMPANIES][SCORE_END];
|
|
|
int64 _score_part[MAX_COMPANIES][SCORE_END];
|
|
|
Economy _economy;
|
|
|
Prices _price;
|
|
|
Money _additional_cash_required;
|
|
|
static PriceMultipliers _price_base_multiplier;
|
|
|
|
|
|
/**
|
|
@@ -180,13 +180,13 @@ int UpdateCompanyRatingAndValue(Company
|
|
|
|
|
|
min_profit >>= 8; // remove the fract part
|
|
|
|
|
|
_score_part[owner][SCORE_VEHICLES] = num;
|
|
|
/* Don't allow negative min_profit to show */
|
|
|
if (min_profit > 0) {
|
|
|
_score_part[owner][SCORE_MIN_PROFIT] = ClampToI32(min_profit);
|
|
|
_score_part[owner][SCORE_MIN_PROFIT] = min_profit;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Count stations */
|
|
|
{
|
|
|
uint num = 0;
|
|
@@ -210,16 +210,16 @@ int UpdateCompanyRatingAndValue(Company
|
|
|
do {
|
|
|
min_income = min(min_income, cee->income + cee->expenses);
|
|
|
max_income = max(max_income, cee->income + cee->expenses);
|
|
|
} while (++cee, --numec);
|
|
|
|
|
|
if (min_income > 0) {
|
|
|
_score_part[owner][SCORE_MIN_INCOME] = ClampToI32(min_income);
|
|
|
_score_part[owner][SCORE_MIN_INCOME] = min_income;
|
|
|
}
|
|
|
|
|
|
_score_part[owner][SCORE_MAX_INCOME] = ClampToI32(max_income);
|
|
|
_score_part[owner][SCORE_MAX_INCOME] = max_income;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Generate score depending on amount of transported cargo */
|
|
|
{
|
|
|
int numec = min(c->num_valid_stat_ent, 4);
|
|
@@ -227,31 +227,31 @@ int UpdateCompanyRatingAndValue(Company
|
|
|
const CompanyEconomyEntry *cee = c->old_economy;
|
|
|
OverflowSafeInt64 total_delivered = 0;
|
|
|
do {
|
|
|
total_delivered += cee->delivered_cargo.GetSum<OverflowSafeInt64>();
|
|
|
} while (++cee, --numec);
|
|
|
|
|
|
_score_part[owner][SCORE_DELIVERED] = ClampToI32(total_delivered);
|
|
|
_score_part[owner][SCORE_DELIVERED] = total_delivered;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Generate score for variety of cargo */
|
|
|
{
|
|
|
_score_part[owner][SCORE_CARGO] = c->old_economy->delivered_cargo.GetCount();
|
|
|
}
|
|
|
|
|
|
/* Generate score for company's money */
|
|
|
{
|
|
|
if (c->money > 0) {
|
|
|
_score_part[owner][SCORE_MONEY] = ClampToI32(c->money);
|
|
|
_score_part[owner][SCORE_MONEY] = c->money;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Generate score for loan */
|
|
|
{
|
|
|
_score_part[owner][SCORE_LOAN] = ClampToI32(_score_info[SCORE_LOAN].needed - c->current_loan);
|
|
|
_score_part[owner][SCORE_LOAN] = _score_info[SCORE_LOAN].needed - c->current_loan;
|
|
|
}
|
|
|
|
|
|
/* Now we calculate the score for each item.. */
|
|
|
{
|
|
|
int total_score = 0;
|
|
|
int s;
|