1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-22 09:39:43 +01:00

Merge pull request #127 from InfoTeddy/general-bug-fixes

Don't re-draw horizontal and vertical warp backgrounds if gotoroom()ing to the same room in custom levels
This commit is contained in:
Terry Cavanagh 2020-01-28 19:16:33 +01:00 committed by GitHub
commit 5afba66d2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 2 deletions

View file

@ -121,6 +121,7 @@ public:
int door_up;
int door_down;
int roomx, roomy, roomchangedir;
int prevroomx, prevroomy;
int temp, j, k;
int savex, savey, saverx, savery;

View file

@ -1059,9 +1059,18 @@ void mapclass::gotoroom(int rx, int ry, Graphics& dwgfx, Game& game, entityclass
loadlevel(game.roomx, game.roomy, dwgfx, game, obj, music);
dwgfx.backgrounddrawn = false; //Used for background caching speedup
//Do we need to reload the background?
bool redrawbg = game.roomx != game.prevroomx || game.roomy != game.prevroomy;
if(redrawbg)
{
dwgfx.backgrounddrawn = false; //Used for background caching speedup
}
dwgfx.foregrounddrawn = false; //Used for background caching speedup
game.prevroomx = game.roomx;
game.prevroomy = game.roomy;
//a very special case: if entering the communication room, room 13,4 before tag 5 is set, set the game state to a background
//textbox thingy. if tag five is not set when changing room, reset the game state. (tag 5 is set when you get back to the ship)
if(!game.intimetrial && !custommode)
@ -1605,7 +1614,10 @@ void mapclass::loadlevel(int rx, int ry, Graphics& dwgfx, Game& game, entityclas
}
//If screen warping, then override all that:
dwgfx.backgrounddrawn = false;
bool redrawbg = game.roomx != game.prevroomx || game.roomy != game.prevroomy;
if(redrawbg){
dwgfx.backgrounddrawn = false;
}
if(ed.level[curlevel].warpdir>0){
if(ed.level[curlevel].warpdir==1){
warpx=true;

View file

@ -3427,6 +3427,8 @@ void scriptclass::hardreset( KeyPoll& key, Graphics& dwgfx, Game& game,mapclass&
game.roomchange = false;
game.roomx = 0;
game.roomy = 0;
game.prevroomx = 0;
game.prevroomy = 0;
game.teleport_to_new_area = false;
game.teleport_to_x = 0;
game.teleport_to_y = 0;