#include "effect_system.h" #include "game.h" void EffectSystem::tick(double dt) { if (game_.isGameplayPaused()) return; if (screenFade_ != screenFadeDest_) { screenFadeThus_ += dt; if (screenFadeThus_ >= screenFadeLength_) { screenFadeThus_ = screenFadeLength_; } screenFade_ = (screenFadeDest_ - screenFadeStart_) / screenFadeLength_ * screenFadeThus_ + screenFadeStart_; } if (mapFade_ != mapFadeDest_) { mapFadeThus_ += dt; if (mapFadeThus_ >= mapFadeLength_) { mapFadeThus_ = mapFadeLength_; } mapFade_ = (mapFadeDest_ - mapFadeStart_) / mapFadeLength_ * mapFadeThus_ + mapFadeStart_; } if (cameraShaking_) { cameraShakeTimer_.accumulate(dt); while (cameraShakeTimer_.step()) { cameraShakeOn_ = !cameraShakeOn_; } if (cameraShakeOn_) { cameraShakeOffset_.x() = 8; cameraShakeOffset_.y() = 8; } else { cameraShakeOffset_.x() = 0; cameraShakeOffset_.y() = 0; } } if (circleEffect_ != circleEffectDest_) { circleEffectThus_ += dt; if (circleEffectThus_ >= circleEffectLength_) { circleEffectThus_ = circleEffectLength_; } circleEffect_ = (circleEffectDest_ - circleEffectStart_) / circleEffectLength_ * circleEffectThus_ + circleEffectStart_; } } void EffectSystem::fadeScreen(int length, double amount) { screenFadeStart_ = screenFade_; screenFadeDest_ = amount; screenFadeLength_ = length; screenFadeThus_ = 0; } void EffectSystem::fadeMap(int length, double amount) { mapFadeStart_ = mapFade_; mapFadeDest_ = amount; mapFadeLength_ = length; mapFadeThus_ = 0; } void EffectSystem::shakeCamera(int period) { cameraShaking_ = true; cameraShakeOffset_ = { 0, 0 }; cameraShakeOn_ = false; cameraShakeTimer_ = Timer(period); } void EffectSystem::stopShakingCamera() { cameraShaking_ = false; cameraShakeOffset_ = { 0, 0 }; } void EffectSystem::circleTransition(int length, double amount) { circleEffectStart_ = circleEffect_; circleEffectDest_ = amount; circleEffectLength_ = length; circleEffectThus_ = 0; }