Change: prefix SL_ARR with the length of the array
This means that during loading we can validate that what is saved is also that what is expected. Additionally, this makes all list types similar to how they are stored on disk: First a gamma to indicate length, followed by the data. The size still depends on the type.
This commit is contained in:
committed by
Patric Stout
parent
f67af5cbe5
commit
97b94bdc9a
@@ -24,7 +24,7 @@ extern std::vector<TileIndex> _animated_tiles;
|
||||
static void Save_ANIT()
|
||||
{
|
||||
SlSetLength(_animated_tiles.size() * sizeof(_animated_tiles.front()));
|
||||
SlArray(_animated_tiles.data(), _animated_tiles.size(), SLE_UINT32);
|
||||
SlCopy(_animated_tiles.data(), _animated_tiles.size(), SLE_UINT32);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -36,7 +36,7 @@ static void Load_ANIT()
|
||||
if (IsSavegameVersionBefore(SLV_80)) {
|
||||
/* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */
|
||||
TileIndex anim_list[256];
|
||||
SlArray(anim_list, 256, IsSavegameVersionBefore(SLV_6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32);
|
||||
SlCopy(anim_list, 256, IsSavegameVersionBefore(SLV_6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32);
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
if (anim_list[i] == 0) break;
|
||||
@@ -48,7 +48,7 @@ static void Load_ANIT()
|
||||
uint count = (uint)SlGetFieldLength() / sizeof(_animated_tiles.front());
|
||||
_animated_tiles.clear();
|
||||
_animated_tiles.resize(_animated_tiles.size() + count);
|
||||
SlArray(_animated_tiles.data(), count, SLE_UINT32);
|
||||
SlCopy(_animated_tiles.data(), count, SLE_UINT32);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user