]> git.localhorst.tv Git - l2e.git/blobdiff - src/graphics/ColorFade.h
added color fading state
[l2e.git] / src / graphics / ColorFade.h
diff --git a/src/graphics/ColorFade.h b/src/graphics/ColorFade.h
new file mode 100644 (file)
index 0000000..66d8192
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * ColorFade.h
+ *
+ *  Created on: Oct 7, 2012
+ *      Author: holy
+ */
+
+#ifndef GRAPHICS_COLORFADE_H_
+#define GRAPHICS_COLORFADE_H_
+
+#include "../app/State.h"
+#include "../app/Timer.h"
+
+#include <SDL.h>
+
+namespace graphics {
+
+class ColorFade
+: public app::State {
+
+public:
+       ColorFade(app::State *slave, Uint32 color, int duration, bool in = false, bool interactive = false);
+       virtual ~ColorFade() { }
+
+public:
+       virtual void EnterState(app::Application &ctrl, SDL_Surface *screen);
+       virtual void ExitState(app::Application &ctrl, SDL_Surface *screen);
+       virtual void ResumeState(app::Application &ctrl, SDL_Surface *screen);
+       virtual void PauseState(app::Application &ctrl, SDL_Surface *screen);
+
+       virtual void Resize(int width, int height);
+
+       virtual void HandleEvents(const app::Input &);
+       virtual void UpdateWorld(float deltaT);
+       virtual void Render(SDL_Surface *);
+
+private:
+       void UpdateBlinds(int width, int height);
+       Uint8 GetAlpha() const;
+
+private:
+       app::Timer<Uint32> timer;
+       app::Application *ctrl;
+       app::State *slave;
+       SDL_Surface *blinds;
+       Uint32 color;
+       int duration;
+       bool in;
+       bool interactive;
+
+};
+
+}
+
+#endif /* GRAPHICS_COLORFADE_H_ */