(svn r924) Use RailVehInfo() instead of &_rail_vehicle_info[]
This commit is contained in:
		
							
								
								
									
										26
									
								
								train_cmd.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								train_cmd.c
									
									
									
									
									
								
							@@ -41,7 +41,7 @@ void UpdateTrainAcceleration(Vehicle *v)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// compute stuff like max speed, power, and weight.
 | 
						// compute stuff like max speed, power, and weight.
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
		const RailVehicleInfo *rvi = &_rail_vehicle_info[u->engine_type];
 | 
							const RailVehicleInfo *rvi = RailVehInfo(u->engine_type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// power is sum of the power for all engines
 | 
							// power is sum of the power for all engines
 | 
				
			||||||
		power += rvi->power;
 | 
							power += rvi->power;
 | 
				
			||||||
@@ -96,7 +96,7 @@ static int GetRealisticAcceleration(Vehicle *v)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// compute inclination force and number of curves.
 | 
						// compute inclination force and number of curves.
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
		const RailVehicleInfo *rvi = &_rail_vehicle_info[u->engine_type];
 | 
							const RailVehicleInfo *rvi = RailVehInfo(u->engine_type);
 | 
				
			||||||
		uint mass = rvi->weight + ((_cargoc.weights[u->cargo_type] * u->cargo_count) >> 4);
 | 
							uint mass = rvi->weight + ((_cargoc.weights[u->cargo_type] * u->cargo_count) >> 4);
 | 
				
			||||||
		if (rvi->power) emass += mass;
 | 
							if (rvi->power) emass += mass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -169,7 +169,7 @@ int GetTrainImage(Vehicle *v, byte direction)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void DrawTrainEngine(int x, int y, int engine, uint32 image_ormod)
 | 
					void DrawTrainEngine(int x, int y, int engine, uint32 image_ormod)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const RailVehicleInfo *rvi = &_rail_vehicle_info[engine];
 | 
						const RailVehicleInfo *rvi = RailVehInfo(engine);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int img = rvi->image_index;
 | 
						int img = rvi->image_index;
 | 
				
			||||||
	uint32 image = 0;
 | 
						uint32 image = 0;
 | 
				
			||||||
@@ -199,7 +199,7 @@ void DrawTrainEngine(int x, int y, int engine, uint32 image_ormod)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void DrawTrainEngineInfo(int engine, int x, int y, int maxw)
 | 
					void DrawTrainEngineInfo(int engine, int x, int y, int maxw)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const RailVehicleInfo *rvi = &_rail_vehicle_info[engine];
 | 
						const RailVehicleInfo *rvi = RailVehInfo(engine);
 | 
				
			||||||
	int cap;
 | 
						int cap;
 | 
				
			||||||
	uint multihead = ((rvi->flags & RVI_MULTIHEAD) ? 1 : 0);
 | 
						uint multihead = ((rvi->flags & RVI_MULTIHEAD) ? 1 : 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -229,7 +229,7 @@ static int32 CmdBuildRailWagon(uint engine, uint tile, uint32 flags)
 | 
				
			|||||||
	const Engine *e;
 | 
						const Engine *e;
 | 
				
			||||||
	int x,y;
 | 
						int x,y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rvi = &_rail_vehicle_info[engine];
 | 
						rvi = RailVehInfo(engine);
 | 
				
			||||||
	value = (rvi->base_cost * _price.build_railwagon) >> 8;
 | 
						value = (rvi->base_cost * _price.build_railwagon) >> 8;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(flags & DC_QUERY_COST)) {
 | 
						if (!(flags & DC_QUERY_COST)) {
 | 
				
			||||||
@@ -385,7 +385,7 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 | 
				
			|||||||
	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 | 
						SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tile = TILE_FROM_XY(x,y);
 | 
						tile = TILE_FROM_XY(x,y);
 | 
				
			||||||
	rvi = &_rail_vehicle_info[p1];
 | 
						rvi = RailVehInfo(p1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rvi->flags & RVI_WAGON) {
 | 
						if (rvi->flags & RVI_WAGON) {
 | 
				
			||||||
		return CmdBuildRailWagon(p1, tile, flags);
 | 
							return CmdBuildRailWagon(p1, tile, flags);
 | 
				
			||||||
@@ -596,7 +596,7 @@ int32 CmdMoveRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 | 
				
			|||||||
	src = &_vehicles[p1 & 0xffff];
 | 
						src = &_vehicles[p1 & 0xffff];
 | 
				
			||||||
	if (src->type != VEH_Train) return CMD_ERROR;
 | 
						if (src->type != VEH_Train) return CMD_ERROR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	is_loco = !(_rail_vehicle_info[src->engine_type].flags & RVI_WAGON)
 | 
						is_loco = !(RailVehInfo(src->engine_type)->flags & RVI_WAGON)
 | 
				
			||||||
	          && is_firsthead_sprite(src->spritenum);
 | 
						          && is_firsthead_sprite(src->spritenum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// if nothing is selected as destination, try and find a matching vehicle to drag to.
 | 
						// if nothing is selected as destination, try and find a matching vehicle to drag to.
 | 
				
			||||||
@@ -1041,7 +1041,7 @@ int32 CmdRefitRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 | 
				
			|||||||
		/* XXX: We also refit all the attached wagons en-masse if they
 | 
							/* XXX: We also refit all the attached wagons en-masse if they
 | 
				
			||||||
		 * can be refitted. This is how TTDPatch does it.  TODO: Have
 | 
							 * can be refitted. This is how TTDPatch does it.  TODO: Have
 | 
				
			||||||
		 * some nice [Refit] button near each wagon. --pasky */
 | 
							 * some nice [Refit] button near each wagon. --pasky */
 | 
				
			||||||
		if ((!(_rail_vehicle_info[v->engine_type].flags & RVI_WAGON)
 | 
							if ((!(RailVehInfo(v->engine_type)->flags & RVI_WAGON)
 | 
				
			||||||
		     || (_engine_refit_masks[v->engine_type] & (1 << p2)))
 | 
							     || (_engine_refit_masks[v->engine_type] & (1 << p2)))
 | 
				
			||||||
		    && (byte) p2 != v->cargo_type && v->cargo_cap != 0) {
 | 
							    && (byte) p2 != v->cargo_type && v->cargo_cap != 0) {
 | 
				
			||||||
			cost += (_price.build_railvehicle >> 8);
 | 
								cost += (_price.build_railvehicle >> 8);
 | 
				
			||||||
@@ -1206,12 +1206,12 @@ static void HandleLocomotiveSmokeCloud(Vehicle *v)
 | 
				
			|||||||
		int engtype = v->engine_type;
 | 
							int engtype = v->engine_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// no smoke?
 | 
							// no smoke?
 | 
				
			||||||
		if (_rail_vehicle_info[engtype].flags & 2
 | 
							if (RailVehInfo(engtype)->flags & 2
 | 
				
			||||||
		    || _engines[engtype].railtype > 0
 | 
							    || _engines[engtype].railtype > 0
 | 
				
			||||||
		    || (v->vehstatus&VS_HIDDEN) || (v->u.rail.track & 0xC0) )
 | 
							    || (v->vehstatus&VS_HIDDEN) || (v->u.rail.track & 0xC0) )
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch (_rail_vehicle_info[engtype].engclass) {
 | 
							switch (RailVehInfo(engtype)->engclass) {
 | 
				
			||||||
		case 0:
 | 
							case 0:
 | 
				
			||||||
			// steam smoke.
 | 
								// steam smoke.
 | 
				
			||||||
			if ( (v->tick_counter&0xF) == 0 && !IsTrainDepotTile(v->tile) && !IsTunnelTile(v->tile)) {
 | 
								if ( (v->tick_counter&0xF) == 0 && !IsTrainDepotTile(v->tile) && !IsTunnelTile(v->tile)) {
 | 
				
			||||||
@@ -1248,7 +1248,7 @@ static void TrainPlayLeaveStationSound(Vehicle *v)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	switch (_engines[engtype].railtype) {
 | 
						switch (_engines[engtype].railtype) {
 | 
				
			||||||
		case 0:
 | 
							case 0:
 | 
				
			||||||
			SndPlayVehicleFx(sfx[_rail_vehicle_info[engtype].engclass], v);
 | 
								SndPlayVehicleFx(sfx[RailVehInfo(engtype)->engclass], v);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 1:
 | 
							case 1:
 | 
				
			||||||
			SndPlayVehicleFx(SND_47_MAGLEV_2, v);
 | 
								SndPlayVehicleFx(SND_47_MAGLEV_2, v);
 | 
				
			||||||
@@ -2541,7 +2541,7 @@ void TrainEnterDepot(Vehicle *v, uint tile)
 | 
				
			|||||||
	v->load_unload_time_rem = 0;
 | 
						v->load_unload_time_rem = 0;
 | 
				
			||||||
	v->cur_speed = 0;
 | 
						v->cur_speed = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MaybeRenewVehicle(v, EstimateTrainCost(&_rail_vehicle_info[v->engine_type]));
 | 
						MaybeRenewVehicle(v, EstimateTrainCost(RailVehInfo(v->engine_type)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
 | 
						TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2621,7 +2621,7 @@ int32 GetTrainRunningCost(Vehicle *v)
 | 
				
			|||||||
	int32 cost = 0;
 | 
						int32 cost = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
		const RailVehicleInfo *rvi = &_rail_vehicle_info[v->engine_type];
 | 
							const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
 | 
				
			||||||
		if (rvi->running_cost_base)
 | 
							if (rvi->running_cost_base)
 | 
				
			||||||
			cost += rvi->running_cost_base * _price.running_rail[rvi->engclass];
 | 
								cost += rvi->running_cost_base * _price.running_rail[rvi->engclass];
 | 
				
			||||||
	} while ( (v=v->next) != NULL );
 | 
						} while ( (v=v->next) != NULL );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -185,7 +185,7 @@ static void NewRailVehicleWndProc(Window *w, WindowEvent *e)
 | 
				
			|||||||
			int sel_eng;
 | 
								int sel_eng;
 | 
				
			||||||
			sel_eng = WP(w,buildtrain_d).sel_engine;
 | 
								sel_eng = WP(w,buildtrain_d).sel_engine;
 | 
				
			||||||
			if (sel_eng != -1)
 | 
								if (sel_eng != -1)
 | 
				
			||||||
				DoCommandP(w->window_number, sel_eng, 0, (_rail_vehicle_info[sel_eng].flags & RVI_WAGON) ? CcBuildWagon : CcBuildLoco, CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
 | 
									DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->flags & RVI_WAGON) ? CcBuildWagon : CcBuildLoco, CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
 | 
				
			||||||
		}	break;
 | 
							}	break;
 | 
				
			||||||
		case 6:
 | 
							case 6:
 | 
				
			||||||
			WP(w,buildtrain_d).rename_engine = WP(w,buildtrain_d).sel_engine;
 | 
								WP(w,buildtrain_d).rename_engine = WP(w,buildtrain_d).sel_engine;
 | 
				
			||||||
@@ -912,9 +912,7 @@ static void TrainDetailsCargoTab(Vehicle *v, int x, int y)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void TrainDetailsInfoTab(Vehicle *v, int x, int y)
 | 
					static void TrainDetailsInfoTab(Vehicle *v, int x, int y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const RailVehicleInfo *rvi;
 | 
						const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	rvi = &_rail_vehicle_info[v->engine_type];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(rvi->flags & RVI_WAGON)) {
 | 
						if (!(rvi->flags & RVI_WAGON)) {
 | 
				
			||||||
		SetDParam(0, GetCustomEngineName(v->engine_type));
 | 
							SetDParam(0, GetCustomEngineName(v->engine_type));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user