X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FColorFade.cpp;h=55e14fc811d87e2427a4ef0443259a3da996d1da;hb=3aca2860c95bb4d30569a23ab88a5286c3b9b757;hp=ac45a9e6fb8dd6ae887c624d2b6f1616d9a62864;hpb=65158353d1ecbed0032752863c6c4eb96b1a084a;p=l2e.git diff --git a/src/graphics/ColorFade.cpp b/src/graphics/ColorFade.cpp index ac45a9e..55e14fc 100644 --- a/src/graphics/ColorFade.cpp +++ b/src/graphics/ColorFade.cpp @@ -1,10 +1,3 @@ -/* - * ColorFade.cpp - * - * Created on: Oct 7, 2012 - * Author: holy - */ - #include "ColorFade.h" #include "../app/Application.h" @@ -16,8 +9,7 @@ using app::Input; namespace graphics { ColorFade::ColorFade(State *slave, Uint32 color, int duration, bool in, bool interactive) -: ctrl(0) -, slave(slave) +: slave(slave) , blinds(0) , color(color) , duration(duration) @@ -26,12 +18,12 @@ ColorFade::ColorFade(State *slave, Uint32 color, int duration, bool in, bool int , leadInDone(true) , fadeDone(false) , in(in) -, interactive(interactive) { +, interactive(interactive) +, doublePop(false) { } -void ColorFade::OnEnterState(Application &c, SDL_Surface *screen) { - ctrl = &c; +void ColorFade::OnEnterState(SDL_Surface *screen) { if (leadIn > 0) { timer = GraphicsTimers().StartCountdown(leadIn); } else { @@ -40,23 +32,23 @@ void ColorFade::OnEnterState(Application &c, SDL_Surface *screen) { } } -void ColorFade::OnExitState(Application &, SDL_Surface *screen) { +void ColorFade::OnExitState(SDL_Surface *screen) { if (blinds) { SDL_FreeSurface(blinds); blinds = 0; } } -void ColorFade::OnResumeState(Application &ctrl, SDL_Surface *screen) { +void ColorFade::OnResumeState(SDL_Surface *screen) { UpdateBlinds(screen->w, screen->h); } -void ColorFade::OnPauseState(Application &ctrl, SDL_Surface *screen) { +void ColorFade::OnPauseState(SDL_Surface *screen) { } -void ColorFade::Resize(int width, int height) { +void ColorFade::OnResize(int width, int height) { slave->Resize(width, height); UpdateBlinds(width, height); } @@ -94,16 +86,22 @@ void ColorFade::HandleEvents(const Input &input) { if (leadOut > 0) { timer = GraphicsTimers().StartCountdown(leadOut); } else { - ctrl->PopState(); + Ctrl().PopState(); + if (doublePop) { + Ctrl().PopState(); + } } } else { - ctrl->PopState(); + Ctrl().PopState(); + if (doublePop) { + Ctrl().PopState(); + } } } } -void ColorFade::UpdateWorld(float deltaT) { +void ColorFade::UpdateWorld(Uint32 deltaT) { if (interactive) { slave->UpdateWorld(deltaT); }