mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: Use range-for when loading NewGRF deterministic sprite groups. (#12605)
This commit is contained in:
parent
532ce1a907
commit
7147fe9e7a
|
@ -5279,10 +5279,10 @@ static void NewSpriteGroup(ByteReader *buf)
|
|||
|
||||
std::vector<DeterministicSpriteGroupRange> ranges;
|
||||
ranges.resize(buf->ReadByte());
|
||||
for (uint i = 0; i < ranges.size(); i++) {
|
||||
ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord());
|
||||
ranges[i].low = buf->ReadVarSize(varsize);
|
||||
ranges[i].high = buf->ReadVarSize(varsize);
|
||||
for (auto &range : ranges) {
|
||||
range.group = GetGroupFromGroupID(setid, type, buf->ReadWord());
|
||||
range.low = buf->ReadVarSize(varsize);
|
||||
range.high = buf->ReadVarSize(varsize);
|
||||
}
|
||||
|
||||
group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord());
|
||||
|
@ -5292,20 +5292,19 @@ static void NewSpriteGroup(ByteReader *buf)
|
|||
|
||||
/* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */
|
||||
std::vector<uint32_t> bounds;
|
||||
for (uint i = 0; i < ranges.size(); i++) {
|
||||
bounds.push_back(ranges[i].low);
|
||||
if (ranges[i].high != UINT32_MAX) bounds.push_back(ranges[i].high + 1);
|
||||
for (const auto &range : ranges) {
|
||||
bounds.push_back(range.low);
|
||||
if (range.high != UINT32_MAX) bounds.push_back(range.high + 1);
|
||||
}
|
||||
std::sort(bounds.begin(), bounds.end());
|
||||
bounds.erase(std::unique(bounds.begin(), bounds.end()), bounds.end());
|
||||
|
||||
std::vector<const SpriteGroup *> target;
|
||||
for (uint j = 0; j < bounds.size(); ++j) {
|
||||
uint32_t v = bounds[j];
|
||||
for (const auto &bound : bounds) {
|
||||
const SpriteGroup *t = group->default_group;
|
||||
for (uint i = 0; i < ranges.size(); i++) {
|
||||
if (ranges[i].low <= v && v <= ranges[i].high) {
|
||||
t = ranges[i].group;
|
||||
for (const auto &range : ranges) {
|
||||
if (range.low <= bound && bound <= range.high) {
|
||||
t = range.group;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue