(svn r21234) -Codechange: Make Train::UpdateVisualEffect work for all vehicle types (Hirundo)

This commit is contained in:
rubidium 2010-11-18 14:07:48 +00:00
parent f4689f4301
commit 797435f05d

View File

@ -148,19 +148,25 @@ void Train::UpdateVisualEffect(bool allow_power_change)
this->vcache.cached_vis_effect = 0; this->vcache.cached_vis_effect = 0;
const Engine *e = Engine::Get(this->engine_type); const Engine *e = Engine::Get(this->engine_type);
if (e->u.rail.visual_effect != 0) { if (this->type == VEH_TRAIN) {
this->vcache.cached_vis_effect = e->u.rail.visual_effect; if (e->u.rail.visual_effect != 0) {
} else { this->vcache.cached_vis_effect = e->u.rail.visual_effect;
if (this->IsWagon() || this->IsArticulatedPart()) {
/* Wagons and articulated parts have no effect by default */
SetBit(this->vcache.cached_vis_effect, VE_DISABLE_EFFECT);
} else if (e->u.rail.engclass == 0) {
/* Steam is offset by -4 units */
SB(this->vcache.cached_vis_effect, VE_OFFSET_START, VE_OFFSET_COUNT, VE_OFFSET_CENTRE - 4);
} else { } else {
/* Diesel fumes and sparks come from the centre */ Train *t = Train::From(this);
SB(this->vcache.cached_vis_effect, VE_OFFSET_START, VE_OFFSET_COUNT, VE_OFFSET_CENTRE); if (t->IsWagon() || t->IsArticulatedPart()) {
/* Wagons and articulated parts have no effect by default */
SetBit(this->vcache.cached_vis_effect, VE_DISABLE_EFFECT);
} else if (e->u.rail.engclass == 0) {
/* Steam is offset by -4 units */
SB(this->vcache.cached_vis_effect, VE_OFFSET_START, VE_OFFSET_COUNT, VE_OFFSET_CENTRE - 4);
} else {
/* Diesel fumes and sparks come from the centre */
SB(this->vcache.cached_vis_effect, VE_OFFSET_START, VE_OFFSET_COUNT, VE_OFFSET_CENTRE);
}
} }
} else {
/* Non-trains do not have a visual effect by default. */
SetBit(this->vcache.cached_vis_effect, VE_DISABLE_EFFECT);
} }
/* Check powered wagon / visual effect callback */ /* Check powered wagon / visual effect callback */