diff options
author | yexo <yexo@openttd.org> | 2009-06-21 10:11:04 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2009-06-21 10:11:04 +0000 |
commit | 548a605263f7764602d6ee7fc9ca3856bf00918b (patch) | |
tree | 6eabc072c7905e2561c83ddfb8cc0efd51147c75 /src/newgrf_engine.cpp | |
parent | 41c8baa7dcf38e85b1ebbee9de77d5b5a31b6622 (diff) | |
download | openttd-548a605263f7764602d6ee7fc9ca3856bf00918b.tar.xz |
(svn r16613) -Fix [NewGRF]: some of the var action 2 80+ variables contained wrong results due to OpenTTD codechanges
Diffstat (limited to 'src/newgrf_engine.cpp')
-rw-r--r-- | src/newgrf_engine.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 1637aef46..89da896ad 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -130,10 +130,18 @@ uint32 GetEngineGRFID(EngineID engine) static int MapOldSubType(const Vehicle *v) { - if (v->type != VEH_TRAIN) return v->subtype; - if (IsTrainEngine(v)) return 0; - if (IsFreeWagon(v)) return 4; - return 2; + switch (v->type) { + case VEH_TRAIN: + if (IsTrainEngine(v)) return 0; + if (IsFreeWagon(v)) return 4; + return 2; + case VEH_ROAD: + case VEH_SHIP: return 0; + case VEH_AIRCRAFT: + case VEH_DISASTER: return v->subtype; + case VEH_EFFECT: return v->subtype << 1; + default: NOT_REACHED(); + } } @@ -687,12 +695,12 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by /* General vehicle properties */ switch (variable - 0x80) { - case 0x00: return v->type; + case 0x00: return v->type + 2; case 0x01: return MapOldSubType(v); case 0x04: return v->index; case 0x05: return GB(v->index, 8, 8); - case 0x0A: return v->current_order.Pack(); - case 0x0B: return GB(v->current_order.Pack(), 8, 8); + case 0x0A: return v->current_order.MapOldOrder(); + case 0x0B: return v->current_order.GetDestination(); case 0x0C: return v->GetNumOrders(); case 0x0D: return v->cur_order_index; case 0x10: return v->load_unload_time_rem; |