diff options
author | peter1138 <peter1138@openttd.org> | 2007-04-20 21:21:47 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-04-20 21:21:47 +0000 |
commit | 9861db859661c0ee612acd0222d538d43408fdd7 (patch) | |
tree | 774cf9c0bc8edefa4aa277e6b907603dbea345f6 /src/newgrf_engine.cpp | |
parent | fa22eed316b13d7cbc6eb5b16fd88c2e17cf6a19 (diff) | |
download | openttd-9861db859661c0ee612acd0222d538d43408fdd7.tar.xz |
(svn r9702) -Codechange: Add livery support to newgrf vehicle var 43
Diffstat (limited to 'src/newgrf_engine.cpp')
-rw-r--r-- | src/newgrf_engine.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 14802dfd6..48c92495a 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -468,6 +468,22 @@ static uint32 GetGRFParameter(EngineID engine_type, byte parameter) } +static uint8 LiveryHelper(EngineID engine, const Vehicle *v) +{ + const Livery *l; + + if (v == NULL) { + l = GetEngineLivery(engine, _current_player, INVALID_ENGINE, NULL); + } else if (v->type == VEH_TRAIN) { + l = GetEngineLivery((v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ? v->u.rail.first_engine : v->engine_type, v->owner, v->u.rail.first_engine, v); + } else { + l = GetEngineLivery(v->engine_type, v->owner, INVALID_ENGINE, v); + } + + return l->colour1 + l->colour2 * 16; +} + + static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) { const Vehicle *v = GRV(object); @@ -475,7 +491,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by if (v == NULL) { /* Vehicle does not exist, so we're in a purchase list */ switch (variable) { - case 0x43: return _current_player; // Owner information + case 0x43: return _current_player | (LiveryHelper(object->u.vehicle.self_type, NULL) << 24); // Owner information case 0x46: return 0; // Motion counter case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; // Vehicle Type Info case 0xC4: return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; // Build year @@ -544,7 +560,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by } case 0x43: // Player information - return v->owner; + return v->owner | (GetPlayer(v->owner)->is_ai ? 0x10000 : 0) | (LiveryHelper(v->engine_type, v) << 24); case 0x44: // Aircraft information if (v->type != VEH_AIRCRAFT) return UINT_MAX; |