summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-07-31 14:13:01 +0000
committerfrosch <frosch@openttd.org>2011-07-31 14:13:01 +0000
commit536fc4246189cb13a8848dc71bedc00a79c7031a (patch)
tree6107b31a3277af336ceef93c1bd2deb06caf569a /src
parentae8f53a4030fde1af599e1dddd05f57b9a386bae (diff)
downloadopenttd-536fc4246189cb13a8848dc71bedc00a79c7031a.tar.xz
(svn r22707) -Codechange: Simplify applying the difficulty settings to prices, and reduce computational errors. (Eddi)
Diffstat (limited to 'src')
-rw-r--r--src/economy.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index a55b6c934..c1ea31045 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -652,17 +652,18 @@ void RecomputePrices()
default: break;
}
- if (mod < 1) {
- price = price * 3 >> 2;
- } else if (mod > 1) {
- price = price * 9 >> 3;
+ switch (mod) {
+ case 0: price *= 6; break;
+ case 1: price *= 8; break; // normalised to 1 below
+ case 2: price *= 9; break;
+ default: NOT_REACHED();
}
/* Apply inflation */
price = (int64)price * _economy.inflation_prices;
- /* Apply newgrf modifiers, and remove fractional part of inflation */
- int shift = _price_base_multiplier[i] - 16;
+ /* Apply newgrf modifiers, remove fractional part of inflation, and normalise on medium difficulty. */
+ int shift = _price_base_multiplier[i] - 16 - 3;
if (shift >= 0) {
price <<= shift;
} else {