changeset 3489:a3cbd05a75da draft

(svn r4340) Add force {FORCE} to the units system. This is currently unused.
author peter1138 <peter1138@openttd.org>
date Sun, 09 Apr 2006 18:25:31 +0000
parents 45c2f6ba0ba5
children 1f9cfbde101b
files lang/english.txt strgen/strgen.c strings.c
diffstat 3 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lang/english.txt
+++ b/lang/english.txt
@@ -334,6 +334,10 @@
 STR_UNITS_VOLUME_LONG_METRIC                                    :{COMMA} litre{P "" s}
 STR_UNITS_VOLUME_LONG_SI                                        :{COMMA} m³
 
+STR_UNITS_FORCE_IMPERIAL                                        :{COMMA}x10^3 lbf
+STR_UNITS_FORCE_METRIC                                          :{COMMA} ton force
+STR_UNITS_FORCE_SI                                              :{COMMA} kN
+
 ############ range for menu	starts
 STR_0154_OPERATING_PROFIT_GRAPH                                 :Operating profit graph
 STR_0155_INCOME_GRAPH                                           :Income graph
--- a/strgen/strgen.c
+++ b/strgen/strgen.c
@@ -450,6 +450,7 @@
 	{"VOLUME_S",        EmitEscapedByte, 17, 1, 0},
 	{"WEIGHT",          EmitEscapedByte, 18, 1, 0},
 	{"WEIGHT_S",        EmitEscapedByte, 19, 1, 0},
+	{"FORCE",           EmitEscapedByte, 20, 1, 0},
 
 	{"P", EmitPlural, 0, 0, C_DONTCOUNT},					// plural specifier
 	{"G", EmitGender, 0, 0, C_DONTCOUNT},					// gender specifier
--- a/strings.c
+++ b/strings.c
@@ -495,26 +495,33 @@
 	int v_s;           ///< Shift for volume
 	StringID s_volume; ///< Short string for volume
 	StringID l_volume; ///< Long string for volume
+	int f_m;           ///< Multiplier for force
+	int f_s;           ///< Shift for force
+	StringID force;    ///< String for force
 } Units;
 
+/* Unit conversions */
 static const Units units[] = {
-	{ // Imperial (Original)
+	{ // Imperial (Original, mph, hp, metric ton, litre, metric ton force)
 		  10,  4, STR_UNITS_VELOCITY_IMPERIAL,
 		   1,  0, STR_UNITS_POWER_IMPERIAL,
 		   1,  0, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC,
 		1000,  0, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC,
+		 835, 13, STR_UNITS_FORCE_METRIC,
 	},
-	{ // Metric
+	{ // Metric (km/h, hp, metric ton, litre, metric ton force)
 		   1,  0, STR_UNITS_VELOCITY_METRIC,
 		   1,  0, STR_UNITS_POWER_METRIC,
 		   1,  0, STR_UNITS_WEIGHT_SHORT_METRIC, STR_UNITS_WEIGHT_LONG_METRIC,
 		1000,  0, STR_UNITS_VOLUME_SHORT_METRIC, STR_UNITS_VOLUME_LONG_METRIC,
+		 835, 13, STR_UNITS_FORCE_METRIC,
 	},
-	{ // SI
+	{ // SI (m/s, kilowatt, kilogram, cubic metres, kilonewton)
 		 284, 10, STR_UNITS_VELOCITY_SI,
 		 764, 10, STR_UNITS_POWER_SI,
 		1000,  0, STR_UNITS_WEIGHT_SHORT_SI, STR_UNITS_WEIGHT_LONG_SI,
 		   1,  0, STR_UNITS_VOLUME_SHORT_SI, STR_UNITS_VOLUME_LONG_SI,
+		   1,  0, STR_UNITS_FORCE_SI,
 	},
 };
 
@@ -725,6 +732,15 @@
 				break;
 			}
 
+			case 20: { // {FORCE}
+				int32 args[1];
+				assert(_opt_ptr->units < lengthof(units));
+				args[0] = GetInt32(&argv) * units[_opt_ptr->units].f_m >> units[_opt_ptr->units].f_s;
+				buff = FormatString(buff, GetStringPtr(units[_opt_ptr->units].force), args, modifier >> 24);
+				modifier = 0;
+				break;
+			}
+
 			default:
 				error("!invalid escape sequence in string");
 			}