Browse Source

Do not manipulate lights when saving and also correct save state

pull/6006/head
Anders Jenbo 3 years ago
parent
commit
a1df95d580
  1. 46
      Source/loadsave.cpp

46
Source/loadsave.cpp

@ -1545,7 +1545,30 @@ void SaveObject(SaveHelper &file, const Object &object)
file.WriteLE<uint32_t>(object._oDoorFlag ? 1 : 0);
file.WriteLE<int32_t>(object._olid);
file.WriteLE<uint32_t>(object._oRndSeed);
file.WriteLE<int32_t>(object._oVar1);
/* Make dynamic light sources unseen when saving level data for level change */
int32_t var1 = object._oVar1;
switch (object._otype) {
case OBJ_L1LIGHT:
case OBJ_SKFIRE:
case OBJ_CANDLE1:
case OBJ_CANDLE2:
case OBJ_BOOKCANDLE:
case OBJ_STORYCANDLE:
case OBJ_L5CANDLE:
case OBJ_TORCHL:
case OBJ_TORCHR:
case OBJ_TORCHL2:
case OBJ_TORCHR2:
case OBJ_BCROSS:
case OBJ_TBCROSS:
if (var1 != -1)
var1 = 0;
break;
default:
break;
}
file.WriteLE<int32_t>(var1);
file.WriteLE<int32_t>(object._oVar2);
file.WriteLE<int32_t>(object._oVar3);
file.WriteLE<int32_t>(object._oVar4);
@ -2506,26 +2529,7 @@ void SaveLevel(SaveWriter &saveWriter)
for (int objectId : AvailableObjects)
file.WriteLE<int8_t>(objectId);
for (int i = 0; i < ActiveObjectCount; i++) {
/* make dynamic light sources unseen when saving level data for level change */
Object &object = Objects[ActiveObjects[i]];
switch (object._otype) {
case OBJ_L1LIGHT:
case OBJ_SKFIRE:
case OBJ_CANDLE1:
case OBJ_CANDLE2:
case OBJ_BOOKCANDLE:
case OBJ_STORYCANDLE:
case OBJ_TORCHL:
case OBJ_TORCHR:
case OBJ_TORCHL2:
case OBJ_TORCHR2:
case OBJ_BCROSS:
case OBJ_TBCROSS:
if (object._oVar1 != -1)
object._oVar1 = 0;
break;
}
SaveObject(file, object);
SaveObject(file, Objects[ActiveObjects[i]]);
}
}

Loading…
Cancel
Save