diff options
author | peter1138 <peter1138@openttd.org> | 2006-05-01 12:00:14 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-05-01 12:00:14 +0000 |
commit | 6d1dc477f620fdef35782fdb641461a6a916e389 (patch) | |
tree | 58a2cd4bbd3fe18c6a1b1b8db30b962881da2437 | |
parent | f0ea2b05517e9966c218174e9338da607d3212bd (diff) | |
download | openttd-6d1dc477f620fdef35782fdb641461a6a916e389.tar.xz |
(svn r4644) - NewGRF: support for variable 0x44, aircraft information. (mart3p)
-rw-r--r-- | newgrf_engine.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/newgrf_engine.c b/newgrf_engine.c index 5fe555b5a..3b486a3ab 100644 --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -391,6 +391,15 @@ static byte MapAircraftMovementAction(const Vehicle *v) } +/* TTDP airport types. Used to map our types to TTDPatch's */ +enum { + ATP_TTDP_SMALL, + ATP_TTDP_LARGE, + ATP_TTDP_HELIPORT, + ATP_TTDP_OILRIG, +}; + + /* Vehicle Resolver Functions */ static inline const Vehicle *GRV(const ResolverObject *object) { @@ -468,6 +477,27 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by case 0x43: /* Player information */ return v->owner; + case 0x44: /* Aircraft information */ + if (v->type != VEH_Aircraft) return -1; + + { + const Vehicle *w = v->next; + uint16 altitude = v->z_pos - w->z_pos; /* Aircraft height - shadow height */ + byte airporttype; + + switch (GetStation(v->u.air.targetairport)->airport_type) { + case AT_SMALL: airporttype = ATP_TTDP_SMALL; break; + case AT_METROPOLITAN: + case AT_INTERNATIONAL: + case AT_LARGE: airporttype = ATP_TTDP_LARGE; break; + case AT_HELIPORT: airporttype = ATP_TTDP_HELIPORT; break; + case AT_OILRIG: airporttype = ATP_TTDP_OILRIG; break; + default: airporttype = ATP_TTDP_LARGE; break; + } + + return (altitude << 8) | airporttype; + } + case 0x46: /* Motion counter */ return 0; } |