From ce0628c5ad96e094db12a67d4e98b445fa873ad3 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 14 Feb 2021 16:13:08 -0500 Subject: Added map fadeouts Screen fadeouts and map fadeouts are now handled by the effect system. --- src/effect_system.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/effect_system.h (limited to 'src/effect_system.h') diff --git a/src/effect_system.h b/src/effect_system.h new file mode 100644 index 0000000..2cdcb10 --- /dev/null +++ b/src/effect_system.h @@ -0,0 +1,60 @@ +#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 */ -- cgit 1.4.1