#ifndef EFFECT_SYSTEM_H_0B497B39 #define EFFECT_SYSTEM_H_0B497B39 #include "system.h" class Game; class EffectSystem : public System { public: static constexpr SystemKey Key = SystemKey::Effect; explicit EffectSystem(Game& game) : game_(game) {} void tick(double dt) override; /* Commands */ // Fades the entire screen in or out // - length is in milliseconds // - amount is [0,1] void fadeScreen(int length, double amount); // Fades just the map, leaving the sprites, messages, etc unfaded. // - length is in milliseconds // - amount is [0,1] void fadeMap(int length, double amount); /* Information */ bool isScreenFaded() const { return screenFade_ > 0.0; } double getScreenFadeProgress() const { return screenFade_; } bool isScreenFadeComplete() const { return screenFade_ == screenFadeDest_; } bool isMapFaded() const { return mapFade_ > 0.0; } double getMapFadeProgress() const { return mapFade_; } bool isMapFadeComplete() const { return mapFade_ == mapFadeDest_; } private: Game& game_; double screenFade_ = 0.0; double screenFadeDest_ = 0.0; double screenFadeStart_ = 0.0; double screenFadeLength_ = 0; double screenFadeThus_ = 0; double mapFade_ = 0.0; double mapFadeDest_ = 0.0; double mapFadeStart_ = 0.0; double mapFadeLength_ = 0.0; double mapFadeThus_ = 0.0; }; #endif /* end of include guard: EFFECT_SYSTEM_H_0B497B39 */