Browse Source

🐛 Correct sinage on level load/save

pull/1315/head
Anders Jenbo 5 years ago
parent
commit
c221cdfeb1
  1. 62
      Source/loadsave.cpp

62
Source/loadsave.cpp

@ -1839,60 +1839,60 @@ void SaveLevel()
if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dDead[i][j]);
file.writeLE<Sint8>(dDead[i][j]);
}
}
file.writeBE<Uint32>(nummonsters);
file.writeBE<Uint32>(numitems);
file.writeBE<Uint32>(nobjects);
file.writeBE<Sint32>(nummonsters);
file.writeBE<Sint32>(numitems);
file.writeBE<Sint32>(nobjects);
if (leveltype != DTYPE_TOWN) {
for (int i = 0; i < MAXMONSTERS; i++)
file.writeBE<Uint32>(monstactive[i]);
file.writeBE<Sint32>(monstactive[i]);
for (int i = 0; i < nummonsters; i++)
SaveMonster(&file, monstactive[i]);
for (int i = 0; i < MAXOBJECTS; i++)
file.writeLE<Uint8>(objectactive[i]);
file.writeLE<Sint8>(objectactive[i]);
for (int i = 0; i < MAXOBJECTS; i++)
file.writeLE<Uint8>(objectavail[i]);
file.writeLE<Sint8>(objectavail[i]);
for (int i = 0; i < nobjects; i++)
SaveObject(&file, objectactive[i]);
}
for (int i = 0; i < MAXITEMS; i++)
file.writeLE<Uint8>(itemactive[i]);
file.writeLE<Sint8>(itemactive[i]);
for (int i = 0; i < MAXITEMS; i++)
file.writeLE<Uint8>(itemavail[i]);
file.writeLE<Sint8>(itemavail[i]);
for (int i = 0; i < numitems; i++)
SaveItem(&file, &item[itemactive[i]]);
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dFlags[i][j] & ~(BFLAG_MISSILE | BFLAG_VISIBLE | BFLAG_DEAD_PLAYER));
file.writeLE<Sint8>(dFlags[i][j] & ~(BFLAG_MISSILE | BFLAG_VISIBLE | BFLAG_DEAD_PLAYER));
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dItem[i][j]);
file.writeLE<Sint8>(dItem[i][j]);
}
if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeBE<Uint32>(dMonster[i][j]);
file.writeBE<Sint32>(dMonster[i][j]);
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dObject[i][j]);
file.writeLE<Sint8>(dObject[i][j]);
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dLight[i][j]);
file.writeLE<Sint8>(dLight[i][j]);
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dPreLight[i][j]);
file.writeLE<Sint8>(dPreLight[i][j]);
}
for (int j = 0; j < DMAXY; j++) {
for (int i = 0; i < DMAXX; i++)
@ -1900,7 +1900,7 @@ void SaveLevel()
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
file.writeLE<Uint8>(dMissile[i][j]);
file.writeLE<Sint8>(dMissile[i][j]);
}
}
@ -1921,24 +1921,24 @@ void LoadLevel()
if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dDead[i][j] = file.nextLE<Uint8>();
dDead[i][j] = file.nextLE<Sint8>();
}
SetDead();
}
nummonsters = file.nextBE<Uint32>();
numitems = file.nextBE<Uint32>();
nobjects = file.nextBE<Uint32>();
nummonsters = file.nextBE<Sint32>();
numitems = file.nextBE<Sint32>();
nobjects = file.nextBE<Sint32>();
if (leveltype != DTYPE_TOWN) {
for (int i = 0; i < MAXMONSTERS; i++)
monstactive[i] = file.nextBE<Uint32>();
monstactive[i] = file.nextBE<Sint32>();
for (int i = 0; i < nummonsters; i++)
LoadMonster(&file, monstactive[i]);
for (int i = 0; i < MAXOBJECTS; i++)
objectactive[i] = file.nextLE<Uint8>();
objectactive[i] = file.nextLE<Sint8>();
for (int i = 0; i < MAXOBJECTS; i++)
objectavail[i] = file.nextLE<Uint8>();
objectavail[i] = file.nextLE<Sint8>();
for (int i = 0; i < nobjects; i++)
LoadObject(&file, objectactive[i]);
if (!gbSkipSync) {
@ -1948,37 +1948,37 @@ void LoadLevel()
}
for (int i = 0; i < MAXITEMS; i++)
itemactive[i] = file.nextLE<Uint8>();
itemactive[i] = file.nextLE<Sint8>();
for (int i = 0; i < MAXITEMS; i++)
itemavail[i] = file.nextLE<Uint8>();
itemavail[i] = file.nextLE<Sint8>();
for (int i = 0; i < numitems; i++)
LoadItem(&file, itemactive[i]);
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dFlags[i][j] = file.nextLE<Uint8>();
dFlags[i][j] = file.nextLE<Sint8>();
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dItem[i][j] = file.nextLE<Uint8>();
dItem[i][j] = file.nextLE<Sint8>();
}
if (leveltype != DTYPE_TOWN) {
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dMonster[i][j] = file.nextBE<Uint32>();
dMonster[i][j] = file.nextBE<Sint32>();
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dObject[i][j] = file.nextLE<Uint8>();
dObject[i][j] = file.nextLE<Sint8>();
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dLight[i][j] = file.nextLE<Uint8>();
dLight[i][j] = file.nextLE<Sint8>();
}
for (int j = 0; j < MAXDUNY; j++) {
for (int i = 0; i < MAXDUNX; i++)
dPreLight[i][j] = file.nextLE<Uint8>();
dPreLight[i][j] = file.nextLE<Sint8>();
}
for (int j = 0; j < DMAXY; j++) {
for (int i = 0; i < DMAXX; i++)

Loading…
Cancel
Save