#include "mirror_system.h" #include "game.h" #include "transform_system.h" #include "animation_system.h" #include "vector.h" #include "sprite.h" void MirrorSystem::tick(double dt) { for (int spriteId : game_.getSprites()) { Sprite& sprite = game_.getSprite(spriteId); if (!sprite.paused) { switch (sprite.mirrorType) { case MirrorType::None: break; case MirrorType::Vertical: { Sprite& mirroredSprite = game_.getSprite(sprite.mirroredSpriteId); vec2i mirroredLoc = mirroredSprite.loc; mirroredLoc.y() = 2 * sprite.mirrorAxis - mirroredLoc.y(); game_.getSystem().moveSprite(spriteId, mirroredLoc); game_.getSystem().setSpriteAnimation(spriteId, mirroredSprite.animationName); game_.getSystem().setSpriteDirection(spriteId, directionMirroredVertically(mirroredSprite.dir)); break; } } } } }