Changeset - r13104:9e66a110a842
[Not reviewed]
master
0 12 1
frosch - 15 years ago 2009-09-22 19:28:57
frosch@openttd.org
(svn r17616) -Codechange [FS#3222]: Enumerize properties used in callback 0x36. Based on Terkhen's work.
13 files changed with 106 insertions and 53 deletions:
0 comments (0 inline, 0 general)
projects/openttd_vs80.vcproj
Show inline comments
 
@@ -1208,6 +1208,10 @@
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_properties.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_sound.h"
 
				>
 
			</File>
projects/openttd_vs90.vcproj
Show inline comments
 
@@ -1205,6 +1205,10 @@
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_properties.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_sound.h"
 
				>
 
			</File>
source.list
Show inline comments
 
@@ -207,6 +207,7 @@ newgrf_generic.h
 
newgrf_house.h
 
newgrf_industries.h
 
newgrf_industrytiles.h
 
newgrf_properties.h
 
newgrf_sound.h
 
newgrf_spritegroup.h
 
newgrf_station.h
src/aircraft_cmd.cpp
Show inline comments
 
@@ -619,7 +619,7 @@ static void CheckIfAircraftNeedsService(
 

	
 
Money Aircraft::GetRunningCost() const
 
{
 
	return GetVehicleProperty(this, 0x0E, AircraftVehInfo(this->engine_type)->running_cost) * _price.aircraft_running;
 
	return GetVehicleProperty(this, PROP_AIRCRAFT_RUNNING_COST_FACTOR, AircraftVehInfo(this->engine_type)->running_cost) * _price.aircraft_running;
 
}
 

	
 
void Aircraft::OnNewDay()
 
@@ -753,7 +753,7 @@ static void PlayAircraftSound(const Vehi
 

	
 
void UpdateAircraftCache(Aircraft *v)
 
{
 
	uint max_speed = GetVehicleProperty(v, 0x0C, 0);
 
	uint max_speed = GetVehicleProperty(v, PROP_AIRCRAFT_SPEED, 0);
 
	if (max_speed != 0) {
 
		/* Convert from original units to (approx) km/h */
 
		max_speed = (max_speed * 129) / 10;
src/engine.cpp
Show inline comments
 
@@ -172,13 +172,13 @@ uint Engine::GetDisplayDefaultCapacity()
 
	if (!this->CanCarryCargo()) return 0;
 
	switch (type) {
 
		case VEH_TRAIN:
 
			return GetEngineProperty(this->index, 0x14, this->u.rail.capacity) + (this->u.rail.railveh_type == RAILVEH_MULTIHEAD ? this->u.rail.capacity : 0);
 
			return GetEngineProperty(this->index, PROP_TRAIN_CARGO_CAPACITY, this->u.rail.capacity) + (this->u.rail.railveh_type == RAILVEH_MULTIHEAD ? this->u.rail.capacity : 0);
 

	
 
		case VEH_ROAD:
 
			return GetEngineProperty(this->index, 0x0F, this->u.road.capacity);
 
			return GetEngineProperty(this->index, PROP_ROADVEH_CARGO_CAPACITY, this->u.road.capacity);
 

	
 
		case VEH_SHIP:
 
			return GetEngineProperty(this->index, 0x0D, this->u.ship.capacity);
 
			return GetEngineProperty(this->index, PROP_SHIP_CARGO_CAPACITY, this->u.ship.capacity);
 

	
 
		case VEH_AIRCRAFT:
 
			return AircraftDefaultCargoCapacity(this->GetDefaultCargoType(), &this->u.air);
 
@@ -194,13 +194,13 @@ Money Engine::GetRunningCost() const
 
			return this->u.road.running_cost * GetPriceByIndex(this->u.road.running_cost_class) >> 8;
 

	
 
		case VEH_TRAIN:
 
			return GetEngineProperty(this->index, 0x0D, this->u.rail.running_cost) * GetPriceByIndex(this->u.rail.running_cost_class) >> 8;
 
			return GetEngineProperty(this->index, PROP_TRAIN_RUNNING_COST_FACTOR, this->u.rail.running_cost) * GetPriceByIndex(this->u.rail.running_cost_class) >> 8;
 

	
 
		case VEH_SHIP:
 
			return GetEngineProperty(this->index, 0x0F, this->u.ship.running_cost) * _price.ship_running >> 8;
 
			return GetEngineProperty(this->index, PROP_SHIP_RUNNING_COST_FACTOR, this->u.ship.running_cost) * _price.ship_running >> 8;
 

	
 
		case VEH_AIRCRAFT:
 
			return GetEngineProperty(this->index, 0x0E, this->u.air.running_cost) * _price.aircraft_running >> 8;
 
			return GetEngineProperty(this->index, PROP_AIRCRAFT_RUNNING_COST_FACTOR, this->u.air.running_cost) * _price.aircraft_running >> 8;
 

	
 
		default: NOT_REACHED();
 
	}
 
@@ -210,19 +210,19 @@ Money Engine::GetCost() const
 
{
 
	switch (this->type) {
 
		case VEH_ROAD:
 
			return GetEngineProperty(this->index, 0x11, this->u.road.cost_factor) * (_price.roadveh_base >> 3) >> 5;
 
			return GetEngineProperty(this->index, PROP_ROADVEH_COST_FACTOR, this->u.road.cost_factor) * (_price.roadveh_base >> 3) >> 5;
 

	
 
		case VEH_TRAIN:
 
			if (this->u.rail.railveh_type == RAILVEH_WAGON) {
 
				return (GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * _price.build_railwagon) >> 8;
 
				return (GetEngineProperty(this->index, PROP_TRAIN_COST_FACTOR, this->u.rail.cost_factor) * _price.build_railwagon) >> 8;
 
			} else {
 
				return GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * (_price.build_railvehicle >> 3) >> 5;
 
				return GetEngineProperty(this->index, PROP_TRAIN_COST_FACTOR, this->u.rail.cost_factor) * (_price.build_railvehicle >> 3) >> 5;
 
			}
 
		case VEH_SHIP:
 
			return GetEngineProperty(this->index, 0x0A, this->u.ship.cost_factor) * (_price.ship_base >> 3) >> 5;
 
			return GetEngineProperty(this->index, PROP_SHIP_COST_FACTOR, this->u.ship.cost_factor) * (_price.ship_base >> 3) >> 5;
 

	
 
		case VEH_AIRCRAFT:
 
			return GetEngineProperty(this->index, 0x0B, this->u.air.cost_factor) * (_price.aircraft_base >> 3) >> 5;
 
			return GetEngineProperty(this->index, PROP_AIRCRAFT_COST_FACTOR, this->u.air.cost_factor) * (_price.aircraft_base >> 3) >> 5;
 

	
 
		default: NOT_REACHED();
 
	}
 
@@ -236,13 +236,13 @@ uint Engine::GetDisplayMaxSpeed() const
 
{
 
	switch (this->type) {
 
		case VEH_TRAIN:
 
			return GetEngineProperty(this->index, 0x09, this->u.rail.max_speed);
 
			return GetEngineProperty(this->index, PROP_TRAIN_SPEED, this->u.rail.max_speed);
 

	
 
		case VEH_ROAD:
 
			return this->u.road.max_speed / 2;
 

	
 
		case VEH_SHIP:
 
			return GetEngineProperty(this->index, 0x0B, this->u.ship.max_speed) / 2;
 
			return GetEngineProperty(this->index, PROP_SHIP_SPEED, this->u.ship.max_speed) / 2;
 

	
 
		case VEH_AIRCRAFT:
 
			return this->u.air.max_speed;
 
@@ -256,7 +256,7 @@ uint Engine::GetPower() const
 
	/* Currently only trains have 'power' */
 
	switch (this->type) {
 
		case VEH_TRAIN:
 
			return GetEngineProperty(this->index, 0x0B, this->u.rail.power);
 
			return GetEngineProperty(this->index, PROP_TRAIN_POWER, this->u.rail.power);
 

	
 
		default: NOT_REACHED();
 
	}
 
@@ -272,7 +272,7 @@ uint Engine::GetDisplayWeight() const
 
	/* Currently only trains have 'weight' */
 
	switch (this->type) {
 
		case VEH_TRAIN:
 
			return GetEngineProperty(this->index, 0x16, this->u.rail.weight) << (this->u.rail.railveh_type == RAILVEH_MULTIHEAD ? 1 : 0);
 
			return GetEngineProperty(this->index, PROP_TRAIN_WEIGHT, this->u.rail.weight) << (this->u.rail.railveh_type == RAILVEH_MULTIHEAD ? 1 : 0);
 

	
 
		default: NOT_REACHED();
 
	}
 
@@ -288,7 +288,7 @@ uint Engine::GetDisplayMaxTractiveEffort
 
	/* Currently only trains have 'tractive effort' */
 
	switch (this->type) {
 
		case VEH_TRAIN:
 
			return (10 * this->GetDisplayWeight() * GetEngineProperty(this->index, 0x1F, this->u.rail.tractive_effort)) / 256;
 
			return (10 * this->GetDisplayWeight() * GetEngineProperty(this->index, PROP_TRAIN_TRACTIVE_EFFORT, this->u.rail.tractive_effort)) / 256;
 

	
 
		default: NOT_REACHED();
 
	}
src/newgrf.cpp
Show inline comments
 
@@ -506,14 +506,14 @@ static ChangeInfoResult RailVehicleChang
 
				rvi->ai_passenger_only = grf_load_byte(&buf);
 
				break;
 

	
 
			case 0x09: { // Speed (1 unit is 1 kmh)
 
			case PROP_TRAIN_SPEED: { // 0x09 Speed (1 unit is 1 km-ish/h)
 
				uint16 speed = grf_load_word(&buf);
 
				if (speed == 0xFFFF) speed = 0;
 

	
 
				rvi->max_speed = speed;
 
			} break;
 

	
 
			case 0x0B: // Power
 
			case PROP_TRAIN_POWER: // 0x0B Power
 
				rvi->power = grf_load_word(&buf);
 

	
 
				/* Set engine / wagon state based on power */
 
@@ -526,7 +526,7 @@ static ChangeInfoResult RailVehicleChang
 
				}
 
				break;
 

	
 
			case 0x0D: // Running cost factor
 
			case PROP_TRAIN_RUNNING_COST_FACTOR: // 0x0D Running cost factor
 
				rvi->running_cost = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -567,7 +567,7 @@ static ChangeInfoResult RailVehicleChang
 
				}
 
			} break;
 

	
 
			case 0x14: // Cargo capacity
 
			case PROP_TRAIN_CARGO_CAPACITY: // 0x14 Cargo capacity
 
				rvi->capacity = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -585,11 +585,11 @@ static ChangeInfoResult RailVehicleChang
 
				}
 
			} break;
 

	
 
			case 0x16: // Weight
 
			case PROP_TRAIN_WEIGHT: // 0x16 Weight
 
				SB(rvi->weight, 0, 8, grf_load_byte(&buf));
 
				break;
 

	
 
			case 0x17: // Cost factor
 
			case PROP_TRAIN_COST_FACTOR: // 0x17 Cost factor
 
				rvi->cost_factor = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -653,7 +653,7 @@ static ChangeInfoResult RailVehicleChang
 
				ei->callback_mask = grf_load_byte(&buf);
 
				break;
 

	
 
			case 0x1F: // Tractive effort coefficient
 
			case PROP_TRAIN_TRACTIVE_EFFORT: // 0x1F Tractive effort coefficient
 
				rvi->tractive_effort = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -686,7 +686,7 @@ static ChangeInfoResult RailVehicleChang
 
				}
 
			} break;
 

	
 
			case 0x25: // User-defined bit mask to set when checking veh. var. 42
 
			case PROP_TRAIN_USER_DATA: // 0x25 User-defined bit mask to set when checking veh. var. 42
 
				rvi->user_def_data = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -769,7 +769,7 @@ static ChangeInfoResult RoadVehicleChang
 
				rvi->image_index = spriteid;
 
			} break;
 

	
 
			case 0x0F: // Cargo capacity
 
			case PROP_ROADVEH_CARGO_CAPACITY: // 0x0F Cargo capacity
 
				rvi->capacity = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -786,7 +786,7 @@ static ChangeInfoResult RoadVehicleChang
 
				}
 
			} break;
 

	
 
			case 0x11: // Cost factor
 
			case PROP_ROADVEH_COST_FACTOR: // 0x11 Cost factor
 
				rvi->cost_factor = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -887,11 +887,11 @@ static ChangeInfoResult ShipVehicleChang
 
				svi->refittable = (grf_load_byte(&buf) != 0);
 
				break;
 

	
 
			case 0x0A: // Cost factor
 
			case PROP_SHIP_COST_FACTOR: // 0x0A Cost factor
 
				svi->cost_factor = grf_load_byte(&buf);
 
				break;
 

	
 
			case 0x0B: // Speed (1 unit is 0.5 kmh)
 
			case PROP_SHIP_SPEED: // 0x0B Speed (1 unit is 0.5 km-ish/h)
 
				svi->max_speed = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -908,11 +908,11 @@ static ChangeInfoResult ShipVehicleChang
 
				}
 
			} break;
 

	
 
			case 0x0D: // Cargo capacity
 
			case PROP_SHIP_CARGO_CAPACITY: // 0x0D Cargo capacity
 
				svi->capacity = grf_load_word(&buf);
 
				break;
 

	
 
			case 0x0F: // Running cost factor
 
			case PROP_SHIP_RUNNING_COST_FACTOR: // 0x0F Running cost factor
 
				svi->running_cost = grf_load_byte(&buf);
 
				break;
 

	
 
@@ -1008,11 +1008,11 @@ static ChangeInfoResult AircraftVehicleC
 
				SB(avi->subtype, 1, 1, (grf_load_byte(&buf) != 0 ? 1 : 0)); // AIR_FAST
 
				break;
 

	
 
			case 0x0B: // Cost factor
 
			case PROP_AIRCRAFT_COST_FACTOR: // 0x0B Cost factor
 
				avi->cost_factor = grf_load_byte(&buf);
 
				break;
 

	
 
			case 0x0C: // Speed (1 unit is 8 mph, we translate to 1 unit is 1 km/h)
 
			case PROP_AIRCRAFT_SPEED: // 0x0C Speed (1 unit is 8 mph, we translate to 1 unit is 1 km/h)
 
				avi->max_speed = (grf_load_byte(&buf) * 129) / 10;
 
				break;
 

	
 
@@ -1020,7 +1020,7 @@ static ChangeInfoResult AircraftVehicleC
 
				avi->acceleration = (grf_load_byte(&buf) * 129) / 10;
 
				break;
 

	
 
			case 0x0E: // Running cost factor
 
			case PROP_AIRCRAFT_RUNNING_COST_FACTOR: // 0x0E Running cost factor
 
				avi->running_cost = grf_load_byte(&buf);
 
				break;
 

	
src/newgrf_engine.cpp
Show inline comments
 
@@ -1026,7 +1026,7 @@ uint16 GetVehicleCallbackParent(Callback
 

	
 

	
 
/* Callback 36 handlers */
 
uint GetVehicleProperty(const Vehicle *v, uint8 property, uint orig_value)
 
uint GetVehicleProperty(const Vehicle *v, PropertyID property, uint orig_value)
 
{
 
	uint16 callback = GetVehicleCallback(CBID_VEHICLE_MODIFY_PROPERTY, property, 0, v->engine_type, v);
 
	if (callback != CALLBACK_FAILED) return callback;
 
@@ -1035,7 +1035,7 @@ uint GetVehicleProperty(const Vehicle *v
 
}
 

	
 

	
 
uint GetEngineProperty(EngineID engine, uint8 property, uint orig_value)
 
uint GetEngineProperty(EngineID engine, PropertyID property, uint orig_value)
 
{
 
	uint16 callback = GetVehicleCallback(CBID_VEHICLE_MODIFY_PROPERTY, property, 0, engine, NULL);
 
	if (callback != CALLBACK_FAILED) return callback;
src/newgrf_engine.h
Show inline comments
 
@@ -14,6 +14,7 @@
 

	
 
#include "direction_type.h"
 
#include "newgrf_callbacks.h"
 
#include "newgrf_properties.h"
 

	
 
enum {
 
	TRAININFO_DEFAULT_VEHICLE_WIDTH = 29,
 
@@ -45,8 +46,8 @@ bool UsesWagonOverride(const Vehicle *v)
 

	
 
/* Handler to Evaluate callback 36. If the callback fails (i.e. most of the
 
 * time) orig_value is returned */
 
uint GetVehicleProperty(const Vehicle *v, uint8 property, uint orig_value);
 
uint GetEngineProperty(EngineID engine, uint8 property, uint orig_value);
 
uint GetVehicleProperty(const Vehicle *v, PropertyID property, uint orig_value);
 
uint GetEngineProperty(EngineID engine, PropertyID property, uint orig_value);
 

	
 
enum VehicleTrigger {
 
	VEHICLE_TRIGGER_NEW_CARGO     = 0x01,
src/newgrf_properties.h
Show inline comments
 
new file 100644
 
/* $Id$ */
 

	
 
/*
 
 * This file is part of OpenTTD.
 
 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
 
 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 
 */
 

	
 
/** @file newgrf_properties.h Properties of NewGRF Action 0. */
 

	
 
#ifndef NEWGRF_PROPERTIES_H
 
#define NEWGRF_PROPERTIES_H
 

	
 
/**
 
 * List of NewGRF properties used in Action 0 or Callback 0x36 (CBID_VEHICLE_MODIFY_PROPERTY).
 
 * Names are formatted as PROP_<CLASS>_<NAME>
 
 * @todo Currently the list only contains properties which are used more than once in the code. I.e. they are available for callback 0x36.
 
 */
 
enum PropertyID {
 
	PROP_TRAIN_SPEED                            = 0x09, ///< Max. speed: 1 unit = 1/1.6 mph = 1 km-ish/h
 
	PROP_TRAIN_POWER                            = 0x0B, ///< Power in hp          (if dualheaded: sum of both vehicles)
 
	PROP_TRAIN_RUNNING_COST_FACTOR              = 0x0D, ///< Yearly runningcost   (if dualheaded: sum of both vehicles)
 
	PROP_TRAIN_CARGO_CAPACITY                   = 0x14, ///< Capacity             (if dualheaded: for each single vehicle)
 
	PROP_TRAIN_WEIGHT                           = 0x16, ///< Weight in t          (if dualheaded: for each single vehicle)
 
	PROP_TRAIN_COST_FACTOR                      = 0x17, ///< Purchase cost        (if dualheaded: sum of both vehicles)
 
	PROP_TRAIN_TRACTIVE_EFFORT                  = 0x1F, ///< Tractive effort coefficient in 1/256
 
	PROP_TRAIN_USER_DATA                        = 0x25, ///< User defined data for vehicle variable 0x42
 

	
 
	PROP_ROADVEH_CARGO_CAPACITY                 = 0x0F, ///< Capacity
 
	PROP_ROADVEH_COST_FACTOR                    = 0x11, ///< Purchase cost
 

	
 
	PROP_SHIP_COST_FACTOR                       = 0x0A, ///< Purchase cost
 
	PROP_SHIP_SPEED                             = 0x0B, ///< Max. speed: 1 unit = 1/3.2 mph = 0.5 km-ish/h
 
	PROP_SHIP_CARGO_CAPACITY                    = 0x0D, ///< Capacity
 
	PROP_SHIP_RUNNING_COST_FACTOR               = 0x0F, ///< Yearly runningcost
 

	
 
	PROP_AIRCRAFT_COST_FACTOR                   = 0x0B, ///< Purchase cost
 
	PROP_AIRCRAFT_SPEED                         = 0x0C, ///< Max. speed: 1 unit = 8 mph = 12.8 km-ish/h
 
	PROP_AIRCRAFT_RUNNING_COST_FACTOR           = 0x0E, ///< Yearly runningcost
 
};
 

	
 
#endif /* NEWGRF_PROPERTIES_H */
src/rail_cmd.cpp
Show inline comments
 
@@ -1268,7 +1268,7 @@ Vehicle *UpdateTrainPowerProc(Vehicle *v
 
	if (t->IsArticulatedPart()) return NULL;
 

	
 
	const RailVehicleInfo *rvi = RailVehInfo(t->engine_type);
 
	if (GetVehicleProperty(t, 0x0B, rvi->power) != 0) TrainPowerChanged(t->First());
 
	if (GetVehicleProperty(t, PROP_TRAIN_POWER, rvi->power) != 0) TrainPowerChanged(t->First());
 

	
 
	return NULL;
 
}
src/roadveh_cmd.cpp
Show inline comments
 
@@ -288,7 +288,7 @@ CommandCost CmdBuildRoadVeh(TileIndex ti
 
		for (RoadVehicle *u = v; u != NULL; u = u->Next()) {
 
			u->rcache.cached_veh_length = GetRoadVehLength(u);
 
			/* Cargo capacity is zero if and only if the vehicle cannot carry anything */
 
			if (u->cargo_cap != 0) u->cargo_cap = GetVehicleProperty(u, 0x0F, u->cargo_cap);
 
			if (u->cargo_cap != 0) u->cargo_cap = GetVehicleProperty(u, PROP_ROADVEH_CARGO_CAPACITY, u->cargo_cap);
 
			v->InvalidateNewGRFCache();
 
			u->InvalidateNewGRFCache();
 
		}
 
@@ -2054,7 +2054,7 @@ CommandCost CmdRefitRoadVeh(TileIndex ti
 
			 * carry twice as much mail/goods as normal cargo, and four times as
 
			 * many passengers
 
			 */
 
			capacity = GetVehicleProperty(v, 0x0F, e->u.road.capacity);
 
			capacity = GetVehicleProperty(v, PROP_ROADVEH_CARGO_CAPACITY, e->u.road.capacity);
 
			switch (old_cid) {
 
				case CT_PASSENGERS: break;
 
				case CT_MAIL:
src/ship_cmd.cpp
Show inline comments
 
@@ -158,7 +158,7 @@ static void CheckIfShipNeedsService(Vehi
 

	
 
Money Ship::GetRunningCost() const
 
{
 
	return GetVehicleProperty(this, 0x0F, ShipVehInfo(this->engine_type)->running_cost) * _price.ship_running;
 
	return GetVehicleProperty(this, PROP_SHIP_RUNNING_COST_FACTOR, ShipVehInfo(this->engine_type)->running_cost) * _price.ship_running;
 
}
 

	
 
void Ship::OnNewDay()
 
@@ -334,7 +334,7 @@ static bool ShipAccelerate(Vehicle *v)
 
	uint spd;
 
	byte t;
 

	
 
	spd = min(v->cur_speed + 1, GetVehicleProperty(v, 0x0B, v->max_speed));
 
	spd = min(v->cur_speed + 1, GetVehicleProperty(v, PROP_SHIP_SPEED, v->max_speed));
 

	
 
	/* updates statusbar only if speed have changed to save CPU time */
 
	if (spd != v->cur_speed) {
 
@@ -815,7 +815,7 @@ CommandCost CmdBuildShip(TileIndex tile,
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
 
		v->cargo_cap = GetVehicleProperty(v, 0x0D, svi->capacity);
 
		v->cargo_cap = GetVehicleProperty(v, PROP_SHIP_CARGO_CAPACITY, svi->capacity);
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
 
@@ -942,7 +942,7 @@ CommandCost CmdRefitShip(TileIndex tile,
 
	}
 

	
 
	if (capacity == CALLBACK_FAILED) {
 
		capacity = GetVehicleProperty(v, 0x0D, ShipVehInfo(v->engine_type)->capacity);
 
		capacity = GetVehicleProperty(v, PROP_SHIP_CARGO_CAPACITY, ShipVehInfo(v->engine_type)->capacity);
 
	}
 
	_returned_refit_capacity = capacity;
 

	
src/train_cmd.cpp
Show inline comments
 
@@ -107,14 +107,14 @@ void TrainPowerChanged(Train *v)
 
			const RailVehicleInfo *rvi_u = RailVehInfo(u->engine_type);
 

	
 
			if (engine_has_power) {
 
				uint16 power = GetVehicleProperty(u, 0x0B, rvi_u->power);
 
				uint16 power = GetVehicleProperty(u, PROP_TRAIN_POWER, rvi_u->power);
 
				if (power != 0) {
 
					/* Halve power for multiheaded parts */
 
					if (u->IsMultiheaded()) power /= 2;
 

	
 
					total_power += power;
 
					/* Tractive effort in (tonnes * 1000 * 10 =) N */
 
					max_te += (u->tcache.cached_veh_weight * 10000 * GetVehicleProperty(u, 0x1F, rvi_u->tractive_effort)) / 256;
 
					max_te += (u->tcache.cached_veh_weight * 10000 * GetVehicleProperty(u, PROP_TRAIN_TRACTIVE_EFFORT, rvi_u->tractive_effort)) / 256;
 
				}
 
			}
 
		}
 
@@ -151,7 +151,7 @@ static void TrainCargoChanged(Train *v)
 
		/* Vehicle weight is not added for articulated parts. */
 
		if (!u->IsArticulatedPart()) {
 
			/* vehicle weight is the sum of the weight of the vehicle and the weight of its cargo */
 
			vweight += GetVehicleProperty(u, 0x16, RailVehInfo(u->engine_type)->weight);
 
			vweight += GetVehicleProperty(u, PROP_TRAIN_WEIGHT, RailVehInfo(u->engine_type)->weight);
 
		}
 

	
 
		/* powered wagons have extra weight added */
 
@@ -253,7 +253,7 @@ void TrainConsistChanged(Train *v, bool 
 

	
 
	for (Train *u = v; u != NULL; u = u->Next()) {
 
		/* Update user defined data (must be done before other properties) */
 
		u->tcache.user_def_data = GetVehicleProperty(u, 0x25, u->tcache.user_def_data);
 
		u->tcache.user_def_data = GetVehicleProperty(u, PROP_TRAIN_USER_DATA, u->tcache.user_def_data);
 
		v->InvalidateNewGRFCache();
 
		u->InvalidateNewGRFCache();
 
	}
 
@@ -316,14 +316,14 @@ void TrainConsistChanged(Train *v, bool 
 

	
 
			/* max speed is the minimum of the speed limits of all vehicles in the consist */
 
			if ((rvi_u->railveh_type != RAILVEH_WAGON || _settings_game.vehicle.wagon_speed_limits) && !UsesWagonOverride(u)) {
 
				uint16 speed = GetVehicleProperty(u, 0x09, rvi_u->max_speed);
 
				uint16 speed = GetVehicleProperty(u, PROP_TRAIN_SPEED, rvi_u->max_speed);
 
				if (speed != 0) max_speed = min(speed, max_speed);
 
			}
 
		}
 

	
 
		if (e_u->CanCarryCargo() && u->cargo_type == e_u->GetDefaultCargoType() && u->cargo_subtype == 0) {
 
			/* Set cargo capacity if we've not been refitted */
 
			u->cargo_cap = GetVehicleProperty(u, 0x14, rvi_u->capacity);
 
			u->cargo_cap = GetVehicleProperty(u, PROP_TRAIN_CARGO_CAPACITY, rvi_u->capacity);
 
		}
 

	
 
		/* check the vehicle length (callback) */
 
@@ -4491,7 +4491,7 @@ Money Train::GetRunningCost() const
 
	do {
 
		const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
 

	
 
		byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost);
 
		byte cost_factor = GetVehicleProperty(v, PROP_TRAIN_RUNNING_COST_FACTOR, rvi->running_cost);
 
		if (cost_factor == 0) continue;
 

	
 
		/* Halve running cost for multiheaded parts */
0 comments (0 inline, 0 general)