]> git.localhorst.tv Git - l2e.git/blob - ColorFade.h
6505be186bc1179768722e0ec076a90247777e01
[l2e.git] / ColorFade.h
1 #ifndef GRAPHICS_COLORFADE_H_
2 #define GRAPHICS_COLORFADE_H_
3
4 #include "../app/State.h"
5 #include "../app/Timer.h"
6
7 #include <SDL.h>
8
9 namespace graphics {
10
11 class ColorFade
12 : public app::State {
13
14 public:
15         ColorFade(
16                         app::State *slave,
17                         Uint32 color,
18                         int duration,
19                         bool in = false,
20                         bool interactive = false);
21         virtual ~ColorFade() { }
22
23 public:
24         void SetLeadInTime(int ms) {
25                 leadIn = ms;
26                 if (ms > 0) leadInDone = false;
27         }
28         void SetLeadOutTime(int ms) { leadOut = ms; }
29         void SetDoublePop(bool b = true) { doublePop = b; }
30
31 public:
32         virtual void HandleEvents(const app::Input &);
33         virtual void UpdateWorld(Uint32 deltaT);
34         virtual void Render(SDL_Surface *);
35
36 private:
37         virtual void OnEnterState(SDL_Surface *screen);
38         virtual void OnExitState(SDL_Surface *screen);
39         virtual void OnResumeState(SDL_Surface *screen);
40         virtual void OnPauseState(SDL_Surface *screen);
41
42         virtual void OnResize(int width, int height);
43
44 private:
45         void UpdateBlinds(int width, int height);
46         Uint8 GetAlpha() const;
47
48 private:
49         app::Timer<Uint32> timer;
50         app::State *slave;
51         SDL_Surface *blinds;
52         Uint32 color;
53         int duration;
54         int leadIn;
55         int leadOut;
56         bool leadInDone;
57         bool fadeDone;
58         bool in;
59         bool interactive;
60         bool doublePop;
61
62 };
63
64 }
65
66 #endif