- else if (element == EL_SP_BUG || element == EL_SP_BUG_ACTIVE)
- CheckBuggyBase(x, y);
- else if (element == EL_TRAP_INACTIVE || element == EL_TRAP_ACTIVE)
- CheckTrap(x, y);
- else if (element == EL_SP_TERMINAL)
- DrawGraphicAnimation(x, y, GFX2_SP_TERMINAL, 7, 12, ANIM_NORMAL);
- else if (element == EL_SP_TERMINAL_ACTIVE)
- DrawGraphicAnimation(x, y, GFX2_SP_TERMINAL_ACTIVE, 7, 4, ANIM_NORMAL);
- else if (IS_BELT(element))
- DrawBeltAnimation(x, y, element);
- else if (element == EL_SWITCHGATE_OPENING)
- OpenSwitchgate(x, y);
- else if (element == EL_SWITCHGATE_CLOSING)
- CloseSwitchgate(x, y);
- else if (element == EL_TIMEGATE_OPENING)
- OpenTimegate(x, y);
- else if (element == EL_TIMEGATE_CLOSING)
- CloseTimegate(x, y);
- else if (element == EL_EXTRA_TIME)
- DrawGraphicAnimation(x, y, GFX_EXTRA_TIME, 6, 4, ANIM_NORMAL);
- else if (element == EL_SHIELD_PASSIVE)
- {
- DrawGraphicAnimation(x, y, GFX_SHIELD_PASSIVE, 6, 4, ANIM_NORMAL);
- if (!(FrameCounter % 4))
- PlaySoundLevel(x, y, SND_SHIELD_PASSIVE_ACTIVATED);
- }
- else if (element == EL_SHIELD_ACTIVE)
- {
- DrawGraphicAnimation(x, y, GFX_SHIELD_ACTIVE, 6, 4, ANIM_NORMAL);
- if (!(FrameCounter % 4))
- PlaySoundLevel(x, y, SND_SHIELD_ACTIVE_ACTIVATED);
- }
+ else if (IS_AUTO_CHANGING(element))
+ ChangeElement(x, y);
+ else if (element == EL_EXPLOSION)
+ ; /* drawing of correct explosion animation is handled separately */
+ else if (IS_ANIMATED(graphic))
+ DrawLevelGraphicAnimationIfNeeded(x, y, graphic);
+
+ if (IS_BELT_ACTIVE(element))
+ PlaySoundLevelAction(x, y, ACTION_ACTIVE);