summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2007-05-07 16:38:21 +0000
committerpeter1138 <peter1138@openttd.org>2007-05-07 16:38:21 +0000
commitbc7d7621965491f6d6928304265d2c65c917e52f (patch)
treef728c5f57ce857d314136368b2ed08ced13de2d6
parent2efecd34c4237bb52981c92241a7b76c46896c4c (diff)
downloadopenttd-bc7d7621965491f6d6928304265d2c65c917e52f.tar.xz
(svn r9809) -Codechange: [NewGRF] Add callback 36 properties to purchase lists and add running cost changing for ships.
-rw-r--r--src/build_vehicle_gui.cpp29
-rw-r--r--src/ship_cmd.cpp2
2 files changed, 18 insertions, 13 deletions
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp
index 828b1ef89..6e66ea7ca 100644
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -384,16 +384,20 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
y += 10;
/* Wagon weight - (including cargo) */
- SetDParam(0, rvi->weight);
- SetDParam(1, (GetCargo(rvi->cargo_type)->weight * rvi->capacity >> 4) + rvi->weight);
+ uint weight = GetEngineProperty(engine_number, 0x16, rvi->weight);
+ SetDParam(0, weight);
+ SetDParam(1, (GetCargo(rvi->cargo_type)->weight * rvi->capacity >> 4) + weight);
DrawString(x, y, STR_PURCHASE_INFO_WEIGHT_CWEIGHT, 0);
y += 10;
/* Wagon speed limit, displayed if above zero */
- if (rvi->max_speed > 0 && _patches.wagon_speed_limits) {
- SetDParam(0, rvi->max_speed * 10 / 16);
- DrawString(x, y, STR_PURCHASE_INFO_SPEED, 0);
- y += 10;
+ if (_patches.wagon_speed_limits) {
+ uint max_speed = GetEngineProperty(engine_number, 0x09, rvi->max_speed);
+ if (max_speed > 0) {
+ SetDParam(0, max_speed * 10 / 16);
+ DrawString(x, y, STR_PURCHASE_INFO_SPEED, 0);
+ y += 10;
+ }
}
return y;
}
@@ -402,22 +406,23 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi)
{
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0);
+ uint weight = GetEngineProperty(engine_number, 0x16, rvi->weight);
/* Purchase Cost - Engine weight */
SetDParam(0, GetEngineProperty(engine_number, 0x17, rvi->base_cost) * (_price.build_railvehicle >> 3) >> 5);
- SetDParam(1, rvi->weight << multihead);
+ SetDParam(1, weight << multihead);
DrawString(x, y, STR_PURCHASE_INFO_COST_WEIGHT, 0);
y += 10;
/* Max speed - Engine power */
- SetDParam(0, rvi->max_speed * 10 / 16);
- SetDParam(1, rvi->power << multihead);
+ SetDParam(0, GetEngineProperty(engine_number, 0x09, rvi->max_speed) * 10 / 16);
+ SetDParam(1, GetEngineProperty(engine_number, 0x0B, rvi->power) << multihead);
DrawString(x, y, STR_PURCHASE_INFO_SPEED_POWER, 0);
y += 10;
/* Max tractive effort - not applicable if old acceleration or maglev */
if (_patches.realistic_acceleration && rvi->railtype != RAILTYPE_MAGLEV) {
- SetDParam(0, ((rvi->weight << multihead) * 10 * rvi->tractive_effort) / 256);
+ SetDParam(0, ((weight << multihead) * 10 * GetEngineProperty(engine_number, 0x1F, rvi->tractive_effort)) / 256);
DrawString(x, y, STR_PURCHASE_INFO_MAX_TE, 0);
y += 10;
}
@@ -469,7 +474,7 @@ static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const Ship
{
/* Purchase cost - Max speed */
SetDParam(0, GetEngineProperty(engine_number, 0x0A, svi->base_cost) * (_price.ship_base >> 3) >> 5);
- SetDParam(1, svi->max_speed * 10 / 32);
+ SetDParam(1, GetEngineProperty(engine_number, 0x0B, svi->max_speed) * 10 / 32);
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0);
y += 10;
@@ -481,7 +486,7 @@ static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const Ship
y += 10;
/* Running cost */
- SetDParam(0, GetEngineProperty(engine_number, 0x0B, svi->running_cost) * _price.ship_running >> 8);
+ SetDParam(0, GetEngineProperty(engine_number, 0x0F, svi->running_cost) * _price.ship_running >> 8);
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0);
y += 10;
diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp
index 41ee5260c..67b18b5e9 100644
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -187,7 +187,7 @@ void OnNewDay_Ship(Vehicle *v)
if (v->vehstatus & VS_STOPPED) return;
- cost = ShipVehInfo(v->engine_type)->running_cost * _price.ship_running / 364;
+ cost = GetVehicleProperty(v, 0x0F, ShipVehInfo(v->engine_type)->running_cost) * _price.ship_running / 364;
v->profit_this_year -= cost >> 8;
SET_EXPENSES_TYPE(EXPENSES_SHIP_RUN);