diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index 40252ed2..92b46ba7 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -111,6 +111,7 @@ void Graphics::init() tempBuffer = NULL; tl = point(); towerbuffer = NULL; + towerbuffer_lerp = NULL; trinketr = 0; trinketg = 0; trinketb = 0; @@ -1957,7 +1958,9 @@ void Graphics::drawbackground( int t ) } break; case 3: //Warp zone (horizontal) - BlitSurfaceStandard(towerbuffer, NULL, backBuffer, NULL); + BlitSurfaceStandard(towerbuffer, NULL, towerbuffer_lerp, NULL); + ScrollSurface(towerbuffer_lerp, lerp(0, -3), 0); + BlitSurfaceStandard(towerbuffer_lerp, NULL, backBuffer, NULL); break; case 4: //Warp zone (vertical) backoffset+=3; diff --git a/desktop_version/src/Graphics.h b/desktop_version/src/Graphics.h index c21a18af..0874a310 100644 --- a/desktop_version/src/Graphics.h +++ b/desktop_version/src/Graphics.h @@ -233,6 +233,7 @@ public: Screen* screenbuffer; SDL_Surface* menubuffer; SDL_Surface* towerbuffer; + SDL_Surface* towerbuffer_lerp; SDL_Surface* foregroundBuffer; SDL_Surface* tempBuffer; diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index f19a3139..ed9d4e58 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -193,6 +193,8 @@ int main(int argc, char *argv[]) graphics.towerbuffer = SDL_CreateRGBSurface(SDL_SWSURFACE ,320 ,240 ,fmt->BitsPerPixel,fmt->Rmask,fmt->Gmask,fmt->Bmask,fmt->Amask ); SDL_SetSurfaceBlendMode(graphics.towerbuffer, SDL_BLENDMODE_NONE); + graphics.towerbuffer_lerp = SDL_CreateRGBSurface(SDL_SWSURFACE, 320, 240, fmt->BitsPerPixel, fmt->Rmask, fmt->Gmask, fmt->Bmask, fmt->Amask); + SDL_SetSurfaceBlendMode(graphics.towerbuffer, SDL_BLENDMODE_NONE); graphics.tempBuffer = SDL_CreateRGBSurface(SDL_SWSURFACE ,320 ,240 ,fmt->BitsPerPixel,fmt->Rmask,fmt->Gmask,fmt->Bmask,fmt->Amask ); SDL_SetSurfaceBlendMode(graphics.tempBuffer, SDL_BLENDMODE_NONE);