Fix #14891, a8650c6b06: Minimum sprite zoomlevel could break in some cases. (#14894)

Caused by sprite control flags not being reset when scanning available sprites.
This commit is contained in:
Peter Nelson
2025-12-10 08:17:24 +00:00
committed by dP
parent 9c09394a3c
commit c8a4815f9c

View File

@@ -534,7 +534,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty
} }
struct GrfSpriteOffset { struct GrfSpriteOffset {
size_t file_pos; size_t file_pos = 0;
SpriteCacheCtrlFlags control_flags{}; SpriteCacheCtrlFlags control_flags{};
}; };
@@ -565,7 +565,7 @@ void ReadGRFSpriteOffsets(SpriteFile &file)
size_t old_pos = file.GetPos(); size_t old_pos = file.GetPos();
file.SeekTo(data_offset, SEEK_CUR); file.SeekTo(data_offset, SEEK_CUR);
GrfSpriteOffset offset{0}; GrfSpriteOffset offset{};
/* Loop over all sprite section entries and store the file /* Loop over all sprite section entries and store the file
* offset for each newly encountered ID. */ * offset for each newly encountered ID. */
@@ -574,6 +574,7 @@ void ReadGRFSpriteOffsets(SpriteFile &file)
if (id != prev_id) { if (id != prev_id) {
_grf_sprite_offsets[prev_id] = offset; _grf_sprite_offsets[prev_id] = offset;
offset.file_pos = file.GetPos() - 4; offset.file_pos = file.GetPos() - 4;
offset.control_flags.Reset();
} }
prev_id = id; prev_id = id;
uint length = file.ReadDword(); uint length = file.ReadDword();