summaryrefslogtreecommitdiff
path: root/src/newgrf_spritegroup.cpp
diff options
context:
space:
mode:
authorPeter Nelson <peter1138@openttd.org>2021-05-02 00:00:06 +0100
committerPeterN <peter@fuzzle.org>2021-05-02 09:41:01 +0100
commit1aeaf399541c229973b576f2f2423fa8c4b49f65 (patch)
tree489af8206117a928b5e4efb113bacc844fe44778 /src/newgrf_spritegroup.cpp
parentf785a70a2bc08eaefcb1e2a43b8e6d36a154a00e (diff)
downloadopenttd-1aeaf399541c229973b576f2f2423fa8c4b49f65.tar.xz
Cleanup: Use std::vector in DeterministicSpriteGroup.
Diffstat (limited to 'src/newgrf_spritegroup.cpp')
-rw-r--r--src/newgrf_spritegroup.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp
index fb0d65c31..058baf334 100644
--- a/src/newgrf_spritegroup.cpp
+++ b/src/newgrf_spritegroup.cpp
@@ -53,12 +53,6 @@ TemporaryStorageArray<int32, 0x110> _temp_store;
}
}
-DeterministicSpriteGroup::~DeterministicSpriteGroup()
-{
- free(this->adjusts);
- free(this->ranges);
-}
-
RandomizedSpriteGroup::~RandomizedSpriteGroup()
{
free(this->groups);
@@ -205,8 +199,8 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
ScopeResolver *scope = object.GetScope(this->var_scope);
- for (i = 0; i < this->num_adjusts; i++) {
- DeterministicSpriteGroupAdjust *adjust = &this->adjusts[i];
+ for (i = 0; i < this->adjusts.size(); i++) {
+ const DeterministicSpriteGroupAdjust *adjust = &this->adjusts[i];
/* Try to get the variable. We shall assume it is available, unless told otherwise. */
bool available = true;
@@ -250,16 +244,16 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con
return &nvarzero;
}
- if (this->num_ranges > 4) {
- DeterministicSpriteGroupRange *lower = std::lower_bound(this->ranges + 0, this->ranges + this->num_ranges, value, RangeHighComparator);
- if (lower != this->ranges + this->num_ranges && lower->low <= value) {
+ if (this->ranges.size() > 4) {
+ const auto &lower = std::lower_bound(this->ranges.begin(), this->ranges.end(), value, RangeHighComparator);
+ if (lower != this->ranges.end() && lower->low <= value) {
assert(lower->low <= value && value <= lower->high);
return SpriteGroup::Resolve(lower->group, object, false);
}
} else {
- for (i = 0; i < this->num_ranges; i++) {
- if (this->ranges[i].low <= value && value <= this->ranges[i].high) {
- return SpriteGroup::Resolve(this->ranges[i].group, object, false);
+ for (const auto &range : this->ranges) {
+ if (range.low <= value && value <= range.high) {
+ return SpriteGroup::Resolve(range.group, object, false);
}
}
}