mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r9803) -Feature(tte): support for "curvature info", Action 2 for train, variable 45 (mart3p).
This commit is contained in:
parent
feadd86819
commit
b46e37774d
|
@ -589,6 +589,25 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||||
return (altitude << 8) | airporttype;
|
return (altitude << 8) | airporttype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 0x45: { // Curvature info
|
||||||
|
/* Format: xxxTxBxF
|
||||||
|
* F - previous wagon to current wagon, 0 if vehicle is first
|
||||||
|
* B - current wagon to next wagon, 0 if wagon is last
|
||||||
|
* T - previous wagon to next wagon, 0 in an S-bend
|
||||||
|
*/
|
||||||
|
if (v->type != VEH_TRAIN) return 0;
|
||||||
|
|
||||||
|
const Vehicle *u_p = GetPrevVehicleInChain(v);
|
||||||
|
const Vehicle *u_n = v->next;
|
||||||
|
DirDiff f = (u_p == NULL) ? DIRDIFF_SAME : DirDifference(u_p->direction, v->direction);
|
||||||
|
DirDiff b = (u_n == NULL) ? DIRDIFF_SAME : DirDifference(v->direction, u_n->direction);
|
||||||
|
DirDiff t = ChangeDirDiff(f, b);
|
||||||
|
|
||||||
|
return ((t > DIRDIFF_REVERSE ? t | 8 : t) << 16) |
|
||||||
|
((b > DIRDIFF_REVERSE ? b | 8 : b) << 8) |
|
||||||
|
( f > DIRDIFF_REVERSE ? f | 8 : f);
|
||||||
|
}
|
||||||
|
|
||||||
case 0x46: // Motion counter
|
case 0x46: // Motion counter
|
||||||
return v->motion_counter;
|
return v->motion_counter;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue