diff options
author | frosch <frosch@openttd.org> | 2013-12-23 18:08:36 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2013-12-23 18:08:36 +0000 |
commit | a9e8d7a361470b7c97a858f6663144f02a929cfd (patch) | |
tree | 1a68f30dd504e10d100d4835ae2365751d8d23a1 /src | |
parent | 3eea1befa73099c6af00ea56c55087592b99039a (diff) | |
download | openttd-a9e8d7a361470b7c97a858f6663144f02a929cfd.tar.xz |
(svn r26173) -Change: [NewGRF] Reset the temporary storage registers for every sprite resolving.
Diffstat (limited to 'src')
-rw-r--r-- | src/newgrf_spritegroup.cpp | 3 | ||||
-rw-r--r-- | src/newgrf_storage.h | 12 |
2 files changed, 5 insertions, 10 deletions
diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 451cd59be..b3a0a829f 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -33,6 +33,9 @@ TemporaryStorageArray<int32, 0x110> _temp_store; /* static */ const SpriteGroup *SpriteGroup::Resolve(const SpriteGroup *group, ResolverObject &object, bool top_level) { if (group == NULL) return NULL; + if (top_level) { + _temp_store.ClearChanges(); + } return group->Resolve(object); } diff --git a/src/newgrf_storage.h b/src/newgrf_storage.h index a353e2186..9e71c0a2b 100644 --- a/src/newgrf_storage.h +++ b/src/newgrf_storage.h @@ -29,13 +29,6 @@ struct BaseStorageArray { * @param keep_changes do we save or revert the changes since the last #ClearChanges? */ virtual void ClearChanges(bool keep_changes) = 0; - - /** - * Stores some value at a given position. - * @param pos the position to write at - * @param value the value to write - */ - virtual void StoreValue(uint pos, int32 value) = 0; }; /** @@ -133,7 +126,7 @@ struct PersistentStorageArray : BaseStorageArray { * @tparam SIZE the size of the array. */ template <typename TYPE, uint SIZE> -struct TemporaryStorageArray : BaseStorageArray { +struct TemporaryStorageArray { TYPE storage[SIZE]; ///< Memory to for the storage array uint16 init[SIZE]; ///< Storage has been assigned, if this equals 'init_key'. uint16 init_key; ///< Magic key to 'init'. @@ -158,7 +151,6 @@ struct TemporaryStorageArray : BaseStorageArray { this->storage[pos] = value; this->init[pos] = this->init_key; - AddChangedStorage(this); } /** @@ -179,7 +171,7 @@ struct TemporaryStorageArray : BaseStorageArray { return this->storage[pos]; } - void ClearChanges(bool keep_changes) + void ClearChanges() { /* Increment init_key to invalidate all storage */ this->init_key++; |