diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index b63e67c1..17fc6c20 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -84,6 +84,7 @@ void Graphics::init() crewframe = 0; crewframedelay = 4; menuoffset = 0; + oldmenuoffset = 0; resumegamemode = false; //Fading stuff @@ -2609,6 +2610,7 @@ void Graphics::menuoffrender() + int usethisoffset = lerp(oldmenuoffset, menuoffset); if(flipmode) { // flipmatrix.translate(0, menuoffset); @@ -2620,7 +2622,7 @@ void Graphics::menuoffrender() BlitSurfaceStandard(tempbufferFlipped, NULL, backBuffer, NULL); SDL_FreeSurface(tempbufferFlipped); SDL_Rect offsetRect; - setRect (offsetRect, 0, menuoffset, backBuffer->w ,backBuffer->h); + setRect (offsetRect, 0, usethisoffset, backBuffer->w ,backBuffer->h); SDL_Surface* temp = FlipSurfaceVerticle(menubuffer); BlitSurfaceStandard(temp,NULL,backBuffer,&offsetRect); SDL_FreeSurface(temp); @@ -2631,7 +2633,7 @@ void Graphics::menuoffrender() BlitSurfaceStandard(tempBuffer, NULL, backBuffer, NULL); SDL_Rect offsetRect; - setRect (offsetRect, 0, menuoffset, backBuffer->w ,backBuffer->h); + setRect (offsetRect, 0, usethisoffset, backBuffer->w ,backBuffer->h); BlitSurfaceStandard(menubuffer,NULL,backBuffer,&offsetRect); } diff --git a/desktop_version/src/Graphics.h b/desktop_version/src/Graphics.h index 9ac181ea..c21a18af 100644 --- a/desktop_version/src/Graphics.h +++ b/desktop_version/src/Graphics.h @@ -255,6 +255,7 @@ public: bool backgrounddrawn, foregrounddrawn; int menuoffset; + int oldmenuoffset; bool resumegamemode; SDL_Rect warprect; diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index dd4f707b..ac803740 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -1625,7 +1625,12 @@ void gameinput() //Alright, normal teleporting game.gamestate = TELEPORTERMODE; graphics.menuoffset = 240; //actually this should count the roomname - if (map.extrarow) graphics.menuoffset -= 10; + graphics.oldmenuoffset = 240; + if (map.extrarow) + { + graphics.menuoffset -= 10; + graphics.oldmenuoffset -= 10; + } BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); @@ -1681,7 +1686,12 @@ void gameinput() game.menupage = 20; // The Map Page BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); graphics.menuoffset = 240; //actually this should count the roomname - if (map.extrarow) graphics.menuoffset -= 10; + graphics.oldmenuoffset = 240; + if (map.extrarow) + { + graphics.menuoffset -= 10; + graphics.oldmenuoffset -= 10; + } } else if (game.intimetrial && graphics.fademode==0) { @@ -1705,7 +1715,12 @@ void gameinput() game.menupage = 0; // The Map Page BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); graphics.menuoffset = 240; //actually this should count the roomname - if (map.extrarow) graphics.menuoffset -= 10; + graphics.oldmenuoffset = 240; + if (map.extrarow) + { + graphics.menuoffset -= 10; + graphics.oldmenuoffset -= 10; + } } } @@ -1720,7 +1735,12 @@ void gameinput() BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); graphics.menuoffset = 240; //actually this should count the roomname - if (map.extrarow) graphics.menuoffset -= 10; + graphics.oldmenuoffset = 240; + if (map.extrarow) + { + graphics.menuoffset -= 10; + graphics.oldmenuoffset -= 10; + } } if (key.keymap[SDLK_r] && game.deathseq<=0)// && map.custommode) //Have fun glitchrunners! diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index f9bb5cc0..5f32c6ea 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -40,6 +40,7 @@ void maplogic() help.updateglow(); graphics.updatetextboxes(); + graphics.oldmenuoffset = graphics.menuoffset; if (graphics.resumegamemode) { graphics.menuoffset += 25; diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index 492d0098..f15aeb52 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -1277,7 +1277,12 @@ void scriptclass::run() //TODO this draw the teleporter screen. This is a problem. :( game.gamestate = TELEPORTERMODE; graphics.menuoffset = 240; //actually this should count the roomname - if (map.extrarow) graphics.menuoffset -= 10; + graphics.oldmenuoffset = 240; + if (map.extrarow) + { + graphics.menuoffset -= 10; + graphics.oldmenuoffset -= 10; + } graphics.resumegamemode = false;