Changeset - r14292:0a897b68b658
[Not reviewed]
master
0 2 0
rubidium - 14 years ago 2010-01-17 23:03:43
rubidium@openttd.org
(svn r18854) -Codechange [FS#3539]: unconflict acceleration type as 'status' and rail property (Terhken)
2 files changed with 11 insertions and 11 deletions:
0 comments (0 inline, 0 general)
src/train.h
Show inline comments
 
@@ -93,10 +93,10 @@ struct TrainCache {
 
	EngineID first_engine;  ///< cached EngineID of the front vehicle. INVALID_ENGINE for the front vehicle itself.
 
};
 

	
 
/** What type of acceleration should we do? */
 
enum AccelType {
 
	AM_ACCEL, ///< We want to go faster, if possible ofcourse
 
	AM_BRAKE  ///< We want to stop
 
/** What is the status of our acceleration? */
 
enum AccelStatus {
 
	AS_ACCEL, ///< We want to go faster, if possible ofcourse
 
	AS_BRAKE  ///< We want to stop
 
};
 

	
 
/**
 
@@ -444,9 +444,9 @@ protected: /* These functions should not
 
	 * Checks the current acceleration status of this vehicle.
 
	 * @return Acceleration status.
 
	 */
 
	FORCEINLINE AccelType GetAccelerationStatus() const
 
	FORCEINLINE AccelStatus GetAccelerationStatus() const
 
	{
 
		return (this->vehstatus & VS_STOPPED) || HasBit(this->flags, VRF_REVERSING) || HasBit(this->flags, VRF_TRAIN_STUCK) ? AM_BRAKE : AM_ACCEL;
 
		return (this->vehstatus & VS_STOPPED) || HasBit(this->flags, VRF_REVERSING) || HasBit(this->flags, VRF_TRAIN_STUCK) ? AS_BRAKE : AS_ACCEL;
 
	}
 

	
 
	/**
src/train_cmd.cpp
Show inline comments
 
@@ -527,7 +527,7 @@ int Train::GetAcceleration() const
 
	resistance *= 4; //[N]
 

	
 
	/* This value allows to know if the vehicle is accelerating or braking. */
 
	AccelType mode = this->GetAccelerationStatus();
 
	AccelStatus mode = this->GetAccelerationStatus();
 

	
 
	const int max_te = this->tcache.cached_max_te; // [N]
 
	int force;
 
@@ -536,17 +536,17 @@ int Train::GetAcceleration() const
 
			force = power / speed; //[N]
 
			force *= 22;
 
			force /= 10;
 
			if (mode == AM_ACCEL && force > max_te) force = max_te;
 
			if (mode == AS_ACCEL && force > max_te) force = max_te;
 
		} else {
 
			force = power / 25;
 
		}
 
	} else {
 
		/* "kickoff" acceleration */
 
		force = (mode == AM_ACCEL && !maglev) ? min(max_te, power) : power;
 
		force = (mode == AS_ACCEL && !maglev) ? min(max_te, power) : power;
 
		force = max(force, (mass * 8) + resistance);
 
	}
 

	
 
	if (mode == AM_ACCEL) {
 
	if (mode == AS_ACCEL) {
 
		return (force - resistance) / (mass * 2);
 
	} else {
 
		return min(-force - resistance, -10000) / mass;
 
@@ -2941,7 +2941,7 @@ int Train::UpdateSpeed()
 

	
 
	switch (_settings_game.vehicle.train_acceleration_model) {
 
		default: NOT_REACHED();
 
		case TAM_ORIGINAL: accel = this->acceleration * (this->GetAccelerationStatus() == AM_BRAKE ? -4 : 2); break;
 
		case TAM_ORIGINAL: accel = this->acceleration * (this->GetAccelerationStatus() == AS_BRAKE ? -4 : 2); break;
 
		case TAM_REALISTIC:
 
			this->max_speed = this->GetCurrentMaxSpeed();
 
			accel = this->GetAcceleration();
0 comments (0 inline, 0 general)