changeset 17903:62089c39f660 draft

(svn r22707) -Codechange: Simplify applying the difficulty settings to prices, and reduce computational errors. (Eddi)
author frosch <frosch@openttd.org>
date Sun, 31 Jul 2011 14:13:01 +0000
parents ec936cb32175
children d114b7d640d4
files src/economy.cpp
diffstat 1 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -652,17 +652,18 @@
 
 			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 {