1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-18 10:38:31 +02:00

Reset warp directions when exiting playtesting

This fixes a bug where if warpdir() was used during in-editor
playtesting, the changed warp direction would persist even when leaving
playtesting.

This would be very annoying to correct back every time you playtested
and warpdir() was used, so I've added some kludge to store the actual
warp direction of each room when entering playtesting, and then set the
warp directions back when leaving playtesting.
This commit is contained in:
Info Teddy 2020-01-30 19:06:16 -08:00 committed by Ethan Lee
parent 98151b4c2f
commit 4be6d58b82
4 changed files with 18 additions and 0 deletions

View File

@ -1913,6 +1913,14 @@ void gameinput(KeyPoll& key, Graphics& dwgfx, Game& game, mapclass& map,
dwgfx.backgrounddrawn=false;
music.fadeout();
//If warpdir() is used during playtesting, we need to set it back after!
for (int j = 0; j < ed.maxheight; j++)
{
for (int i = 0; i < ed.maxwidth; i++)
{
ed.level[i+(j*ed.maxwidth)].warpdir=ed.kludgewarpdir[i+(j*ed.maxwidth)];
}
}
}
}
}

View File

@ -3181,6 +3181,14 @@ void scriptclass::startgamemode( int t, KeyPoll& key, Graphics& dwgfx, Game& gam
game.gamestate = GAMEMODE;
music.fadeout();
hardreset(key, dwgfx, game, map, obj, help, music);
//If warpdir() is used during playtesting, we need to set it back after!
for (int j = 0; j < ed.maxheight; j++)
{
for (int i = 0; i < ed.maxwidth; i++)
{
ed.kludgewarpdir[i+(j*ed.maxwidth)]=ed.level[i+(j*ed.maxwidth)].warpdir;
}
}
game.customstart(obj, music);
game.jumpheld = true;

View File

@ -309,6 +309,7 @@ void editorclass::reset()
level[i+(j*maxwidth)].enemyy2=240;
level[i+(j*maxwidth)].enemytype=0;
level[i+(j*maxwidth)].directmode=0;
kludgewarpdir[i+(j*maxwidth)]=0;
}
}

View File

@ -158,6 +158,7 @@ class editorclass{
int numtrinkets;
int numcrewmates;
edlevelclass level[400]; //Maxwidth*maxheight
int kludgewarpdir[400]; //Also maxwidth*maxheight
int temp;
int notedelay;